Axis1服务器端调用指南
在现代软件开发中,WebServices仍然扮演着重要角色,对于许多公司来说,旧项目中广泛使用了Axis1框架来实现WebService的调用,了解如何在Axis1框架下进行服务器端调用是非常重要的,本文将详细介绍如何使用Axis1框架在服务器端进行调用,包括两种主要的方法:通过WSDL文件生成客户端代码和使用Axis1框架自带的API接口调用。
一、通过WSDL文件生成客户端代码
这种方法比较直观,类似于本地调用接口方法,具体步骤如下:
1、生成客户端代码:使用java -Djava.ext.dirs=E:\axis-1_2_1\lib org.apache.axis.wsdl.WSDL2Java -p test.wsdl E:\axis-1_2_1\Test\CSSFaultService.wsdl
命令生成客户端代码,此命令会在指定目录下生成相应的客户端代码。
2、调用生成的客户端代码:在生成的代码中,找到带有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接口调用
这种方法不需要先生成客户端代码,直接使用Axis1框架提供的API接口进行调用,具体步骤如下:
1、创建服务对象:创建一个Service
对象。
2、创建调用对象:通过服务对象创建一个Call
对象。
3、设置目标端点地址:使用call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));
设置目标端点的地址。
4、设置操作名称:使用call.setOperationName(new QName(nameSpaceUri,"queryUserMehtod"));
设置操作名称。
5、设置返回类型:使用call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING);
设置返回类型。
6、添加参数:使用call.addParameter
方法添加所需的参数。
7、执行调用:使用call.invoke
方法执行调用并获取结果。
示例代码如下:
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.XSD_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);
相关问题与解答
问:如何在Axis1框架中使用WSDL文件生成客户端代码?
答:在Axis1框架中使用WSDL文件生成客户端代码的步骤如下:
1、使用命令java -Djava.ext.dirs=E:\axis-1_2_1\lib org.apache.axis.wsdl.WSDL2Java -p test.wsdl E:\axis-1_2_1\Test\CSSFaultService.wsdl
生成客户端代码。
2、在生成的代码中找到带有LOCATOR和BINDINGSTUB的两个类。
3、使用这两个类进行WebService调用,
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接口进行服务器端调用?
答:在Axis1框架中使用自带的API接口进行服务器端调用的步骤如下:
1、创建一个Service
对象。
2、通过服务对象创建一个Call
对象。
3、使用call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));
设置目标端点的地址。
4、使用call.setOperationName(new QName(nameSpaceUri,"queryUserMehtod"));
设置操作名称。
5、使用call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING);
设置返回类型。
6、使用call.addParameter
方法添加所需的参数。
7、使用call.invoke
方法执行调用并获取结果,
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.XSD_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);
各位小伙伴们,我刚刚为大家分享了有关“axis1服务器端调用”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/648849.html