webservice公共呼叫 客戶端介面工具類 cfx axis2
阿新 • • 發佈:2019-01-03
package com.senyint.util;
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import org.apache.axiom.om.OMElement;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache .axis.encoding.XMLType;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
/**
*
* @ClassName: CallWebServiceUtils
* @Description: webservice公共呼叫 客戶端介面工具類
* @author [email protected]
* @date 2017年3月22日 下午11:12:27
* @version V1.0
*/
public class CallWebServiceUtils {
public static Object[] callWebServiceCxf(String url, String nameSpace, String methodName, Object... args)
throws Exception {
// 這個是用cxf 客戶端訪問cxf部署的webservice服務
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance ();
Client client = dcf.createClient(url);
// url為呼叫webService的wsdl地址
QName name = new QName(nameSpace, methodName);
// namespace是名稱空間,methodName是方法名
// args為引數值
Object[] object = client.invoke(name, args);
return object;
}
public static Object callWebServiceAxis(String url, String nameSpace, String methodName, String paramName,
Object[] args) {
Call call;
try {
call = (Call) new Service().createCall();
call.setTargetEndpointAddress(url);
QName qName = new QName(nameSpace, methodName);
call.setOperationName(qName);
// call.setOperation("sayHello");// 呼叫的方法名
// 設定引數名:
call.addParameter(paramName, // 引數名
XMLType.XSD_STRING, // 引數型別:String
ParameterMode.IN);// 引數模式:'IN' or 'OUT'
// 設定返回值型別:
call.setReturnType(XMLType.XSD_STRING);// 返回值型別:String
return call.invoke(args);// 遠端呼叫
} catch (ServiceException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
return null;
}
public static String callWebServiceAxis2(String url, String nameSpace, String methodName, Object[] args)
throws Exception {
// 使用RPC方式呼叫WebService
RPCServiceClient serviceClient = new RPCServiceClient();
// 指定呼叫WebService的URL
EndpointReference targetEPR = new EndpointReference(url);
Options options = serviceClient.getOptions();
// 確定目標服務地址
options.setTo(targetEPR);
// 確定呼叫方法
// options.setAction("sayHello");
QName qname = new QName(nameSpace, methodName);
OMElement element = serviceClient.invokeBlocking(qname, args);
// 返回結果就是一段由OMElement物件封裝的xml字串。
String result = element.getFirstElement().getText();
return result;
}
}
org.apache.cxf
cxf-rt-frontend-jaxws
3.1.6
org.apache.cxf
cxf-rt-transports-http
3.1.6
maven
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>javax.xml.rpc</groupId>
<artifactId>javax.xml.rpc-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.5</version>
</dependency>
<!-- cxf end -->
<!-- axis2 -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.ws.commons.axiom</groupId>
<artifactId>axiom-api</artifactId>
<version>1.2.13</version>
</dependency>
<dependency>
<groupId>org.apache.ws.commons.axiom</groupId>
<artifactId>axiom-impl</artifactId>
<version>1.2.13</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-local</artifactId>
<version>1.7.4</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-http</artifactId>
<version>1.7.4</version>
</dependency>
<!-- axis2 end -->