第一RPC方式,不生成客户端代码
第二,document方式,不生成客户端代码
第三,用wsdl2java工具,生成客户端方式调用
- package?samples.quickstart.client;??
- ??
- import?javax.xml.namespace.QName;??
- import?org.apache.axiom.om.OMAbstractFactory;??
- import?org.apache.axiom.om.OMElement;??
- import?org.apache.axiom.om.OMFactory;??
- import?org.apache.axiom.om.OMNamespace;??
- import?org.apache.axis2.AxisFault;??
- import?org.apache.axis2.addressing.EndpointReference;??
- import?org.apache.axis2.client.Options;??
- import?org.apache.axis2.client.ServiceClient;??
- import?org.apache.axis2.rpc.client.RPCServiceClient;??
- import?samples.quickstart.StockQuoteServiceStub;??
- import?samples.quickstart.xsd.GetPrice;??
- import?samples.quickstart.xsd.GetPriceResponse;??
- public?class?StockQuoteClient?{??
- ???
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ??
- ??public?static?void?testRPCClient()?{??
- ????try?{??
- ????????
- ??
- ????????
- ??????String?url?=?"http://localhost:8080/axis2ServerDemo/services/StockQuoteService?wsdl";??
- ????????
- ??????RPCServiceClient?serviceClient?=?new?RPCServiceClient();??
- ????????
- ??????EndpointReference?targetEPR?=?new?EndpointReference(url);??
- ??????Options?options?=?serviceClient.getOptions();??
- ????????
- ??????options.setTo(targetEPR);??
- ????????
- ??????options.setAction("urn:getPrice");??
- ???????
- ?
- ?
- ?
- ?
- ??
- ??????QName?qname?=?new?QName("http://quickstart.samples/xsd",?"getPrice");??
- ????????
- ??????Object[]?parameters?=?new?Object[]?{?"13"?};??
- ????????
- ????????
- ??????Class[]?returnTypes?=?new?Class[]?{?double.class?};??
- ????????
- ??????OMElement?element?=?serviceClient.invokeBlocking(qname,?parameters);??
- ????????
- ????????
- ??????String?result?=?element.getFirstElement().getText();??
- ??????System.out.println(result);??
- ????????
- ??????Object[]?response?=?serviceClient.invokeBlocking(qname,?parameters,?returnTypes);??
- ????????
- ??????Double?r?=?(Double)?response[0];??
- ??????System.out.println(r);??
- ????}?catch?(AxisFault?e)?{??
- ??????e.printStackTrace();??
- ????}??
- ??}??
- ?
- ?
- ??public?static?void?testDocument()?{??
- ????????
- ??????String?url?=?"http://localhost:8080/StockQuote/services/StockQuoteServiceSOAP11port?wsdl";??
- ??????Options?options?=?new?Options();??
- ????????
- ??????ServiceClient?sender?=?new?ServiceClient();??
- ??????sender.setOptions(options);??
- ??????OMFactory?fac?=?OMAbstractFactory.getOMFactory();??
- ??????String?tns?=?"http://quickstart.samples/";??
- ????????
- ??????OMNamespace?omNs?=?fac.createOMNamespace(tns,?"");??
- ??????OMElement?method?=?fac.createOMElement("getPrice",?omNs);??
- ??????OMElement?symbol?=?fac.createOMElement("symbol",250)"> ????????
- ??????symbol.addChild(fac.createOMText(symbol,?"Axis2?Echo?String?"));??
- ??????method.addChild(symbol);??
- ??????method.build();??
- ??????OMElement?result?=?sender.sendReceive(method);??
- ????}?catch?(AxisFault?axisFault)?{??
- ??????axisFault.printStackTrace();??
- ??
- ?
- ?
- ?
- ?
- ?
- ?
- ?
- ??
- ??public?void?addValidation(ServiceClient?serviceClient,?String?tns?,?String?user,?String?passwrod)?{??
- ????OMFactory?fac?=?OMAbstractFactory.getOMFactory();??
- ????OMNamespace?omNs?=?fac.createOMNamespace(tns,?"nsl");??
- ????OMElement?header?=?fac.createOMElement("AuthenticationToken",250)"> ????OMElement?ome_user?=?fac.createOMElement("Username",250)"> ????OMElement?ome_pass?=?fac.createOMElement("Password",250)"> ??????
- ????ome_user.setText(user);??
- ????ome_pass.setText(passwrod);??
- ????header.addChild(ome_user);??
- ????header.addChild(ome_pass);??
- ????serviceClient.addHeader(header);??
- ????
- ?
- ??public?static?void?testCodeClient()?{??
- ??????String?url?=?"http://localhost:8080/axis2ServerDemo/services/StockQuoteService";??
- ??????StockQuoteServiceStub?stub?=?new?StockQuoteServiceStub(url);??
- ??????GetPrice?request?=?new?GetPrice();??
- ??????request.setSymbol("ABCD");??
- ??????GetPriceResponse?response?=?stub.getPrice(request);??
- ??????System.out.println(response.get_return());??
- ????}?catch?(org.apache.axis2.AxisFault?e)?{??
- ????}?catch?(java.rmi.RemoteException?e)?{??
- ??public?static?void?main(String[]?args)?{??
- ?????StockQuoteClient.testRPCClient();??
- ??
- ??????
- }??
?
wsdl2java?用于根据WSDL生成相应的服务端和客户端代码的生成工具。
命令行格式为:WSDL2Java?[options] -uri <url or path> : A url or path to a WSDL
例如:
wsdl2java -uri http://localhost:8080/cxfService_0617/services/Hellows?wsdl -s -o buildclient
其中常用的options具体如下:
-o <path> : 指定生成代码的输出路径
-a : 生成异步模式的代码
-s : 生成同步模式的代码
-p <pkg> : 指定代码的package名称
-l <languange> : 使用的语言(Java/C) 默认是java
-t : 为代码生成测试用例
-ss : 生成服务端代码 默认不生成
-sd : 生成服务描述文件 services.xml,仅与-ss一同使用
-d <databinding> : 指定databingding,例如,adb,xmlbean,jibx,jaxme and jaxbri
-g : 生成服务端和客户端的代码
-pn <port_name> : 当WSDL中有多个port时,指定其中一个port
-sn <serv_name> : 选择WSDL中的一个service
-u : 展开data-binding的类
-r <path> : 为代码生成指定一个repository
-ssi : 为服务端实现代码生成接口类
-S : 为生成的源码指定存储路径
-R : 为生成的resources指定存储路径
–noBuildXML : 输出中不生成build.xml文件
–noWSDL : 在resources目录中不生成WSDL文件
–noMessageReceiver : 不生成MessageReceiver类
大写的DEMO
String xml = ReflectionUtils.convertObjectToXml(CODE_GBK,Zhrequest,ZhRequestInsureq.class);
? ? ? ??
? ? ? ? try {
? ? ? ? String targetEndpoint = SERVICE_URL;
NetSalePlatform fom = new NetSalePlatformStub(targetEndpoint);
GetRequest request = new GetRequest();
request.setContent(xml);
GetRequestResponse response = fom.getRequest(request);
System.out.println(response.get_return());


命令执行:wsdl2java -uri http://220.171.28.152:9080/nsp/services/NetSalePlatform?wsdl -p com.jbx.impls.services.exts.zhonghua -o E:456