生成WebService客户端

合集下载

springboot项目整合webservice,wsdl生成客户端,服务端文件

springboot项目整合webservice,wsdl生成客户端,服务端文件

springboot项⽬整合webservice,wsdl⽣成客户端,服务端⽂件这是⼀次实际的项⽬对接经验,⼚家提供⽂档,我们这边根据⽂档⽣成接⼝。

对初次对接的⼈来说很有帮助。

1.⼚家提供wsdl⽂件、我们这边⽣成客户端,然后发送⼯单,注⼊数据。

2.⼚家提供wsdl⽂件、我们这边⽣成服务端,然后接收⼚家的回调3.本次实现⼜是请教别⼈,⼜是各种查⽂档,⼜是各种bug摸索。

先导⼊依赖本次项⽬步骤 1.根据⼚家提供的wsdl⽣成客户端代码,然后注⼊内容。

⼚家⼀般都是提供⼀个地址,然后访问地址下载wsdl⽂件。

2.我是在linux上使⽤wget,然后下载格式:wget ⼚家地址 3.下载之后是个wsdl⽂件 4.我是⽤eclipse⽣成的客户端代码(idea我没找到,抱歉) 将上⼀步提供的wsdl⽂件拷贝到⼀个项⽬中,随便创建⼀个java项⽬,然后按照途中步骤依次执⾏,就会⽣成客户端代码。

5.将⽣成的客户端代码,拷贝到实际项⽬中,⾥⾯有很多报错,需要加上项⽬的⽬录结构,其他不要动,就会全部解决掉爆红的问题。

6.再就是具体的业务逻辑,然后⽣成xml⽂件,这⾥就不叙述了。

下⼀步就是注⼊(⽣成的客户端⽂件名称不⼀样,也不要慌,就看结尾⼀样的就⾏) 7.以上就是根据wsdl⽣成客户端代码,然后注⼊xml内容 8.写⼀个服务端,根据⼚家提供的wsdl⽂件,写服务端代码。

记住是服务端的wsdl⽂件,没有的可以询问下⼚家。

 9.分析wsdl⽂件⽣成接⼝、接⼝的⽅法、⽅法的参数顺序,类型、返回值。

具体会在项⽬中截图,看看就明⽩了。

10.项⽬中的⽬录结构等等 在java⽬录下创建⽂件夹,boot启动类上需要添加扫描,不然⽆法交给容器管理。

11.这个接⼝跟上⾯分析的xml是⼀样的,不过是换成代码了。

12.这⾥是实现类,具体是对返回的回调进⾏处理。

修改注⼊的状态等等 13.服务端写好之后,需要提供地址给⼚家,不然他找不到调⽤接⼝的地址。

生成WebService简易文档

生成WebService简易文档

根据java类生成WebService0、先从菜单上选择自动编译,此项一定要选。

1、右键点击需要生成WebService的类,选择“create Web service”2、出现如图所有对话框,配置好后,点击“next”3、出现如下对话框勾上你想公布的WebService 接口方法,其他默认,点击下一步即可,注意要publish 该工程,否则可能无法生成server-config.wsdd ,导致后期无法部署该服务。

此处选择到“start service ”的位置 如果需要同时生成客户端,这里可以适当选择勾上这里这里配置成测试的容器注意这里的EAR 不要选错1.新建项目(Dynamic Web Project)2.填写正确的项目,一路“next”直到完成。

3.新建文件夹wsdl,把厂家提供的wsdl文件放入该文件夹下。

4.5.将文件server-config.wsdd文件copy到WebContent/WEB-INF下面6.7.8.Finsh完成后,修改增加配置文件server-config.wsdd,服务端代码增加在ISPPNPIserviceImpl.java类中,至此,服务端开发已经完成,可以打包ear部署测试。

AAA客户端新建步骤:项目名为NPIServiceAAAClient 1.新建项目(Java Project)2.3.4.新建文件夹wsdl,把厂家提供的wsdl文件放入该文件夹下。

5.6.把lib包copy到项目下,并且添加到项目:7.8.把XmlToRoot.java和RootToXml.java两个类copy放到.ispp.ispp_npi包下。

将Msg_head.java和ResponseSubClass.java中的成员变量设置成public,注意:private ng.String name; // attribute这些属性不要改,保持private。

至此,客户端开发已经完成,可以打包jar测试注意事项:(安徽测试ivpn发现的问题)1.wsdl文件应该取独立的wsdl,不取接口文档里面的,生成客户端代码的时候先修改命名空间为/ivpn/而不是默认的/ispp_npi/2、命令配置:(增加集团)注意节点<?xml version="1.0" encoding="GB2312"?><Interface_msg><Directive><ServiceClass Name="CSService"><ServiceSubClass Name="CSVpnGroupService"><Method Name="CreateVPN"><VPNNUM>9999</VPNNUM><VPNNAME>99</VPNNAME><VPNTYPE>99</VPNTYPE><SERVICESTART>99</SERVICESTART><SERVICESTOP>99</SERVICESTOP><HALL>99</HALL><FEEGROUP>99</FEEGROUP><VPNKIND>99</VPNKIND></Method></ServiceSubClass></ServiceClass></Directive></Interface_msg>3、注意命名空间/ivpn/不是4、乱码问题没解决5、xmltoroot类中elemList = new ArrayList<Leaf>();不能定义为static,否则就会每次发送的xml是一样的Ppc ews_id=23531。

用cxf生成webservice的java客户端代码

用cxf生成webservice的java客户端代码

⽤cxf⽣成webservice的java客户端代码
百度来的:
最近,由于要⽤到某公司提供的webservice实现的api接⼝,想到了⽤cxf的wsdl2java⼯具来⽣成客户端程序。

(⾃⼰写是⽐较⿇烦且费时,so偷懒⼀下、、)
使⽤步骤如下:
⼀、下载apache cxf的包,如apache-cxf-2.7.10.zip,地址:/download.html
⼆、解压apache-cxf-2.7.10.zip⾄某⼀⽬录,如D:\apache-cxf-2.7.10
三、设置环境变量
1、CXF_HOME=D:\apache-cxf-2.7.10
2、在path后⾯加上 %CXF_HOME%/bin;
在cmd命令中输⼊wsdl2java,如果有提⽰usage,就表明配置成功
四、运⾏wsdl2java⼯具
附wsdl2java⽤法:
wsdl2java -p com -d D:\\src -all xx.wsdl
-p 指定其wsdl的命名空间,也就是要⽣成代码的包名:
-d 指定要产⽣代码所在⽬录
-client ⽣成客户端测试web service的代码
-server ⽣成服务器启动web service的代码
-impl ⽣成web service的实现代码
-ant ⽣成build.xml⽂件
-all ⽣成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.。

利用wsdl2java工具生成webservice的客户端代码

利用wsdl2java工具生成webservice的客户端代码

利⽤wsdl2java⼯具⽣成webservice的客户端代码 1、JDK环境 2、下载apache-cxf发布包: ⽬前最新版本为3.2.6, 解压后如下: 解压发布包,设置CXF_HOME,并添加%CXF_HOME %/bin到path环境变量。

3、CMD命令⾏输⼊wsdl2java -help,有正常提⽰说明环境已经正确配置。

4、命令使⽤ 此命令主要是⽣成webservice的客户端代码,服务端可以是⾃⾏开发的服务,也可以是需要对接的服务接⼝,最简单的命令如下: wsdl2java wsdlurl 其中wsdlurl为服务发布的访问地址,未写参数默认⽣成的是客户端的代码,其中⽤得最多的是-encoding 参数,是指定java代码的编码格式,例如: wsdl2java -encoding wsdlurl 其他详细的参数及说明可以⽤wsdl2java -help或wsdl2java -h获取,根据实际的需求设置相应的参数即可。

5、简单案例 常⽤接⼝:IP地址来源搜索 WEB 服务 1、⽣成客户端代码 WSDL地址: http://12.21.26.11/spesvc/Opp/Service.asmx?wsdl 使⽤wsdl2java⼯具将客户端代码直接⽣成在eclipse的⼯程⾥,eclipse⼯程地址为:E:\workspace\webservice,命令如下: wsdl2java -encoding utf-8 -d E:/webservice/src http://12.23.24.24/spesvc/Opp/OppService.asmx?wsdl -encoding表⽰⽣成的Java⽂件编码格式为utf8,-d表⽰代码⽣成路径为E:/workspace/webservice/src。

执⾏完毕,没有报任何错误,说明执⾏成功 ⽣成代码⽂件如下: 6、客户端代码调⽤服务 写⼀个⼩demo,调⽤发布的IP查询服务public class test_client {public static void main(String[] args){OttService service2 = new OttService();OttServiceSoap serviceSoap = service2.getOttServiceSoap();String rest = serviceSoap.getPlayListGuidWithDate("2018-09-01"); System.out.println(rest);}} 运⾏结果。

axis2发布服务(WebService)和生成客户端(Client)

axis2发布服务(WebService)和生成客户端(Client)

一、准备工作1.下载axis2相关jar包目前最新版本为 1.6.2;将axis2-1.6.2-bin.rar,axis2-1.6.2-war.zip一并下载下来,下载地址:/axis2/java/core/download.cgi2.下载axis2插件:axis2-eclipse-codegen-plugin-1.6.2.zip、axis2-eclipse-serv ice-plugin-1.6.2.zip,下载地址:/axis2/jav a/core/tools/index.html3安装Eclipse插件,安装成功如下图:5.新建Web Project(axis2_Serv ice)将axis2-1.6.2-bin\lib下的jar拷贝到axis2_Serv ice\lib下,打开axis2-1.6.2-war.zip\axis2\WEB-INF下的conf、modules、services 解压到项目(axis2_Serv ice)WebRoot\WEB-INF下6.修改web.xml文件,添加如下代码:7.添加两个类:bean类和服务类Bean类:package .zjl.entity;import java.io.Serializable;public class User implements Serializable{/****/private static final long serialVersionUID = 1L;private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}}要发布的服务类:package .zjl.service;import er;public class UserService {public User getUser(User user) {System.out.println("service:"+user.getId());System.out.println("service:"+user.getName());User po2 = new User();po2.setId(1);po2.setName("zjl");return po2;}}8.Axis2插件工具生成aar文件,发布WebService在项目上右击->new->other选择Axis2 Serv ice Archiv er,点击nextClass File Location选择工程路径下的classes文件,点击Next勾选Skip WSDL项,点击next这里没有jar文件,所以默认,点击Next勾选Generate the serv ice xml automatically项,点击NextServ ice Name 随便写记住就行,Class name包名点类名称点击Load会出现这个类下的所有方法名称,点击NextOutput location选择输出文件位置(具体位置根据具体而定),点击Finsh说明成功。

使用axis自动生成webservice客户端代码

使用axis自动生成webservice客户端代码

利用AXIS生成客户端文件,使得开发webservice更加简单,以下是我的个人代码,工具:Myeclipse7.0,axis1.4,tomcat5.5,jdk1.5一、下载axis的jar包,我的是axis-bin-1_4.zip包,解压后有axis的lib目录,一会儿我们要用,二、在myeclip se中创建自己的webservice工程,这个在的文库里有,三、在C盘目录下创建一个批处理文件,我的名字是wsdltojava.bat,内容如下:set Axis_Lib=E:\jar\axis\asixTool\axis-bin-1_4\axis-1_4\libset Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%set Axis_Servlet=http://localhost:8090/myAxis/services/HelloWorld?wsdl %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -u %Axis_Servlet%备注:红色字体我的axis的目录,也就是刚才我解压出来的axis,蓝色是我的webservice的访问地址,其他的不用处理,然后双击这个文件,产生以下几个文件:(1)、目录是:C:\localhost\myAxis\services\HelloWorld(2)、四、将这四个文件拷贝到你的客户端,创建客户端运行即可附录代码:服务端HelloWorld.javapackage webservice.axis.test;public class HelloWorld {public String hello(){return"Hello "+"aaaaaaaaaaaaaaaaaa";}}客户端(通过刚才命令生成的四个文件)HelloWorld.java/*** HelloWorld.java** This file was auto-generated from WSDL* by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.*/package webservice.axis.test.batClient;public interface HelloWorld extends java.rmi.Remote {public ng.String hello() throws java.rmi.RemoteException;}HelloWorldService.java/*** HelloWorldService.java** This file was auto-generated from WSDL* by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.*/package webservice.axis.test.batClient;public interface HelloWorldService extends javax.xml.rpc.Service {public ng.String getHelloWorldAddress();public webservice.axis.test.batClient.HelloWorld getHelloWorld() throwsjavax.xml.rpc.ServiceException;public webservice.axis.test.batClient.HelloWorld getHelloWorld(.URL portAddress) throws javax.xml.rpc.ServiceException;}HelloWorldServiceLocator.java/*** HelloWorldServiceLocator.java** This file was auto-generated from WSDL* by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.*/package webservice.axis.test.batClient;public class HelloWorldServiceLocator extends org.apache.axis.client.Service implements webservice.axis.test.batClient.HelloWorldService {public HelloWorldServiceLocator() {}public HelloWorldServiceLocator(org.apache.axis.EngineConfiguration config) { super(config);}public HelloWorldServiceLocator(ng.String wsdlLoc, space.QName sName) throws javax.xml.rpc.ServiceException {super(wsdlLoc, sName);}// Use to get a proxy class for HelloWorldprivate ng.String HelloWorld_address = "http://localhost:8090/myAxis/services/HelloWorld";public ng.String getHelloWorldAddress() {return HelloWorld_address;}// The WSDD service name defaults to the port name.private ng.String HelloWorldWSDDServiceName = "HelloWorld";public ng.String getHelloWorldWSDDServiceName() {return HelloWorldWSDDServiceName;}public void setHelloWorldWSDDServiceName(ng.String name) {HelloWorldWSDDServiceName = name;}public webservice.axis.test.batClient.HelloWorld getHelloWorld() throws javax.xml.rpc.ServiceException {.URL endpoint;try {endpoint = new .URL(HelloWorld_address);}catch (.MalformedURLException e) {throw new javax.xml.rpc.ServiceException(e);}return getHelloWorld(endpoint);}public webservice.axis.test.batClient.HelloWorld getHelloWorld(.URL portAddress) throws javax.xml.rpc.ServiceException {try {webservice.axis.test.batClient.HelloWorldSoapBindingStub _stub = new webservice.axis.test.batClient.HelloWorldSoapBindingStub(portAddress, this);_stub.setPortName(getHelloWorldWSDDServiceName());return _stub;}catch (org.apache.axis.AxisFault e) {return null;}}public void setHelloWorldEndpointAddress(ng.String address) {HelloWorld_address = address;}/*** For the given interface, get the stub implementation.* If this service has no port for the given interface,* then ServiceException is thrown.*/public java.rmi.Remote getPort(Class serviceEndpointInterface) throws javax.xml.rpc.ServiceException {try {if(webservice.axis.test.batClient.HelloWorld.class.isAssignableFrom(serviceEndpointInterface)) { webservice.axis.test.batClient.HelloWorldSoapBindingStub _stub = new webservice.axis.test.batClient.HelloWorldSoapBindingStub(new.URL(HelloWorld_address), this);_stub.setPortName(getHelloWorldWSDDServiceName());return _stub;}}catch (ng.Throwable t) {throw new javax.xml.rpc.ServiceException(t);}throw new javax.xml.rpc.ServiceException("There is no stub implementation for the interface: " + (serviceEndpointInterface == null ? "null" : serviceEndpointInterface.getName()));}/*** For the given interface, get the stub implementation.* If this service has no port for the given interface,* then ServiceException is thrown.*/public java.rmi.Remote getPort(space.QName portName, Class serviceEndpointInterface) throws javax.xml.rpc.ServiceException {if (portName == null) {return getPort(serviceEndpointInterface);}ng.String inputPortName = portName.getLocalPart();if ("HelloWorld".equals(inputPortName)) {return getHelloWorld();}else {java.rmi.Remote _stub = getPort(serviceEndpointInterface);((org.apache.axis.client.Stub) _stub).setPortName(portName);return _stub;}}public space.QName getServiceName() {return new space.QName("http://localhost:8090/myAxis/services/HelloWorld", "HelloWorldService");}private java.util.HashSet ports = null;public java.util.Iterator getPorts() {if (ports == null) {ports = new java.util.HashSet();ports.add(newspace.QName("http://localhost:8090/myAxis/services/HelloWorld", "HelloWorld"));}return ports.iterator();}/*** Set the endpoint address for the specified port name.*/public void setEndpointAddress(ng.String portName, ng.String address) throws javax.xml.rpc.ServiceException {if ("HelloWorld".equals(portName)) {setHelloWorldEndpointAddress(address);}else{ // Unknown Port Namethrow new javax.xml.rpc.ServiceException(" Cannot set Endpoint Address for Unknown Port" + portName);}}/*** Set the endpoint address for the specified port name.*/public void setEndpointAddress(space.QName portName, ng.String address) throws javax.xml.rpc.ServiceException {setEndpointAddress(portName.getLocalPart(), address);}}HelloWorldSoapBindingStub.java/*** HelloWorldSoapBindingStub.java** This file was auto-generated from WSDL* by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.*/package webservice.axis.test.batClient;public class HelloWorldSoapBindingStub extends org.apache.axis.client.Stub implements webservice.axis.test.batClient.HelloWorld {private java.util.Vector cachedSerClasses = new java.util.Vector();private java.util.Vector cachedSerQNames = new java.util.Vector();private java.util.Vector cachedSerFactories = new java.util.Vector();private java.util.Vector cachedDeserFactories = new java.util.Vector();static org.apache.axis.description.OperationDesc [] _operations;static {_operations = new org.apache.axis.description.OperationDesc[1];_initOperationDesc1();}private static void _initOperationDesc1(){org.apache.axis.description.OperationDesc oper;org.apache.axis.description.ParameterDesc param;oper = new org.apache.axis.description.OperationDesc();oper.setName("hello");oper.setReturnType(newspace.QName("/2001/XMLSchema", "string"));oper.setReturnClass(ng.String.class);oper.setReturnQName(new space.QName("", "helloReturn"));oper.setStyle(org.apache.axis.constants.Style.RPC);oper.setUse(e.ENCODED);_operations[0] = oper;}public HelloWorldSoapBindingStub() throws org.apache.axis.AxisFault {this(null);}public HelloWorldSoapBindingStub(.URL endpointURL, javax.xml.rpc.Service service)throws org.apache.axis.AxisFault {this(service);super.cachedEndpoint = endpointURL;}public HelloWorldSoapBindingStub(javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {if (service == null) {super.service = new org.apache.axis.client.Service();} else {super.service = service;}((org.apache.axis.client.Service)super.service).setTypeMappingVersion("1.2");}protected org.apache.axis.client.Call createCall() throws java.rmi.RemoteException { try {org.apache.axis.client.Call _call = super._createCall();if (super.maintainSessionSet) {_call.setMaintainSession(super.maintainSession);}if (super.cachedUsername != null) {_call.setUsername(super.cachedUsername);}if (super.cachedPassword != null) {_call.setPassword(super.cachedPassword);}if (super.cachedEndpoint != null) {_call.setTargetEndpointAddress(super.cachedEndpoint);}if (super.cachedTimeout != null) {_call.setTimeout(super.cachedTimeout);}if (super.cachedPortName != null) {_call.setPortName(super.cachedPortName);}java.util.Enumeration keys = super.cachedProperties.keys();while (keys.hasMoreElements()) {ng.String key = (ng.String) keys.nextElement();_call.setProperty(key, super.cachedProperties.get(key));}return _call;}catch (ng.Throwable _t) {throw new org.apache.axis.AxisFault("Failure trying to get the Call object", _t);}}public ng.String hello() throws java.rmi.RemoteException {if (super.cachedEndpoint == null) {throw new org.apache.axis.NoEndPointException();}org.apache.axis.client.Call _call = createCall();_call.setOperation(_operations[0]);_call.setUseSOAPAction(true);_call.setSOAPActionURI("");_call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);_call.setOperationName(newspace.QName("http://test.axis.webservice", "hello"));setRequestHeaders(_call);setAttachments(_call);try { ng.Object _resp = _call.invoke(new ng.Object[] {});if (_resp instanceof java.rmi.RemoteException) {throw (java.rmi.RemoteException)_resp;}else {extractAttachments(_call);try {return (ng.String) _resp;} catch (ng.Exception _exception) {return (ng.String) org.apache.axis.utils.JavaUtils.convert(_resp, ng.String.class);}}} catch (org.apache.axis.AxisFault axisFaultException) {throw axisFaultException;}}}最后要感谢网上资源。

eclipse根据wsdl文件生成webservice客户端-图例

eclipse根据wsdl文件生成webservice客户端-图例

eclipse根据wsdl文件生成webservice客户端一、前期准备: (1)1、配置log4j (1)2、log4j使用jar包: (2)3、wsdl使用jar包: (2)二、开始生成文件: (2)一、前期准备:1、配置log4j没有配置的场合提示下列的信息(可以不配置):(log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).log4j:WARN Please initialize the log4j system properly.Error: Missing argument to option -p)log4j.properties文件内容:log4j.rootLogger=info,stdout,R######################### Console Appender#######################log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%X{LKV}%d{yyyy-MM -dd HH:mm:ss,SSS}%c%t%L%p-%m%n######################### File Appender#######################log4j.appender.R=org.apache.log4j.DailyRollingFileAppender#log4j.appender.R.File=${WORKDIR}/TestWebService/WebRoot/logs/out.log#log4j.appender.R.File=${catalina.home}/WebRoot/logs/out.loglog4j.appender.R.File=D:/logs/TestWebService.loglog4j.appender.R.DatePattern = '.'yyyy-MM-ddyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%X{LKV}%d{yyyy-MM-dd HH:mm:ss,SSS}%c%t%L%p-%m%n######################### log level#######################.ibatis=debugmon.jdbc.SimpleDataSource=debugmon.jdbc.ScriptRunner=debug.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=d ebuglog4j.logger.java.sql.Connection=debuglog4j.logger.java.sql.Statement=debuglog4j.logger.java.sql.PreparedStatement=debug,stdoutlog4j.logger.java.sql.PreparedStatement=debug,stdout,R.jiahelife=debug.jiahelife.platform=error2、log4j使用jar包:log4j-1.2.8.jarcommons-discovery-0.2.jarcommons-logging.jar3、wsdl使用jar包:axis.jarwsdl4j-1.5.1.jar二、开始生成文件:具体操作如下图:然后点击Search按钮进入如下的画面,在输入框中输入WSDL2Java点击【OK】按钮进入下图:点击Arguments 的页面,进行如下设置: 12说明:1、WSDL文件生成的XML文件2、XML文件所在工作目录,以及生成后java文件的存放目录。

手把手教Axis1.4利用wsdl生成webserice服务端

手把手教Axis1.4利用wsdl生成webserice服务端

利用AXIS开发Webservice(一) ——如何发布自己的webservice先介绍下本人开发环境吧。

JDK 1.4.2 + Myeclipse 6.0(实在经不起诱惑,尝尝鲜)+ Tomcat 5.0.28 + AXIS 1.4。

AXIS 1.4包可以在/axis/找到。

假设所有的环境你已经搭好,并且AXIS包也已经下好了。

OK,Here we go~解压axis-bin-1_4.zip这个包可以看到webapps目录,双击进入把里面的AXIS文件夹拷到%TOMCAT_HOME%\webapps目录下,之后拷贝activation.jar、mail.jar、tools.jar到%TOMCAT_HOME%\webapps\axis\WEB-INF\lib目录下。

启动tomcat,访问http://localhost:8080/axis/happyaxis.jsp 如果访问成功,恭喜你!基本的配置你已经做完了。

PS:此处的%TOMCAT_HOME%指的是Tomcat的安装目录,至于那另外的三个jar包,J2EE 1.4库里就能找的到。

现在来说一下最关键的Webservice的发布。

AXIS提供了两种发布方式,一种是即时发布(Instant Deployment),另外一种是定制发布(Custom Deployment)。

即时发布提供了一种非常简单的webservice的发布方式,但是其中限制太多,因此在实际的开发中定制发布才是首选。

这里也将会以定制发布为重点来介绍。

1.即时发布JWS (Java Web Service) Files - Instant Deployment即时发布提供了一种非常简单发布方式,发布者只要有Java源代码(也就是.java文件),然后把其后缀名改成jws(也就是java web service的缩写)拷贝到%TOMCAT_HOME%\webapps\axis目录下即完成了所有的发布工作。

webservice客户端代码生成方式总结

webservice客户端代码生成方式总结

一、Webservice可以使用的框架很多。

AXIS、CXF 、JAX、XFIRE,这些框架都可以根据wsdl文件生成ws的服务器和客户端代码。

二、Ws的调用方式有三种,http post、http get、soap post。

本人建议使用http post,他访问远程ws接口的速度比使用soap post要快些。

象使用axis框架实现soap post方式来说,简单的接口还好,对于使用了大量代理类及带有soaphead的ws,且还要在本地生成一大堆JAVA类来和服务端对应。

特别如下这种情况,axis好像无法实现。

Soaphead如下<soapHead><appId>0039434454</appId><pwd>67677</pwd></soapHead>象这种只能根据org.apache.axis.client.Call.addHead(ElementSoapHead)来增加报头。

但这个报头没有根元素,无法创建一个这种Element。

下面就如何书写客户端代码详细讲解下。

1.通过发送http post请求来调用ws。

SOAPUI是个不错的工具,他可以根据wsdl文件生成测试例子。

另外重要的是,它可以生成wsdl对应的请求报文和响应报文。

这样我们在调用别人写的ws时,不管多复杂的ws都可以简单的调用。

首先按照SOAPUI显示的请求报文格式拼装我们的请求报文,使用.HttpURLConnection对象来发送http post请求。

然后使用输出流、输出流获得响应报文,再用Element解析报文得到要取的数据。

示例代码如下:JAVA类SoapInvoke:package test;import java.io.InputStream;import java.io.OutputStream;import .HttpURLConnection;import .URL;public class SoapInvoke {public static void main(String[] args) {try {soapSpecialConnection();} catch (Exception e) {e.printStackTrace();}}public static void soapSpecialConnection() throws Exception{//拼装soap请求报文StringBuilder sb = new StringBuilder();StringBuilder soapHeader = new StringBuilder();soapHeader.append("<soapenv:Envelopexmlns:soapenv=\"/soap/envelope/\"xmlns:test=\"http://test/\">");soapHeader.append("<soapenv:Header>");soapHeader.append("<spId>zhouyun</spId>");soapHeader.append("<spPassword>123</spPassword>");soapHeader.append("</soapenv:Header>");soapHeader.append("<soapenv:Body>");soapHeader.append("<test:sayHelloMiss>");soapHeader.append("<arg0>");soapHeader.append("<name>zhouyun</name>");soapHeader.append("</arg0>");soapHeader.append("</test:sayHelloMiss>");soapHeader.append("</soapenv:Body>");soapHeader.append("</soapenv:Envelope>");//设置soap请求报文的相关属性String url="http://localhost:8080/CXFServer/SayHelloService";URL u = new URL(url);HttpURLConnection conn = (HttpURLConnection) u.openConnection(); conn.setDoInput(true);conn.setDoOutput(true);conn.setUseCaches(false);conn.setDefaultUseCaches(false);conn.setRequestProperty("Host", "localhost:8080");conn.setRequestProperty("Content-Type", "text/xml;charset=utf-8");conn.setRequestProperty("Content-Length",String.valueOf(soapHeader.length()));conn.setRequestProperty("SOAPAction", "");conn.setRequestMethod("POST");//定义输出流OutputStream output = conn.getOutputStream();if (null != soapHeader) {byte[] b = soapHeader.toString().getBytes("utf-8");//发送soap请求报文output.write(b, 0, b.length);}output.flush();output.close();//定义输入流,获取soap响应报文InputStream input = conn.getInputStream();int c = -1;//sb为返回的soap响应报文字符串while (-1 != (c = input.read())) {sb.append((char)c);}input.close();}}2.通过axis来调用ws。

Myeclipse开发WebService接口服务端和客户端

Myeclipse开发WebService接口服务端和客户端

查看了网上的各类用Java开发WebService接口的方法,有些麻烦而且行不通,自己实践后,将实践过程记录如下,以备以后之用。

一、服务端发布WebService接口1、在Myeclipse中,选择File->new->Web Service Project,然后输入项目名称,框中内容按如下所示选择即可,然后点击next。

2.点击next后,出现如下画面:3、再点击next,勾选两个框。

4、点击2次next后出现如下界面,勾选所有框5、点击Finish完成后。

在该项目上的Java Build Path,选择Libraries标签,点击Add Libirary,在弹出框中,选择MyEclipse Library,如下图所示:6、点击next后,在弹出框中选择JAX-WS 2.1 Libraries,并点击Finish,检查Libraries标签中是否已经添加上了刚添加的Lib7、在下面这个页面上全部勾选:8、在TestServiceDemo/src目录下,新建如下图结构的类:其中IServiceHello类为接口,ServiceHelloImpl类为实现,具体代码如下:IServiceHello类:package com.mf5.app.service;public interface IServiceHellopublic String sayHello();public String sayHelloName(String name);}ServiceHelloImpl类:package com.mf5.app.serviceimpl;import javax.jws.WebMethod;import javax.jws.WebService;import javax.jws.soap.SOAPBinding;import com.mf5.app.service.IServiceHello;@WebService(targetNamespace="http://demo.webservice",name="Hello")@SOAPBinding(style=SOAPBinding.Style.RPC)public class ServiceHelloImpl implements IServiceHello{public final String str = "WebService服务器返回消息...";@WebMethodpublic String sayHello(){return str+"Hello!";}@WebMethodpublic String sayHelloName(String name){return str+name;}}9、在WEB-INF目录下,新建一个文件,名称为:sun-jaxws.xm,其中内容如下:<?xml version="1.0" encoding="UTF-8"?><endpoints xmlns="/xml/ns/jax-ws/ri/runtime" version="2.0"><endpoint name="IServiceHello"implementation="com.mf5.app.serviceimpl.ServiceHelloImpl"url-pattern="/testservice"></endpoint></endpoints>10、在web.xml文件中,在<display-name>TestServiceDemo</display-name> 下面添加如下代码:注意的是,在sun-jaxws.xm中的url-pattern的值与web.xml中的servlet-mapping中映射的url-pattern的值必须是一样的。

myeclipse中创建webservice客户端

myeclipse中创建webservice客户端

myeclipse中创建webservice客户端1、创建web工程2、为web工程添加webservice能力3、一般不用配置,直接点next4、添加webservice的jar包,除了已经过时的1.1JAXB1外,全选。

5、在提供webservice的wsdl描述文件上面右键,新建webservice客户端。

6、可以指定webservice的客户端所在的包为mzh j.wsclient7、生成的webservice客户端文件如下图,有2个包:com.cintel.ics 中的是wsdl中描述的webservice对象;mzhj.wsclient中的是webservice测试的客户端。

8、ICSServiceClient的main方法可以调用webservice的方法了。

//发送给webservice的参数ICSClass iCSClass=new ICSClass();Method method=new Method();method.setName("AddBlackNum");iCSClass.setMethod(method);iCSClass.setName("ICSService");//用ICS的方法发送参数,就能得到响应对象了service.ics(iCSClass);public static void main(String[] args) {ICSServiceClient client = new ICSServiceClient();//create a default service endpointICS service = client.getIcsSend();//TODO: Add custom client code here////service.yourServiceOperationHere();System.out.println("test client completed");System.exit(0);}。

axis2发布服务(WebService)和生成客户端(Client)

axis2发布服务(WebService)和生成客户端(Client)

一、准备工作1.下载axis2相关jar包目前最新版本为 1.6.2;将axis2-1.6.2-bin.rar,axis2-1.6.2-war.zip一并下载下来,下载地址:/axis2/java/core/download.cgi2.下载axis2插件:axis2-eclipse-codegen-plugin-1.6.2.zip、axis2-eclipse-serv ice-plugin-1.6.2.zip,下载地址:/axis2/jav a/core/tools/index.html3安装Eclipse插件,安装成功如下图:5.新建Web Project(axis2_Serv ice)将axis2-1.6.2-bin\lib下的jar拷贝到axis2_Serv ice\lib下,打开axis2-1.6.2-war.zip\axis2\WEB-INF下的conf、modules、services 解压到项目(axis2_Serv ice)WebRoot\WEB-INF下6.修改web.xml文件,添加如下代码:7.添加两个类:bean类和服务类Bean类:package .zjl.entity;import java.io.Serializable;public class User implements Serializable{/****/private static final long serialVersionUID = 1L;private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}}要发布的服务类:package .zjl.service;import er;public class UserService {public User getUser(User user) {System.out.println("service:"+user.getId());System.out.println("service:"+user.getName());User po2 = new User();po2.setId(1);po2.setName("zjl");return po2;}}8.Axis2插件工具生成aar文件,发布WebService在项目上右击->new->other选择Axis2 Serv ice Archiv er,点击nextClass File Location选择工程路径下的classes文件,点击Next勾选Skip WSDL项,点击next这里没有jar文件,所以默认,点击Next勾选Generate the serv ice xml automatically项,点击NextServ ice Name 随便写记住就行,Class name包名点类名称点击Load会出现这个类下的所有方法名称,点击NextOutput location选择输出文件位置(具体位置根据具体而定),点击Finsh说明成功。

【案例】Springboot开发WebService服务端和客户端

【案例】Springboot开发WebService服务端和客户端

【案例】Springboot开发WebService服务端和客户端环境说明Java JDK 1.8、Spring boot 2.1.6、Apache CXF 3.1.6POM依赖<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.1.6</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxws</artifactId><version>3.1.6</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http</artifactId><version>3.1.6</version></dependency></dependencies>服务端webService接⼝使⽤@WebService声明式注解声明这是⼀个webService接⼝,并设置:name:服务名称targetNamespace:命名空间,通常是接⼝的包名倒序注解@WebMethod是声明接⼝⽅法,可以通过operationName为接⼝⽅法设置别名,默认是⽅法名。

CXF使用教程(二)——webService自动生成客户端代码

CXF使用教程(二)——webService自动生成客户端代码

CXF使⽤教程(⼆)——webService⾃动⽣成客户端代码webService⾃动⽣成客户端代码有四种⽅法:⼀:使⽤Axis⽣产客户端代码(另存为bat⽂件)需要注意的是:⽬录包含空格,⽐如Axis_Lib,Output_Pathset Axis_Lib=F:\axis1.4\axis\WEB-INF\libset Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%set Output_Path=D:\Workspacesset Package=com.axis.sub%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% http://192.168.11.62:8090/rainLogin?wsdl pause⼆:使⽤JDK1.6的wsimport.exe(在jdk的bin⽬录下)产⽣客户端代码(之前要将JDK的bin添加到环境变量Path中)wsimport -keep -p com.jdk6.sub -s JavaSrc http://192.168.11.62:8090/rainLogin?wsdl1. -s(src):在当前路径下的JavaSrc(要⼿动创建)⽂件夹中⽣成客户端代码2. -p(package):定义客户端代码的包名3. -keep 保留.class⽂件三:使⽤CXF wsdl2java.bat (要先将CXF的bin⽬录添加到环境变量Path下)在cmd本项⽬SCR⽬录下运⾏下⾯代码,就会在src下⽣成客户端代码wsdl2java http://192.168.11.62:8080/FFWebservice/services/PortalServices?wsdl四:使⽤Myeclipse⾃带⼯具⽣成客户端代码finnish 就可以⽣成客户端代码了。

个⼈⼀般⽐较喜欢⽤第⼆种⽅法。

webservices客户端开发-java

webservices客户端开发-java

WebService客户端开发手册1 概述本文描述Web Service接口客户端的开发流程。

2 开发环境需求2.1服务器端软件环境3 开发流程3.1生成客户端代码1.用Eclipse自动生成webservices客户端的插件,根据所提供的wsdl文件生成客户端代码。

打开MyEclipse选择File->New->Other-Web Services下的Web Service Client,如下图:2.进入下一界面,输入wsdl文件地址(测试用的地址http://10.110.0.202:8800/hljwebservice/services/SynchronizeOrganizationService?wsdl):3.选择一个Client Project(需为web project),4.点击下一步:5.点击完成后,在src下生成五个客户端文件SynchronizeOrganizationService.java SynchronizeOrganizationServiceHttpBindingStub.java SynchronizeOrganizationServiceLocator.java SynchronizeOrganizationServicePortType.java SynchronizeOrganizationServicePortTypeProxy.java3.2编写客户端调用自己编写客户端调用程序,例子如下:import .MalformedURLException;import java.rmi.RemoteException;import java.util.ArrayList;import javax.xml.rpc.ServiceException;importorg.codehaus.xfire.SynchronizeOrganizationService.SynchronizeOrganiza tionServiceLocator;importorg.codehaus.xfire.SynchronizeOrganizationService.SynchronizeOrganiza tionServicePortType;public class Client {/***这个方法调用web服务并返回服务执行的结果*@param*@return*@throws ServiceException*@throws RemoteException*@throws MalformedURLException*/public static String callServer() throws ServiceException, RemoteException, MalformedURLException{SynchronizeOrganizationServiceLocator service = new SynchronizeOrganizationServiceLocator();SynchronizeOrganizationServicePortTypeport=service.getSynchronizeOrganizationServiceHttpPort();String[][] inputParas= new String[2][2];inputParas[0][0] = "aaa";inputParas[0][1] = "bbb";inputParas[1][0] = "ccc";inputParas[1][1] = "ddd";String aa = port.modifyOrgaAuthService(inputParas);System.out.println("aa======"+aa);return aa;}/***//***@param args*@throws ServiceException*@throws RemoteException*@throws MalformedURLException*/public static void main(String[] args) throws RemoteException, ServiceException, MalformedURLException {// TODO Auto-generated method stubClient call = new Client();System.out.println(call.callServer());}}。

在Eclipse下生成webservice客户端程序

在Eclipse下生成webservice客户端程序

在Eclipse下生成webservice客户端程序菜单new->other选择webserviceclient输入需要调用的webservice地址也可以browse本地的wsdl文件下一步,可以定义生成文件的路径。

建议此步选择,可以将客户端的代码归类,避免包太乱。

点击完成就可以生成webservice客户端代码了。

生成后的类结构如下:调用接口实例代码:1 2 IDataServices=newIDataServiceLocator();IDataServicePortTypeport=serivce.getIDataServiceHttpPort(newURL("http://loc3 alhost/services/wsdl/IDataService"));port.getData("admin","xxx","{"SiteID":14}");其中ZCMS常用接口:文章操作接口:http://serveraddr/zcms/services/wsdl/IArticleService?wsdl。

后台用户操作接口:http://serveraddr/zcms/services/wsdl/IUserService?wsdl。

会员操作接口:http://serveraddr/zcms/services/wsdl/IMemberService?wsdl。

数据读取接口:http://serveraddr/zcms/services/wsdl/IDataService?wsdl。

文章源于泽元软件知识库,此文章只用于学术交流不用于商业应用。

axis2开发的webservice的客户端生成、webservice的报文封装、解析、w。。。

axis2开发的webservice的客户端生成、webservice的报文封装、解析、w。。。

axis2开发的webservice的客户端⽣成、webservice的报⽂封装、解析、w。

根据wsdl和axis2 ⽣成webservice的客户端,具体做法参照这篇随笔<!-- ========报⽂⼊参======= --><?xml version="1.0" encoding="GBK" standalone="no" ?><ROOT><SERVICE_NO type="string">136********</SERVICE_NO><MASTER_SERV_ID type="string">1001</MASTER_SERV_ID><REQUEST_INFO><OPR_INFO><PROVINCE_GROUP type="string">10010</PROVINCE_GROUP><OPEN_TIME type="string">20120301212121</OPEN_TIME><LOGIN_NO type="string">aa1868</LOGIN_NO><SERVICE_NO type="string">136********</SERVICE_NO><ACT_ID type="string">201304161360175132</ACT_ID><CONTACT_ID type="string"></CONTACT_ID><MEANS_ID type="string">201304161360175139</MEANS_ID><CUST_ADVINCE type="string"></CUST_ADVINCE><RECOMMEND_NO type="string"></RECOMMEND_NO><CHANNEL_TYPE type="string">11</CHANNEL_TYPE><TO_GROUP_ID type="string"></TO_GROUP_ID><SERIAL_NO type="string"></SERIAL_NO><JOIN_TERMI_FLAG type="string">JH111</JOIN_TERMI_FLAG><TAINFO_LIST><TA_INFO><PHONE_NO type="string"></PHONE_NO><ID_NO type="string"></ID_NO></TA_INFO></TAINFO_LIST></OPR_INFO><PARAMS><A06><PRC_INFO_LIST><PRC_INFO><PROD_PRCID type="string"></PROD_PRCID><PRC_INFO_LIST><PRC_INFO><PROD_PRCID type="string"></PROD_PRCID></PRC_INFO></PRC_INFO_LIST><SERV_NO type="string"></SERV_NO></B06><B02><SERV_NO type="string"></SERV_NO></B02><B10><SERV_NO type="string"></SERV_NO></B10><A11><RESOURCE_LIST><RESOURCE_INFO><RECEIVE_PHONE type="string">136********</RECEIVE_PHONE> <IMEI_NO type="string">869412018032158</IMEI_NO><COLOR_ID type="string">10000000</COLOR_ID></RESOURCE_INFO></RESOURCE_LIST></A11><A14><PHONE_NO type="string"></PHONE_NO></A14><A17><CONDCLASS_0178 type="string">0987</CONDCLASS_0178></A17><A24><SCORE_MONEY type="string"></SCORE_MONEY></A24><A26><IMEI_NO type="string"></IMEI_NO><PHONE_NO type="string"></PHONE_NO></A26></REQUEST_INFO></ROOT><!-- 报⽂出参: --><?xml version="1.0" encoding="GBK" standalone="no" ?><ROOT><RETURN_CODE type="long">0</RETURN_CODE> // 1<RETURN_MSG type="string">ok!</RETURN_MSG> // 2<USER_MSG type="string">ok!</USER_MSG> // 3<DETAIL_MSG type="string">OK!</DETAIL_MSG> // 4<PROMPT_MSG type="string"></PROMPT_MSG> // 5当封装报⽂时,这⾥1,2,3,4,5部分封装成了⼀个对象:ResponseHead<OUT_DATA><ORDER_ID type="string">O1113052800212745</ORDER_ID><CREATE_ACCEPT type="long">101973397749</CREATE_ACCEPT> <PASS_FLAG type="string">Y</PASS_FLAG></OUT_DATA></ROOT>封装⼊参报⽂对象package com.*.s4035IntCfm;import java.util.ArrayList;import java.util.List;public class S4035IntCfmRequest {private String serviceNo;private String masterServId;private String provinceGroup;private String loginNo;private String phoneNo;private String actId;private String meansId;private String contactId;private String channelType;private String custAdvince;private String recommendNo;private String serialNo;private String joinTermiFlag;private List<PrcInfo> prcInfoList =new ArrayList<PrcInfo>();private List<ResourceInfo> resourceInfo=new ArrayList<ResourceInfo>(); private String servNo;private String imeiNo;private String openTime;public String getOpenTime() {return openTime;}public void setOpenTime(String openTime) {this.openTime = openTime;}public String getImeiNo() {return imeiNo;}public void setImeiNo(String imeiNo) {this.imeiNo = imeiNo;}private String transferSNo;//TRANSFER_SERIALNOprivate String condclass;//CONDCLASS_0178private String scoreMoney;private String index;public String getIndex() {return index;}public void setIndex(String index) {this.index = index;}public String getScoreMoney() {return scoreMoney;}public void setScoreMoney(String scoreMoney) {this.scoreMoney = scoreMoney;}public String getCondclass() {return condclass;this.condclass = condclass;}public String getTransferSNo() {return transferSNo;}public void setTransferSNo(String transferSNo) {this.transferSNo = transferSNo;}public String getServNo() {return servNo;}public void setServNo(String servNo) {this.servNo = servNo;}public List<PrcInfo> getPrcInfoList() {return prcInfoList;}public void setPrcInfoList(List<PrcInfo> prcInfoList) {this.prcInfoList = prcInfoList;}public List<ResourceInfo> getResourceInfo() {return resourceInfo;}public void setResourceInfo(List<ResourceInfo> resourceInfo) { this.resourceInfo = resourceInfo;}public String getServiceNo() {return serviceNo;}public void setServiceNo(String serviceNo) {this.serviceNo = serviceNo;}public String getMasterServId() {return masterServId;}public void setMasterServId(String masterServId) {this.masterServId = masterServId;return provinceGroup;}public void setProvinceGroup(String provinceGroup) { this.provinceGroup = provinceGroup;}public String getLoginNo() {return loginNo;}public void setLoginNo(String loginNo) {this.loginNo = loginNo;}public String getPhoneNo() {return phoneNo;}public void setPhoneNo(String phoneNo) {this.phoneNo = phoneNo;}public String getActId() {return actId;}public void setActId(String actId) {this.actId = actId;}public String getMeansId() {return meansId;}public void setMeansId(String meansId) {this.meansId = meansId;}public String getContactId() {return contactId;}public void setContactId(String contactId) {this.contactId = contactId;}public String getChannelType() {return channelType;this.channelType = channelType;}public String getCustAdvince() {return custAdvince;}public void setCustAdvince(String custAdvince) {this.custAdvince = custAdvince;}public String getRecommendNo() {return recommendNo;}public void setRecommendNo(String recommendNo) { this.recommendNo = recommendNo;}public List<TaInfo> getTaInfoList() {return taInfoList;}public void setTaInfoList(List<TaInfo> taInfoList) {this.taInfoList = taInfoList;}public String getToGroupId() {return toGroupId;}public void setToGroupId(String toGroupId) {this.toGroupId = toGroupId;}public String getSerialNo() {return serialNo;}public void setSerialNo(String serialNo) {this.serialNo = serialNo;}public String getJoinTermiFlag() {return joinTermiFlag;}public void setJoinTermiFlag(String joinTermiFlag) { this.joinTermiFlag = joinTermiFlag;Request对象中引⽤类型属性TaInfopackage com.*.s4035IntCfm;public class TaInfo {private String phoneNo;//可空private String idNo;//可空public String getPhoneNo() {return phoneNo;}public void setPhoneNo(String phoneNo) {this.phoneNo = phoneNo;}public String getIdNo() {return idNo;}public void setIdNo(String idNo) {this.idNo = idNo;}}Request对象中引⽤类型属性PrcInfopackage com.*.s4035IntCfm;public class PrcInfo {private String prodPrcid;//给⽤户订购的资费,可空 public String getProdPrcid() {return prodPrcid;}public void setProdPrcid(String prodPrcid) {this.prodPrcid = prodPrcid;}}Request对象中引⽤类型属性ResourceInfo package com.*.s4035IntCfm;public class ResourceInfo {private String receivePhone;private String imeiNo;return receivePhone;}public void setReceivePhone(String receivePhone) { this.receivePhone = receivePhone;}public String getImeiNo() {return imeiNo;}public void setImeiNo(String imeiNo) {this.imeiNo = imeiNo;}public String getColorId() {return colorId;}public void setColorId(String colorId) {this.colorId = colorId;}}出参报⽂的封装对象的⽗类package com.*;public class ResponseHead {private String returnCode;private String returnMsg;private String userMsg;private String detailMsg;private String promptMsg;public String getReturnCode() {return returnCode;}public void setReturnCode(String returnCode) {this.returnCode = returnCode;}public String getReturnMsg() {return returnMsg;}public void setReturnMsg(String returnMsg) {this.returnMsg = returnMsg;return userMsg;}public void setUserMsg(String userMsg) {erMsg = userMsg;}public String getDetailMsg() {return detailMsg;}public void setDetailMsg(String detailMsg) {this.detailMsg = detailMsg;}public String getPromptMsg() {return promptMsg;}public void setPromptMsg(String promptMsg) {this.promptMsg = promptMsg;}}把出参报⽂为封装response对象,此处继承⼀个⾃定义的根据出参报⽂封装的⽗类package com.*.s4035IntCfm;import com.*.ResponseHead;public class S4035IntCfmResponse extends ResponseHead{private String orderId;private String createAccept;private String passFlag;public String getOrderId() {return orderId;}public void setOrderId(String orderId) {this.orderId = orderId;}public String getCreateAccept() {return createAccept;}public void setCreateAccept(String createAccept) {this.createAccept = createAccept;return passFlag;}public void setPassFlag(String passFlag) {this.passFlag = passFlag;}}把S4035IntCfmRequest对象装换成⼊参报⽂public static String parseS4035IntCfmRequest2XML(S4035IntCfmRequest request){String xml=null;StringBuffer sb = new StringBuffer();sb.append("<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"no\" ?>").append("\n");sb.append("<ROOT>").append("\n");sb.append("<SERVICE_NO type=\"string\">"+request.getServiceNo()+"</SERVICE_NO>").append("\n");sb.append("<MASTER_SERV_ID type=\"string\">"+request.getMasterServId()+"</MASTER_SERV_ID>").append("\n");sb.append("<REQUEST_INFO>").append("\n");sb.append("<OPR_INFO>").append("\n");sb.append("<PROVINCE_GROUP type=\"string\">"+request.getProvinceGroup()+"</PROVINCE_GROUP>").append("\n"); sb.append("<OPEN_TIME type=\"string\">"+request.getOpenTime()+"</OPEN_TIME>").append("\n");sb.append("<LOGIN_NO type=\"string\">"+request.getLoginNo()+"</LOGIN_NO>").append("\n");// sb.append("<PHONE_NO type=\"string\">"+request.getPhoneNo()+"</PHONE_NO>").append("\n");sb.append("<SERVICE_NO type=\"string\">"+request.getServiceNo()+"</SERVICE_NO>").append("\n");sb.append("<ACT_ID type=\"string\">"+request.getActId()+"</ACT_ID>").append("\n");if(request.getContactId()==null){sb.append("<CONTACT_ID type=\"string\"></CONTACT_ID>").append("\n");}else{sb.append("<CONTACT_ID type=\"string\">"+request.getContactId()+"</CONTACT_ID>").append("\n");}sb.append("<MEANS_ID type=\"string\">"+request.getMeansId()+"</MEANS_ID>").append("\n");if(request.getCustAdvince()==null){sb.append("<CUST_ADVINCE type=\"string\"></CUST_ADVINCE>").append("\n");}else{sb.append("<CUST_ADVINCE type=\"string\">"+request.getCustAdvince()+"</CUST_ADVINCE>").append("\n");}if(request.getRecommendNo()==null){sb.append("<RECOMMEND_NO type=\"string\"></RECOMMEND_NO>").append("\n");}else{sb.append("<RECOMMEND_NO type=\"string\">"+request.getRecommendNo()+"</RECOMMEND_NO>").append("\n"); }sb.append("<CHANNEL_TYPE type=\"string\">"+request.getChannelType()+"</CHANNEL_TYPE>").append("\n");if(request.getToGroupId()==null){sb.append("<TO_GROUP_ID type=\"string\"></TO_GROUP_ID>").append("\n");}else{sb.append("<TO_GROUP_ID type=\"string\">"+request.getToGroupId()+"</TO_GROUP_ID>").append("\n");}if(request.getSerialNo()==null){sb.append("<SERIAL_NO type=\"string\"></SERIAL_NO>").append("\n");}else{sb.append("<SERIAL_NO type=\"string\">"+request.getSerialNo()+"</SERIAL_NO>").append("\n");}if(request.getJoinTermiFlag()==null){sb.append("<JOIN_TERMI_FLAG type=\"string\"></JOIN_TERMI_FLAG>").append("\n");}else{sb.append("<JOIN_TERMI_FLAG type=\"string\">"+request.getJoinTermiFlag()+"</JOIN_TERMI_FLAG>").append("\n"); }sb.append("<TAINFO_LIST>").append("\n");if(request.getTaInfoList()!=null&&request.getTaInfoList().size()>0){String phoneNo=null;String idNo=null;for(int i=0;i<request.getTaInfoList().size();i++){TaInfo taInfo=request.getTaInfoList().get(i);sb.append("<TA_INFO>").append("\n");phoneNo=taInfo.getPhoneNo()!=null?taInfo.getPhoneNo():"";idNo=taInfo.getIdNo()!=null?taInfo.getIdNo():"";sb.append("<PHONE_NO type=\"string\">"+phoneNo+"</PHONE_NO>").append("\n");sb.append("<ID_NO type=\"string\">"+idNo+"</ID_NO>").append("\n");sb.append("</TA_INFO>").append("\n");}}else{sb.append("<TA_INFO>").append("\n");sb.append("<PHONE_NO type=\"string\"></PHONE_NO>").append("\n");sb.append("<ID_NO type=\"string\"></ID_NO>").append("\n");sb.append("</TA_INFO>").append("\n");}sb.append("</TAINFO_LIST>").append("\n");sb.append("</OPR_INFO>").append("\n");sb.append("<PARAMS>").append("\n");sb.append("<A06>").append("\n");sb.append("<PRC_INFO_LIST>").append("\n");if(request.getPrcInfoList()!=null&&request.getPrcInfoList().size()>0){String prodPrcId=null;for(int i=0;i<request.getPrcInfoList().size();i++){PrcInfo prcInfo=request.getPrcInfoList().get(i);sb.append("<PRC_INFO>").append("\n");prodPrcId=prcInfo.getProdPrcid()!=null?prcInfo.getProdPrcid():"";sb.append("<PROD_PRCID type=\"string\">"+prodPrcId+"</PROD_PRCID>").append("\n"); sb.append("</PRC_INFO>").append("\n");}}else{sb.append("<PRC_INFO>").append("\n");sb.append("<PROD_PRCID type=\"string\"></PROD_PRCID>").append("\n");sb.append("</PRC_INFO>").append("\n");}sb.append("</PRC_INFO_LIST>").append("\n");sb.append("</A06>").append("\n");sb.append("<B06>").append("\n");sb.append("<PRC_INFO_LIST>").append("\n");if(request.getPrcInfoList()!=null&&request.getPrcInfoList().size()>0){String prodPrcId=null;for(int i=0;i<request.getPrcInfoList().size();i++){PrcInfo prcInfo=request.getPrcInfoList().get(i);sb.append("<PRC_INFO>").append("\n");prodPrcId=prcInfo.getProdPrcid()!=null?prcInfo.getProdPrcid():"";sb.append("<PROD_PRCID type=\"string\">"+prodPrcId+"</PROD_PRCID>").append("\n"); sb.append("</PRC_INFO>").append("\n");}}else{sb.append("<PRC_INFO>").append("\n");sb.append("<PROD_PRCID type=\"string\"></PROD_PRCID>").append("\n");sb.append("</PRC_INFO>").append("\n");}sb.append("</PRC_INFO_LIST>").append("\n");if(request.getServNo()==null){sb.append("<SERV_NO type=\"string\"></SERV_NO>").append("\n");}else{sb.append("<SERV_NO type=\"string\">"+request.getServNo()+"</SERV_NO>").append("\n");}sb.append("</B06>").append("\n");sb.append("<B02>").append("\n");if(request.getServNo()==null){sb.append("<SERV_NO type=\"string\"></SERV_NO>").append("\n");}else{sb.append("<SERV_NO type=\"string\">"+request.getServNo()+"</SERV_NO>").append("\n");}sb.append("</B02>").append("\n");sb.append("<B10>").append("\n");if(request.getServNo()==null){sb.append("<SERV_NO type=\"string\"></SERV_NO>").append("\n");}else{sb.append("<SERV_NO type=\"string\">"+request.getServNo()+"</SERV_NO>").append("\n");}sb.append("</B10>").append("\n");sb.append("<A11>").append("\n");sb.append("<RESOURCE_LIST>").append("\n");if(request.getResourceInfo()!=null&&request.getResourceInfo().size()>0){String recPhone=null;String imeiNo=null;String colorId=null;for(int i=0;i<request.getResourceInfo().size();i++){ResourceInfo resourceInfo=request.getResourceInfo().get(i);sb.append("<RESOURCE_INFO>").append("\n");recPhone=resourceInfo.getReceivePhone()!=null?resourceInfo.getReceivePhone():"";imeiNo=resourceInfo.getImeiNo()!=null?resourceInfo.getImeiNo():"";colorId=resourceInfo.getColorId()!=null?resourceInfo.getColorId():"";sb.append("<RECEIVE_PHONE type=\"string\">"+recPhone+"</RECEIVE_PHONE>").append("\n"); sb.append("<IMEI_NO type=\"string\">"+imeiNo+"</IMEI_NO>").append("\n");sb.append("<COLOR_ID type=\"string\">"+colorId+"</COLOR_ID>").append("\n");sb.append("</RESOURCE_INFO>").append("\n");}}else{sb.append("<RESOURCE_INFO>").append("\n");sb.append("<RECEIVE_PHONE type=\"string\"></RECEIVE_PHONE>").append("\n");sb.append("<IMEI_NO type=\"string\"></IMEI_NO>").append("\n");sb.append("<COLOR_ID type=\"string\"></COLOR_ID>").append("\n");sb.append("</RESOURCE_INFO>").append("\n");}sb.append("</RESOURCE_LIST>").append("\n");sb.append("</A11>").append("\n");sb.append("<A14>").append("\n");if(request.getPhoneNo()==null){sb.append("<PHONE_NO type=\"string\"></PHONE_NO>").append("\n");}else{sb.append("<PHONE_NO type=\"string\">"+request.getPhoneNo()+"</PHONE_NO>").append("\n");}sb.append("</A14>").append("\n");sb.append("<A17>").append("\n");if(request.getCondclass()==null){sb.append("<CONDCLASS_0178 type=\"string\"></CONDCLASS_0178>").append("\n");}else{sb.append("<CONDCLASS_0178 type=\"string\">"+request.getCondclass()+"</CONDCLASS_0178>").append("\n"); }sb.append("</A17>").append("\n");sb.append("<A24>").append("\n");if(request.getScoreMoney()==null){sb.append("<SCORE_MONEY type=\"string\"></SCORE_MONEY>").append("\n");}else{sb.append("<SCORE_MONEY type=\"string\">"+request.getScoreMoney()+"</SCORE_MONEY>").append("\n");}sb.append("</A24>").append("\n");sb.append("<A26>").append("\n");if(request.getImeiNo()==null){sb.append("<IMEI_NO type=\"string\"></IMEI_NO>").append("\n");}else{sb.append("<IMEI_NO type=\"string\">"+request.getImeiNo()+"</IMEI_NO>").append("\n");}if(request.getPhoneNo()==null){sb.append("<PHONE_NO type=\"string\"></PHONE_NO>").append("\n");}else{sb.append("<PHONE_NO type=\"string\">"+request.getPhoneNo()+"</PHONE_NO>").append("\n");}sb.append("</A26>").append("\n");sb.append("<A04>").append("\n");if(request.getIndex()==null){sb.append("<INDEX type=\"string\"></INDEX>").append("\n");}else{sb.append("<INDEX type=\"string\">"+request.getScoreMoney()+"</INDEX>").append("\n");}sb.append("</A04>").append("\n");sb.append("</PARAMS>").append("\n");sb.append("</REQUEST_INFO>").append("\n");sb.append("</ROOT>").append("\n");xml = sb.toString();return xml;}把调⽤接⼝获得的出参报⽂转换成⾃⼰封装的S4035IntCfmResponse对象public static S4035IntCfmResponse parseXML2S4035IntCfmResponse(String xml) throws DocumentException{ Document document =DocumentHelper.parseText(xml);S4035IntCfmResponse response =new S4035IntCfmResponse();Element root = document.getRootElement();String DETAIL_MSG = root.elementTextTrim("DETAIL_MSG");String PROMPT_MSG = root.elementTextTrim("PROMPT_MSG");String RETURN_CODE = root.elementTextTrim("RETURN_CODE");if(RETURN_CODE!=null&&(RETURN_CODE.equals("0")||RETURN_CODE.equals("0"))){Element OUT_DATA = root.element("OUT_DATA");String ORDER_ID = OUT_DATA.elementTextTrim("ORDER_ID");String CREATE_ACCEPT = OUT_DATA.elementTextTrim("CREATE_ACCEPT");String PASS_FLAG = OUT_DATA.elementTextTrim("PASS_FLAG");response.setOrderId(ORDER_ID);response.setCreateAccept(CREATE_ACCEPT);response.setPassFlag(PASS_FLAG);}response.setDetailMsg(DETAIL_MSG);response.setPromptMsg(PROMPT_MSG);response.setReturnCode(RETURN_CODE);return response;}在service层调⽤webservice接⼝并把⼊参和出参报⽂记录到数据库public S4035IntCfmResponse S4035IntCfm(S4035IntCfmRequest request,String url) {S4035IntCfmResponse response = null;String xml = MyParseXML.parseS4035IntCfmRequest2XML(request);System.out.println(xml);("========⼊参=======" + xml);try {S4035IntCfmStub stub = new S4035IntCfmStub(url);S4035IntCfmStub.CallService call = new S4035IntCfmStub.CallService();call.setPin(xml);S4035IntCfmStub.CallServiceResponse response2 = stub.callService(call);String xml1 = "";xml1 = response2.get_return();System.out.println(xml1);("========出参=======" + xml1);// 记录⼊参报⽂和出参报⽂TOperationLogDTO oper = new TOperationLogDTO();oper.setOperateTime(new Date());oper.setOperateUser("商城 ");oper.setOperateDesc("⼊参:" + xml + "\n出参:" + xml1);oper.setOperateAction("⾃主开通合约");oper.setOperateObjectId(request.getServiceNo());oper.setOperateObjectReason("");oper.setOperateName(request.getPhoneNo());//底层通过this.getHibernateTemplate().save(dto);保存到数据中this.operationLogManagerImpl.save(oper);response = MyParseXML.parseXML2S4035IntCfmResponse(xml);} catch (Exception e) {e.printStackTrace();}return response;}这样在Action层,传⼊指定的参数,就可调⽤S4035IntCfm(S4035IntCfmRequest request,String url)⽅法了,并且可以通过调⽤接⼝的返回值S4035IntCfmResponse进⾏判断处理保存⼊参和出参时涉及到java类和相关⽂件import ng.builder.EqualsBuilder;import ng.builder.HashCodeBuilder;/*** <ul>* <li> <b>⽬的:</b> <br />* <p>* 表T_OPERATION_LOG的映射类,*/public class TOperationLogDTO extends AbstractTOperationLogDTO{private static final long serialVersionUID = 8980322235903658767L;public TOperationLogDTO(){super();}public TOperationLogDTO(ng.String logId){super(logId);}public boolean equals(Object other){ if ( !(other instanceof TOperationLogDTO) )return false;TOperationLogDTO castOther = (TOperationLogDTO) other;return new EqualsBuilder().append(this.getLogId(), castOther.getLogId()).isEquals(); }public int hashCode(){return new HashCodeBuilder().append(getLogId()).toHashCode();}@Overridepublic String toString() {return super.toString();}}import com.*.common.model.util.PageObject;/*** <ul>* <li><b>⽬的:</b> <br />* <p>* 实体对象,请勿做客户化操作,对应表:T_OPERATION_LOG 商城对象操作履历表*/public abstract class AbstractTOperationLogDTO extends PageObject{private static final long serialVersionUID = -3633835505537085014L// 表IDprivate ng.String logId;// 操作时间private java.util.Date operateTime;//操作查询结束时间。

生成WebService客户端

生成WebService客户端

Eclipse3.3生成客户端右击选中项目test---->New---->Other---->Web Service Client---->Browsewsdl地址:下载wsdl文件放在项目中:/test/WebContent/SyyhConvertData.wsdl或者网络上wsdl链接:http://localhost:8080/ckwWebService/SyyhConvertData?wsdl生成的文件中,作为接口来使用的文件名为:####Stub.java。

####因webservice的类名不同而不同。

这个文件中就包含了webservice的所有方法。

问题1[WARN ] 2011-12-28 09:19:58,703 - Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.需要mail.jar和activation.jar。

参考/wform/archive/2006/04/27/mail_activation_jar.html/webtools/wst/components/ws/download_instructions_for_jars.ht mlCXF生成客户端解压apache-cxf-2.5.0.zip在apache-cxf-2.5.0\bin\wsdl2java.bat中以下两个变量:set CXF_HOME=E:\source\apache-cxf-2.5.0set JAVA_HOME=C:\Java\jdk1.6需要用到jaxb-api-*.jar将apache-cxf-2.5.0\lib\endorsed目录拷贝到C:\Java\jdk1.6\jre\libwsdl2java wsdl地址C:\>E:\source\apache-cxf-2.5.0\bin\wsdl2java -d d:\src -client http://localhost:8080/ckwWebService/SyyhConvertData?wsdl或者C:\>E:\source\apache-cxf-2.5.0\bin\wsdl2java -d d:\src -client c:/SyyhConvertData.wsdl需要的jar包同cxf服务器端的jar包。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Eclipse3.3生成客户端
右击选中项目test---->New---->Other
---->Web Service Client---->Browse
wsdl地址:
下载wsdl文件放在项目中:/test/WebContent/SyyhConvertData.wsdl
或者
网络上wsdl链接:http://localhost:8080/ckwWebService/SyyhConvertData?wsdl
生成的文件中,作为接口来使用的文件名为:####Stub.java。

####因webservice的类名不同而不同。

这个文件中就包含了webservice的所有方法。

问题1
[WARN ] 2011-12-28 09:19:58,703 - Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.
需要mail.jar和activation.jar。

参考
/wform/archive/2006/04/27/mail_activation_jar.html
/webtools/wst/components/ws/download_instructions_for_jars.ht ml
CXF生成客户端
解压apache-cxf-2.5.0.zip
在apache-cxf-2.5.0\bin\wsdl2java.bat中以下两个变量:
set CXF_HOME=E:\source\apache-cxf-2.5.0
set JAVA_HOME=C:\Java\jdk1.6
需要用到jaxb-api-*.jar
将apache-cxf-2.5.0\lib\endorsed目录拷贝到C:\Java\jdk1.6\jre\lib
wsdl2java wsdl地址
C:\>E:\source\apache-cxf-2.5.0\bin\wsdl2java -d d:\src -client http://localhost:8080/ckwWebService/SyyhConvertData?wsdl
或者
C:\>E:\source\apache-cxf-2.5.0\bin\wsdl2java -d d:\src -client c:/SyyhConvertData.wsdl
需要的jar包同cxf服务器端的jar包。

相关文档
最新文档