webservice RPC客戶端
class 1
import javax.xml.namespace.QName; import org.apache.axiom.om.OMElement; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.rpc.client.RPCServiceClient; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger;
public class Axis2Connector { private static final Logger logger = Logger.getLogger(Axis2Connector.class); private static RPCServiceClient client; private static String wsUrl; public static synchronized RPCServiceClient getClient(String wsdl) { try { if (StringUtils.isNotBlank(wsdl)) { if (!wsdl.equals(wsUrl)) { wsUrl = wsdl; client = new RPCServiceClient(); EndpointReference reference = new EndpointReference(wsdl); Options options = client.getOptions(); options.setTo(reference); } } else { client = null; } } catch (Exception e) { client = null; logger.error("init axis2 client [" + wsdl + "] failed!!!!", e); } return client; } public static synchronized String excute(String wsdl, String namespace, String operationName, Object[] params) { String resp = ""; try { RPCServiceClient rpcClient = getClient(wsdl); QName qName = new QName(namespace, operationName); OMElement element = rpcClient.invokeBlocking(qName, params); resp = element.getFirstElement().getText(); } catch (Exception e) { logger.error("invoke axis2 interface method [" + operationName + "] failed!!!!", e); } return resp; } }
class 2
public class Test implements Runnable{ public static void main(String[] args) { for(int i=0;i<10;i++){ new Thread(new Test()).start(); } }
@Override public void run() { // TODO Auto-generated method stub String wsdl="http://localhost:8081/TrafficWFGC/services/Water.WaterHttpSoap12Endpoint/"; String namespace="http://imp.service"; String operationName="uploadWaterData"; String []params={"2","0d721bba448c40d385eaa4d8ddf6658a"}; while(true){ Axis2Connector.excute(wsdl, namespace, operationName, params); } } }