Axis1框架客户端调用服务端方式

Axis1框架出来也很久了,很多公司的老项目也是使用的该框架实现WebService的调用,对于新入行的小伙伴来说有很大机率会维护以前的老项目,所以这里也给大家介绍下怎么使用Axis1框架调用服务端.

调用方式有两种,一种是通过WSDL文件生客户端调用代码,通过生成的代码来调用,此种方式比较直观,就象本地调用接口方法一样,但比较麻烦点的就是需要先生成客户端代码,执行一个编译命令,如下:

java -Djava.ext.dirs=E:\axis-1_2_1\lib(axis的jar包所在目录)  org.apache.axis.wsdl.WSDL2Java  -p test.wsdl(指定代码路径)  E:\axis-1_2_1\Test\CSSFaultService.wsdl(本地WSDL文件)

通过上面的命令会在指定目录下生成相应的客户端代码,主要看生成的代码中后面为(Soap_BindingStub和ServiceLocator)的类,然后通过客户端代码即可调用对方WebService服务端

//在根据WSDL文件生成的类中有 带有LOCATOR和BINDINGSTUB的两个类,实现这两个类按如下方式调用即可
FSMInterfaceServerServiceLocator serverServiceLocator=new FSMInterfaceServerServiceLocator();
 serverServiceLocator.setEOMSProcessServiceEndpointAddress("http://10.120.136.232:8080/fsm/services/EOMSProcessService");
EOMSProcessServiceSoapBindingStub  serviceSoapBindingStub=(EOMSProcessServiceSoapBindingStub)
serverServiceLocator.getEOMSProcessService();
serviceSoapBindingStub.setTimeout(60000);
String testStr=serviceSoapBindingStub.isAlive();
System.out.print("调用EOMS接口返回===="+testStr);

另一种方法就是使用Axis1框架自带的API接口调用,主要注意wsdlUrl,nameSpaceUri,目标方法几个参数即可,如下:

                ------另一种调用方式
                String serSupplier = "FSM";
                String serCaller = "HEMEOMS";
                String callerPwd = "Hem_eoms8089";
                Service service = new Service();
                Call call = (Call) service.createCall();
                call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));
                call.setOperationName(new QName(nameSpaceUri,"queryUserMehtod"));
                call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING);
                call.addParameter("serSupplier",  org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
                call.addParameter("serCaller",  org.apache.axis.encoding.XMLType.SOAP_STRING, javax.xml.rpc.ParameterMode.IN);
                call.addParameter("callerPwd",  org.apache.axis.encoding.XMLType.SOAP_STRING, javax.xml.rpc.ParameterMode.IN);
                call.addParameter("callTime",  org.apache.axis.encoding.XMLType.SOAP_STRING, javax.xml.rpc.ParameterMode.IN);
                call.addParameter("opDetail",  org.apache.axis.encoding.XMLType.SOAP_STRING, javax.xml.rpc.ParameterMode.IN);
                call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING);
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
                String  result = (String)call.invoke(new Object[]{serSupplier,  serCaller, callerPwd, sdf.format(new Date()),opDetail});
                response.getWriter().print("返回的值===="+result);

你可能感兴趣的:(java,开发语言)