1. 程式人生 > >webservice公共呼叫 客戶端介面工具類 cfx axis2

webservice公共呼叫 客戶端介面工具類 cfx axis2

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 -->