axis2练习
来源:互联网 发布:linux杀进程 编辑:程序博客网 时间:2024/05/01 04:41
练习使用axis2,它的部署我就不说了,我的博客也写过。
今天练习使用。
服务端CallBackAction定义4个方法,如下:
package org.hd.axis2.device;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import org.hd.business.service.BusinessService;import org.hd.business.summary.model.CallSummaryVo;import org.rd.framework.common.container.ContainerManager;import com.opensymphony.xwork2.ActionContext;import org.apache.axis2.rpc.receivers.RPCMessageReceiver;import org.apache.axis2.rpc.receivers.RPCInOutAsyncMessageReceiver;import org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver;public class CallBackAction{private BusinessService businessService = (BusinessService)ContainerManager.getComponent(BusinessService.BEAN_ID);public String updateCallInfo(String callid,String billNumber){String resultMessage="";CallSummaryVo call=new CallSummaryVo();if(callid==null||callid.trim().equals("")){resultMessage="未获取到参数通话callid,操作失败!";}else if(billNumber==null||billNumber.trim().equals("")){resultMessage="未获取到参数工单号billNumber,操作失败!";}else{call.setVoiceid(callid);call.setBill_number(billNumber);businessService.updateSummaryByWebservice(call);//这个方法就是更新数据库的2个字段resultMessage="收到信息:callid="+callid+",billNumber="+billNumber+"。根据参数已经完成更新数据库数据。";}System.out.println("调用webservice的返回结果信息:\r\n"+resultMessage);return resultMessage;}public String queryCallInfo(String comeUserjobNumber){String resultMessage="";if(comeUserjobNumber==null||comeUserjobNumber.trim().equals("")){resultMessage="未获取到参数comeUserjobNumber,操作失败!";}else{String userInfo=businessService.getAgentNameFromHdUser(comeUserjobNumber);//这个方法就是从数据库查询一个字段resultMessage="收到参数信息comeUserjobNumber="+comeUserjobNumber+"。根据此参数查询到的信息是:"+userInfo;}System.out.println("调用webservice的返回结果信息:\r\n"+resultMessage);return resultMessage;}//没有参数的方法public String getUserNameFromSession(){ActionContext ctx = ActionContext.getContext();HttpSession session=((HttpServletRequest) (ActionContext.getContext()).get(ServletActionContext.HTTP_REQUEST)).getSession();String resultMessage="";if(session.getAttribute("current_user_id")!=null){resultMessage="获取到当前登录用户的账号:"+(String)session.getAttribute("current_user_id");}else{resultMessage="当前登录用户的账号为null";}System.out.println("调用webservice的返回结果信息:\r\n"+resultMessage);return resultMessage;}//没有返回值得方法public void writeLog(String info){String resultMessage="";if(info==null||info.trim().equals("")){resultMessage="未获取到参数info,操作失败!";}else{resultMessage="收到参数信息info="+info;}System.out.println("调用webservice的返回结果信息:\r\n"+resultMessage);}}
在services.xml中注册webservice:在services.xml中注册webservice:
<service name="callInfoService"> <description> This service is about deal with call info </description> <parameter name="ServiceClass">org.hd.axis2.device.CallBackAction</parameter> <operation name="updateCallInfo"> <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> </operation> <operation name="queryCallInfo"> <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> </operation><operation name="getUserNameFromSession"> <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> </operation><operation name="writeLog"> <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> </operation></service>
关于方法的类型分2种,可以在axis2.xml中找到定义:
<!-- ================================================= --> <!-- Message Receivers --> <!-- ================================================= --> <!--This is the default MessageReceiver for the system , if you want to have MessageReceivers for --> <!--all the other MEP implement it and add the correct entry to here , so that you can refer from--> <!--any operation --> <!--Note : You can override this for a particular service by adding the same element with your requirement--> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/> <messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-only" class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/> <messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-out" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/> <messageReceiver mep="http://www.w3.org/ns/wsdl/in-only" class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/> <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/> </messageReceivers>
这2种分别是:有参数无返回;有参数有返回。为什么上面有6个定义呢
1. messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver",
接受RPC调用,或者ADB也可以,AXIOM方式不行。服务的参数可以是普通的Java类型或自定义类型,但不能为OMElement。
2.messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver",
接受AXIOM方式的调用。参数为OMElement,调用采用AXIOM方式。如果类中的参数为Java类型或自定义的AXIOM是调用不到的。
所以我们使用org.apache.axis2.rpc.receivers.RPCMessageReceiver。
并且客户端相应使用rpc或adb方式访问。
这2种分别是:有参数无返回;有参数有返回。为什么上面有6个定义呢
在org.apache.axis2.rpc.receivers这个包里我找到了3中方式:
import org.apache.axis2.rpc.receivers.RPCMessageReceiver;
import org.apache.axis2.rpc.receivers.RPCInOutAsyncMessageReceiver;
import org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver;
根据名称我猜想:RPCInOnlyMessageReceiver是有参数无返回;RPCInOutAsyncMessageReceiver是有参数有返回。
RPCMessageReceiver这个好像把所有情况都封装了。目前我都用这个。
服务端和客户端的配置要一致,这个以后再细说吧
服务端的几种方式:AXIOM,ADB,XMLBeans,JiBX
客户端对应的方式:AXIOM,ADB,XMLBeans,JiBX
在浏览器中查看所有启动的webservice:
http://helpdesk.citicsinfo.com/services/listServices
内容如下:
Available servicesVersionService Description : VersionService EPR : http://helpdesk.citicsinfo.com/services/VersionService Status : ActiveAvailable OperationsgetVersion callInfoServiceService Description : callInfoServiceService EPR : http://helpdesk.citicsinfo.com/services/callInfoServiceService Status : ActiveAvailable OperationsupdateCallInfo writeLog getUserNameFromSession queryCallInfo afterAddBillMessageService Description : afterAddBillMessageService EPR : http://helpdesk.citicsinfo.com/services/afterAddBillMessageService Status : ActiveAvailable OperationshadAddBillForTheCall
分析我新增的那个service:
callInfoService //service名称
Service Description : callInfoService
Service EPR : http://helpdesk.citicsinfo.com/services/callInfoService //请求地址(查看xml后面要加?wsdl或?xsd)
Service Status : Active //service状态:可用
Available Operations //可执行的操作,即可用的方法
updateCallInfo
writeLog
getUserNameFromSession
queryCallInfo
在浏览器输入:http://helpdesk.citicsinfo.com/services/callInfoService?wsdl
显示xml结构如下:
<?xml version="1.0" encoding="UTF-8" ?> - <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://device.axis2.hd.org" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://device.axis2.hd.org"> <wsdl:documentation>callInfoService</wsdl:documentation> - <wsdl:types>- <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://device.axis2.hd.org">- <xs:element name="writeLog">- <xs:complexType>- <xs:sequence> <xs:element minOccurs="0" name="info" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element>- <xs:element name="updateCallInfo">- <xs:complexType>- <xs:sequence> <xs:element minOccurs="0" name="callid" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="billNumber" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element>- <xs:element name="updateCallInfoResponse">- <xs:complexType>- <xs:sequence> <xs:element minOccurs="0" name="return" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element>- <xs:element name="queryCallInfo">- <xs:complexType>- <xs:sequence> <xs:element minOccurs="0" name="comeUserjobNumber" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element>- <xs:element name="queryCallInfoResponse">- <xs:complexType>- <xs:sequence> <xs:element minOccurs="0" name="return" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element>- <xs:element name="getUserNameFromSession">- <xs:complexType> <xs:sequence /> </xs:complexType> </xs:element>- <xs:element name="getUserNameFromSessionResponse">- <xs:complexType>- <xs:sequence> <xs:element minOccurs="0" name="return" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </wsdl:types>- <wsdl:message name="updateCallInfoRequest"> <wsdl:part name="parameters" element="ns:updateCallInfo" /> </wsdl:message>- <wsdl:message name="updateCallInfoResponse"> <wsdl:part name="parameters" element="ns:updateCallInfoResponse" /> </wsdl:message>- <wsdl:message name="writeLogRequest"> <wsdl:part name="parameters" element="ns:writeLog" /> </wsdl:message> <wsdl:message name="writeLogResponse" /> - <wsdl:message name="getUserNameFromSessionRequest"> <wsdl:part name="parameters" element="ns:getUserNameFromSession" /> </wsdl:message>- <wsdl:message name="getUserNameFromSessionResponse"> <wsdl:part name="parameters" element="ns:getUserNameFromSessionResponse" /> </wsdl:message>- <wsdl:message name="queryCallInfoRequest"> <wsdl:part name="parameters" element="ns:queryCallInfo" /> </wsdl:message>- <wsdl:message name="queryCallInfoResponse"> <wsdl:part name="parameters" element="ns:queryCallInfoResponse" /> </wsdl:message>- <wsdl:portType name="callInfoServicePortType">- <wsdl:operation name="updateCallInfo"> <wsdl:input message="ns:updateCallInfoRequest" wsaw:Action="urn:updateCallInfo" /> <wsdl:output message="ns:updateCallInfoResponse" wsaw:Action="urn:updateCallInfoResponse" /> </wsdl:operation>- <wsdl:operation name="writeLog"> <wsdl:input message="ns:writeLogRequest" wsaw:Action="urn:writeLog" /> <wsdl:output message="ns:writeLogResponse" wsaw:Action="urn:writeLogResponse" /> </wsdl:operation>- <wsdl:operation name="getUserNameFromSession"> <wsdl:input message="ns:getUserNameFromSessionRequest" wsaw:Action="urn:getUserNameFromSession" /> <wsdl:output message="ns:getUserNameFromSessionResponse" wsaw:Action="urn:getUserNameFromSessionResponse" /> </wsdl:operation>- <wsdl:operation name="queryCallInfo"> <wsdl:input message="ns:queryCallInfoRequest" wsaw:Action="urn:queryCallInfo" /> <wsdl:output message="ns:queryCallInfoResponse" wsaw:Action="urn:queryCallInfoResponse" /> </wsdl:operation> </wsdl:portType>- <wsdl:binding name="callInfoServiceSoap11Binding" type="ns:callInfoServicePortType"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> - <wsdl:operation name="updateCallInfo"> <soap:operation soapAction="urn:updateCallInfo" style="document" /> - <wsdl:input> <soap:body use="literal" /> </wsdl:input>- <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation>- <wsdl:operation name="writeLog"> <soap:operation soapAction="urn:writeLog" style="document" /> - <wsdl:input> <soap:body use="literal" /> </wsdl:input>- <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation>- <wsdl:operation name="getUserNameFromSession"> <soap:operation soapAction="urn:getUserNameFromSession" style="document" /> - <wsdl:input> <soap:body use="literal" /> </wsdl:input>- <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation>- <wsdl:operation name="queryCallInfo"> <soap:operation soapAction="urn:queryCallInfo" style="document" /> - <wsdl:input> <soap:body use="literal" /> </wsdl:input>- <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding>- <wsdl:binding name="callInfoServiceSoap12Binding" type="ns:callInfoServicePortType"> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> - <wsdl:operation name="updateCallInfo"> <soap12:operation soapAction="urn:updateCallInfo" style="document" /> - <wsdl:input> <soap12:body use="literal" /> </wsdl:input>- <wsdl:output> <soap12:body use="literal" /> </wsdl:output> </wsdl:operation>- <wsdl:operation name="writeLog"> <soap12:operation soapAction="urn:writeLog" style="document" /> - <wsdl:input> <soap12:body use="literal" /> </wsdl:input>- <wsdl:output> <soap12:body use="literal" /> </wsdl:output> </wsdl:operation>- <wsdl:operation name="getUserNameFromSession"> <soap12:operation soapAction="urn:getUserNameFromSession" style="document" /> - <wsdl:input> <soap12:body use="literal" /> </wsdl:input>- <wsdl:output> <soap12:body use="literal" /> </wsdl:output> </wsdl:operation>- <wsdl:operation name="queryCallInfo"> <soap12:operation soapAction="urn:queryCallInfo" style="document" /> - <wsdl:input> <soap12:body use="literal" /> </wsdl:input>- <wsdl:output> <soap12:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding>- <wsdl:binding name="callInfoServiceHttpBinding" type="ns:callInfoServicePortType"> <http:binding verb="POST" /> - <wsdl:operation name="updateCallInfo"> <http:operation location="updateCallInfo" /> - <wsdl:input> <mime:content type="application/xml" part="parameters" /> </wsdl:input>- <wsdl:output> <mime:content type="application/xml" part="parameters" /> </wsdl:output> </wsdl:operation>- <wsdl:operation name="writeLog"> <http:operation location="writeLog" /> - <wsdl:input> <mime:content type="application/xml" part="parameters" /> </wsdl:input>- <wsdl:output> <mime:content type="application/xml" part="parameters" /> </wsdl:output> </wsdl:operation>- <wsdl:operation name="getUserNameFromSession"> <http:operation location="getUserNameFromSession" /> - <wsdl:input> <mime:content type="application/xml" part="parameters" /> </wsdl:input>- <wsdl:output> <mime:content type="application/xml" part="parameters" /> </wsdl:output> </wsdl:operation>- <wsdl:operation name="queryCallInfo"> <http:operation location="queryCallInfo" /> - <wsdl:input> <mime:content type="application/xml" part="parameters" /> </wsdl:input>- <wsdl:output> <mime:content type="application/xml" part="parameters" /> </wsdl:output> </wsdl:operation> </wsdl:binding>- <wsdl:service name="callInfoService">- <wsdl:port name="callInfoServiceHttpSoap11Endpoint" binding="ns:callInfoServiceSoap11Binding"> <soap:address location="http://helpdesk.citicsinfo.com/services/callInfoService.callInfoServiceHttpSoap11Endpoint/" /> </wsdl:port>- <wsdl:port name="callInfoServiceHttpSoap12Endpoint" binding="ns:callInfoServiceSoap12Binding"> <soap12:address location="http://helpdesk.citicsinfo.com/services/callInfoService.callInfoServiceHttpSoap12Endpoint/" /> </wsdl:port>- <wsdl:port name="callInfoServiceHttpEndpoint" binding="ns:callInfoServiceHttpBinding"> <http:address location="http://helpdesk.citicsinfo.com/services/callInfoService.callInfoServiceHttpEndpoint/" /> </wsdl:port> </wsdl:service> </wsdl:definitions>
在浏览器输入:http://helpdesk.citicsinfo.com/services/callInfoService?xsd
显示xml结构如下:
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://device.axis2.hd.org" xmlns:ns1="http://org.apache.axis2/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://device.axis2.hd.org">- <xs:element name="writeLog">- <xs:complexType>- <xs:sequence> <xs:element minOccurs="0" name="info" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element>- <xs:element name="updateCallInfo">- <xs:complexType>- <xs:sequence> <xs:element minOccurs="0" name="callid" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="billNumber" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element>- <xs:element name="updateCallInfoResponse">- <xs:complexType>- <xs:sequence> <xs:element minOccurs="0" name="return" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element>- <xs:element name="queryCallInfo">- <xs:complexType>- <xs:sequence> <xs:element minOccurs="0" name="comeUserjobNumber" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element>- <xs:element name="queryCallInfoResponse">- <xs:complexType>- <xs:sequence> <xs:element minOccurs="0" name="return" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element>- <xs:element name="getUserNameFromSession">- <xs:complexType> <xs:sequence /> </xs:complexType> </xs:element>- <xs:element name="getUserNameFromSessionResponse">- <xs:complexType>- <xs:sequence> <xs:element minOccurs="0" name="return" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
无论上面哪种xml结构我们都能很清楚的看出,我们定义的方法,以及参数,有无返回值等信息。
1,在浏览器调试,调用方法updateCallInfo:http://helpdesk.citicsinfo.com/services/callInfoService/updateCallInfo?callid=B4848F35FFFF827601ED4054D35238FC&billNumber=ceshi12页面输出:- <ns:updateCallInfoResponse xmlns:ns="http://device.axis2.hd.org"> <ns:return>收到信息:callid=B4848F35FFFF827601ED4054D35238FC,billNumber=ceshi12。根据参数已经完成更新数据库数据。</ns:return> </ns:updateCallInfoResponse>后台也相应的打印:调用webservice的返回结果信息:收到信息:callid=B4848F35FFFF827601ED4054D35238FC,billNumber=ceshi12。根据参数已经完成更新数据库数据。去数据库查看,信息也正确更新了。2,在浏览器调试,调用方法queryCallInfo:http://helpdesk.citicsinfo.com/services/callInfoService/queryCallInfo?comeUserjobNumber=T001890页面输出:- <ns:queryCallInfoResponse xmlns:ns="http://device.axis2.hd.org"> <ns:return>收到参数信息comeUserjobNumber=T001891。根据此参数查询到的信息是:卢帅印</ns:return> </ns:queryCallInfoResponse>后台也相应的打印:调用webservice的返回结果信息:收到参数信息comeUserjobNumber=T001891。根据此参数查询到的信息是:卢帅印3,在浏览器调试,调用方法getUserNameFromSession:http://helpdesk.citicsinfo.com/services/callInfoService/getUserNameFromSession结果浏览器页面空白,后台也没有输出!原因待定。4,在浏览器调试,调用方法writeLog:http://helpdesk.citicsinfo.com/services/callInfoService/writeLog?info=写日志页面输出:- <ns:writeLogResponse xmlns:ns="http://device.axis2.hd.org"> <ns:return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" /> </ns:writeLogResponse>后台打印:调用webservice的返回结果信息:收到参数信息info=??????关于中文乱码,url还是要经过encodeURI才行,这个就不细说了。---------------------------------------------------------------
其中方法getUserNameFromSession调用没有成功,//没有参数的方法public String getUserNameFromSession(){ActionContext ctx = ActionContext.getContext();HttpSession session=((HttpServletRequest) (ActionContext.getContext()).get(ServletActionContext.HTTP_REQUEST)).getSession();String resultMessage="";if(session.getAttribute("current_user_id")!=null){resultMessage="获取到当前登录用户的账号:"+(String)session.getAttribute("current_user_id");}else{resultMessage="当前登录用户的账号为null";}System.out.println("调用webservice的返回结果信息:\r\n"+resultMessage);return resultMessage;}这个方法没有参数,并且从session获取当前用户的账号。经过调试发现 (HttpServletRequest) (ActionContext.getContext()).get(ServletActionContext.HTTP_REQUEST)为null也就是request对象是null,这样request。getSession()也为空。网上查了一下,webservice不能直接与session通信的忙着就涉及到了跨服务session管理,这是另外一个话题了,貌似挺深奥的。写webservice就必须写客户端代码,因为webservice就是为了让程序调用的。我们在浏览器调试这样很方便,最后还是要落实到客户端代码。
CallBackClient:package org.hd.axis2.client;import javax.xml.namespace.QName;import org.apache.axis2.AxisFault;import org.apache.axis2.addressing.EndpointReference;import org.apache.axis2.client.Options;import org.apache.axis2.rpc.client.RPCServiceClient;public class CallBackClient {public static void main(String args[]) throws AxisFault {CallBackClient.revokeMethodUpdateCallInfo();CallBackClient.revokeMethodQueryCallInfo();CallBackClient.revokeMethodWriteLog();}public static void revokeMethodUpdateCallInfo() throws AxisFault {// 使用RPC方式调用WebServiceRPCServiceClient serviceClient = new RPCServiceClient();Options options = serviceClient.getOptions();// 指定调用WebService的UR// http://helpdesk.citicsinfo.com:80/services/callInfoService/queryCallInfo?comeUserjobNumber=T001890EndpointReference targetEPR = new EndpointReference("http://helpdesk.citicsinfo.com:80/services/callInfoService");options.setTo(targetEPR);// 指定hadAddBillForTheCall方法的参数值Object[] opAddEntryArgs = new Object[] { "B4848F35FFFF827601ED4054D35238FC","ceshi-SDF22" };// 指定返回值的数据类型Class[] classes = new Class[] { String.class };// 指定要调用的方法及WSDL文件的命名空间QName opAddEntry = new QName("http://device.axis2.hd.org","updateCallInfo");// 调用sayHelloToPerson方法并输出该方法的返回值Object[] resObj=serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes);//打印结果System.out.println("调用方法 updateCallInfo");if(resObj!=null&&resObj.length>0){for(int i=0;i<resObj.length;i++){System.out.println(resObj[i].toString());}}}public static void revokeMethodQueryCallInfo() throws AxisFault {// 使用RPC方式调用WebServiceRPCServiceClient serviceClient = new RPCServiceClient();Options options = serviceClient.getOptions();// 指定调用WebService的UR// http://helpdesk.citicsinfo.com:80/services/callInfoService/queryCallInfo?comeUserjobNumber=T001890EndpointReference targetEPR = new EndpointReference("http://helpdesk.citicsinfo.com:80/services/callInfoService");options.setTo(targetEPR);// 指定hadAddBillForTheCall方法的参数值Object[] opAddEntryArgs = new Object[] { "T001890"};// 指定返回值的数据类型Class[] classes = new Class[] { String.class };// 指定要调用的方法及WSDL文件的命名空间QName opAddEntry = new QName("http://device.axis2.hd.org","queryCallInfo");// 调用sayHelloToPerson方法并输出该方法的返回值Object[] resObj=serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes);//打印结果System.out.println("调用方法 queryCallInfo");if(resObj!=null&&resObj.length>0){for(int i=0;i<resObj.length;i++){System.out.println(resObj[i].toString());}}}public static void revokeMethodWriteLog() throws AxisFault {// 使用RPC方式调用WebServiceRPCServiceClient serviceClient = new RPCServiceClient();Options options = serviceClient.getOptions();// 指定调用WebService的UR// http://helpdesk.citicsinfo.com:80/services/callInfoService/queryCallInfo?comeUserjobNumber=T001890EndpointReference targetEPR = new EndpointReference("http://helpdesk.citicsinfo.com:80/services/callInfoService");options.setTo(targetEPR);// 指定hadAddBillForTheCall方法的参数值Object[] opAddEntryArgs = new Object[] { "写日志test" };// 指定返回值的数据类型Class[] classes = new Class[] { String.class };// 指定要调用的方法及WSDL文件的命名空间QName opAddEntry = new QName("http://device.axis2.hd.org","writeLog");// 调用sayHelloToPerson方法并输出该方法的返回值Object[] resObj=serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes);//打印结果System.out.println("调用方法 writeLog");if(resObj!=null&&resObj.length>0){for(int i=0;i<resObj.length;i++){System.out.println(resObj[i].toString());}}}}上面都采用了rpc的调用方式后台打印结果:调用webservice的返回结果信息:收到信息:callid=B4848F35FFFF827601ED4054D35238FC,billNumber=ceshi-SDF22。根据参数已经完成更新数据库数据。调用webservice的返回结果信息:收到参数信息comeUserjobNumber=T001890。根据此参数查询到的信息是:王占调用webservice的返回结果信息:收到参数信息info=写日志test上面的方法调用都成功了。
- axis2练习
- axis2
- Axis2
- axis2
- Axis2
- axis2
- Axis2
- axis2
- axis2
- Axis2
- Axis2
- Axis2
- Axis2
- axis2
- Axis2
- Axis2
- 慎用AXIS2
- Axis2体系结构
- fedora 安装 QT
- UILongPressGestureRecognizer 执行两次的问题
- 关于Tq2440流水灯才行直接下载到sdram和nand中运行的区别
- D3D笔记---关于D3DPOOL_DEFFULT
- WPF – 使用触发器
- axis2练习
- 项目自动化之道-1.使用ant进行单步建构
- web集群时session同步的3种方法
- 关注 UIEvent
- hibernate 找不到映射文件
- vim的配置
- Yum离线安装(三) --- 制作 CentOS 本地软件源
- 给毕业生选择工作的5个建议 不看后悔
- 可怕的颈椎病