SOA实验报告---用java程序生成WSDL文件

合集下载

java解析wsdl文档获取方法与参数

java解析wsdl文档获取方法与参数

java解析wsdl文档获取方法与参数Java是一种流行的编程语言,它提供了多种方法来解析WSDL文档,从而获取方法和参数。

本文将分步骤阐述如何使用Java解析WSDL 文档以获取方法和参数。

1. 首先,我们需要了解什么是WSDL。

WSDL全称为Web Services Description Language,即Web服务描述语言。

它是一种XML格式的文档,用于描述Web服务的接口和相关信息。

2. 在Java中,我们可以使用JAX-WS包来解析WSDL文档。

JAX-WS是Java API for XML Web Services的缩写,它提供了一个标准的方式来创建和部署Web服务。

3. 要解析WSDL文档,我们需要创建一个JAX-WS客户端。

可以通过使用wsimport命令生成JAX-WS客户端代码,该命令将根据WSDL 文档生成客户端Java类。

4. 使用JAX-WS客户端代码,我们可以使用以下步骤来获取WSDL 文档中的方法和参数。

a. 创建一个服务对象,该对象包含服务的名称和所需的端口。

例如,以下代码片段创建了一个服务对象,该对象包含名称为“HelloService”的服务和名为“HelloPort”的端口。

```HelloService service = new HelloService();HelloPort port = service.getHelloPort();```b. 使用端口对象调用Web服务的方法。

例如,以下代码片段调用了“HelloWorld”方法,并传递了一个字符串参数。

```String response = port.HelloWorld("David");```c. 通过调用“getBinding”方法获取服务端点的绑定。

例如,以下代码片段获取服务端点的绑定。

```Binding binding = port.getBinding();```d. 通过调用“getBindingOperation”方法获取绑定操作。

java soap调用

java soap调用

java soap调用要在Java中调用SOAP服务,需要遵循以下步骤:1. 生成客户端代码:使用wsimport工具生成客户端代码,该工具可以从WSDL 文件生成Java代码,用于与SOAP服务交互。

可以通过命令行执行以下命令生成客户端代码:wsimport -s <outputDir> <wsdlUrl>其中,`<outputDir>`是生成的Java代码的输出目录,`<wsdlUrl>`是SOAP 服务的WSDL文件的URL。

2. 创建客户端代理类:在Java代码中创建客户端代理类,用于与SOAP服务进行通信。

客户端代理类需要引用生成的客户端代码,并提供方法来调用SOAP 操作。

3. 初始化SOAP服务接口:在客户端代理类中初始化SOAP服务接口。

在初始化时,需要指定SOAP服务的WSDL文件的URL,并创建服务端点终端。

4. 调用SOAP操作:通过客户端代理类提供的方法调用SOAP操作,传递适当的参数和请求消息。

可以根据需要处理返回的响应消息。

下面是一个简单的示例代码:javaimport com.example.soapclient.generated.*;public class SoapClient {public static void main(String[] args) {生成的客户端代码包名为com.example.soapclient.generated,根据实际情况修改HelloWorldService service = new HelloWorldService();HelloWorldPort port = service.getHelloWorldPort();调用SOAP操作String response = port.sayHello("World");处理响应消息System.out.println(response);}}在上面的示例中,假设生成的客户端代码包名为`com.example.soapclient.generated`,其中`HelloWorldService` 是根据WSDL 文件生成的客户端代码中的服务类,`HelloWorldPort` 是服务类中的端口类,`sayHello` 是用于调用SOAP 操作的方法。

安装使用AXIS2的WSDL2JAVA工具来生成客户端代码

安装使用AXIS2的WSDL2JAVA工具来生成客户端代码

1.为eclipse安装Axis2插件,将我提供的Axis2_Codegen_Wizard_1.4.0文件夹放到MyEclipse 6.0\eclipse\plugins 下,如果是其他版本的Eclipse则需要下载相应插件(注意:要将myeclipse关闭后重新打开才能生效)2.我的示例创建了一个名为axisClient的Web项目。

3.然后在src上New—Other。

可以看到我们配置的Axis2插件已经成功了。

然后选择Axis2 Wizards下的Axis2 Code Generator,Next。

5. /WebServices/WeatherWS.asmx?wsdl是一个提供免费天气预报服务的网络WSDL文件。

我们先打开该网页,将其中的内容另存为WSDL文件(保存的时候以.WSDL结尾)。

6.选择要生成java源文件的wsdl文件的位置。

如下图:7.选择默认即可,当然也可以自己配置,比如自己设置客户端生成应用文件的包。

8.为要生成的文件选择存放的地点。

我们将他放在我们项目的src目录下,然后Finish。

9、刷新我们的axisClient项目,右键——refresh。

然后可以看到,我们的src目录下生成了,build.xml和src.custom包,包下面有两个文件:WeatherWebServiceCallbackHandler.Java和WeatherWebServiceStub.java。

我们自己将这两个文件调整到custom下。

package custom;import java.rmi.RemoteException;import org.apache.axis2.AxisFault;import custom.WeatherWebServiceStub.GetWeatherbyCityName;import custom.WeatherWebServiceStub.GetWeatherbyCityNameResponse;public class ClientTest {public static void main(String[] args) throws RemoteException {//客户端访问类WeatherWebServiceStub wwss=new WeatherWebServiceStub();/** 因为查询天气的城市参数是GetWeatherbyCityName对象,* 所以需要实例,然后设置要查询天气的城市*/GetWeatherbyCityName gwcn=new GetWeatherbyCityName();gwcn.setTheCityName("西安");/** 查询天气* 返回GetWeatherbyCityNameResponse对象* 该对象的getGetWeatherbyCityNameResult().getString()可以返回一个包含天气信息的数组* 循环数组,输出信息*/GetWeatherbyCityNameResponse gwcnr=wwss.getWeatherbyCityName(gwcn);for(String s:gwcnr.getGetWeatherbyCityNameResult().getString()){System.out.println(s);}新版本代码如下:。

SOA练习通过myeclipse2014将wsdl文件生成javabean

SOA练习通过myeclipse2014将wsdl文件生成javabean

实验五 WSDL Web服务描述语言1、实验目的和要求(1)理解WSDL的概念及特点;(2)理解WSDL的专用术语;(3)掌握WSDL的组成元素;(4)理解抽象接口和具体实现的定义;(5)掌握WSDL的设计方法;(6)掌握从WSDL到Java类的“自上而下”的Web Service设计方法。

2、实验环境(1)PC机;(2)互联网;(3)谷歌、百度搜索引擎;(4)MyEclipse;(5)Http Analyzer。

3、实验内容(1)使用MyEclipse设计WSDL;(2)根据WSDL创建Web Service;(3)创建客户端使用Web Service;(4)侦测通信请求和响应。

4、实验实现过程模拟情景:系统分析师:需要设计一个Web Service,功能为:a)传入两个整数,返回它们的和;b)传入一个字符串,返回它的长度。

根据此要求,设计好Web Service的WSDL文档,交给开发工程师。

开发工程师:根据接收到的WSDL文档,创建相应的Java类,并完成功能的实现代码。

请认真听老师讲解以上实验过程,留意屏幕演示步骤。

主要步骤包括:(1)使用MyEclipse可视化工具设计WSDL文档,使Web Service的描述符合需求;(2)根据第(1)步生成的WSDL,使用MyEclipse创建Web Service的基本框架;(3)完成具体的实现代码;(4)部署Web Service到服务器;(5)创建Web Service客户端以检测服务运行效果;(6)必要时使用Http Analyzer侦测通信请求和响应。

建一个webservise项目,选择JAX-WS:选择新建的工程,右键new ->Other->myEclipse->Web Service->WSDL,点击Next,进入下个页面配置如下:targetNamespace把改为localhost:8080Finish以后:在圈里面的标签要添加一个方法(以为我此前已经再新建了一个方法:Plus和Len方法)改为:这里要改:选择新建的工程,右键new ->Other->myEclipse->Web Service->web Service,点击Next,进入下个页面配置如下:创建一个测试类测试:结果:代码区:WSDL:<?xml version="1.0" encoding="UTF-8" standalone="no"?><wsdl:definitions xmlns:soap="/wsdl/soap/" xmlns:tns="http://localhost:8080/webserviseTest/"xmlns:wsdl="/wsdl/"xmlns:xsd="/2001/XMLSchema" name="webserviseTest" targetNamespace="http://localhost:8080/webserviseTest/"><wsdl:types><xsd:schema targetNamespace="http://localhost:8080/webserviseTest/"> <xsd:element name="Plus"><xsd:complexType><xsd:sequence><xsd:element name="x" type="xsd:float" /><xsd:element name="y" type="xsd:float"></xsd:element></xsd:sequence></xsd:complexType></xsd:element><xsd:element name="PlusResponse"><xsd:complexType><xsd:sequence><xsd:element name="sum" type="xsd:float"/></xsd:sequence></xsd:complexType></xsd:element><xsd:element name="Len"><xsd:complexType><xsd:sequence><xsd:element name="str" type="xsd:string"></xsd:element> </xsd:sequence></xsd:complexType></xsd:element><xsd:element name="LenResponse"><xsd:complexType><xsd:sequence><xsd:element name="len" type="xsd:int"></xsd:element> </xsd:sequence></xsd:complexType></xsd:element></xsd:schema></wsdl:types><wsdl:message name="PlusRequest"><wsdl:part element="tns:Plus" name="parameters"/></wsdl:message><wsdl:message name="PlusResponse"><wsdl:part element="tns:PlusResponse" name="parameters"/></wsdl:message><wsdl:message name="LenRequest"><wsdl:part name="parameters" element="tns:Len"></wsdl:part></wsdl:message><wsdl:message name="LenResponse"><wsdl:part name="parameters" element="tns:LenResponse"></wsdl:part></wsdl:message><wsdl:portType name="webserviseTest"><wsdl:operation name="Plus"><wsdl:input message="tns:PlusRequest"/><wsdl:output message="tns:PlusResponse"/></wsdl:operation><wsdl:operation name="Len"><wsdl:input message="tns:LenRequest"></wsdl:input><wsdl:output message="tns:LenResponse"></wsdl:output> </wsdl:operation></wsdl:portType><wsdl:binding name="webserviseTestSOAP" type="tns:webserviseTest"><soap:binding style="document"transport="/soap/http"/><wsdl:operation name="Plus"><soap:operation soapAction="http://localhost:8080/webserviseTest/Plus"/> <wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation><wsdl:operation name="Len"><soap:operation soapAction="http://localhost:8080/webserviseTest/Len"/><wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="webserviseTest"><wsdl:port binding="tns:webserviseTestSOAP" name="webserviseTestSOAP"> <soap:addresslocation="http://localhost:8080/wsdlToJavabeanTest/webserviseTestSOAP"/> </wsdl:port></wsdl:service></wsdl:definitions>WebServiceTest类:package com.ren.wsdlToJavabeanTest;import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;import javax.xml.ws.RequestWrapper;import javax.xml.ws.ResponseWrapper;@WebService(name = "webserviseTest", targetNamespace ="http://localhost:8080/webserviseTest/")public interface WebserviseTest {/**** @param y* @param x* @return returns float*/@WebMethod(operationName = "Plus", action ="http://localhost:8080/webserviseTest/Plus")@WebResult(name = "sum", targetNamespace = "")@RequestWrapper(localName = "Plus", targetNamespace ="http://localhost:8080/webserviseTest/", className ="com.ren.wsdlToJavabeanTest.Plus")@ResponseWrapper(localName = "PlusResponse", targetNamespace = "http://localhost:8080/webserviseTest/", className ="com.ren.wsdlToJavabeanTest.PlusResponse")public float plus(@WebParam(name = "x", targetNamespace = "") float x,@WebParam(name = "y", targetNamespace = "") float y);/**** @param str* @return returns int*/@WebMethod(operationName = "Len", action ="http://localhost:8080/webserviseTest/Len")@WebResult(name = "len", targetNamespace = "")@RequestWrapper(localName = "Len", targetNamespace ="http://localhost:8080/webserviseTest/", className ="com.ren.wsdlToJavabeanTest.Len")@ResponseWrapper(localName = "LenResponse", targetNamespace = "http://localhost:8080/webserviseTest/", className ="com.ren.wsdlToJavabeanTest.LenResponse")public int len(@WebParam(name = "str", targetNamespace = "") String str); }webserviseTestSOAPImpl类:package com.ren.wsdlToJavabeanTest;import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;import javax.xml.ws.RequestWrapper;import javax.xml.ws.ResponseWrapper;@javax.jws.WebService(endpointInterface ="com.ren.wsdlToJavabeanTest.WebserviseTest", targetNamespace ="http://localhost:8080/webserviseTest/", serviceName = "webserviseTest", portName = "webserviseTestSOAP")public class webserviseTestSOAPImpl {public float plus(float x, float y) {// TODO Auto-generated method stub//throw new UnsupportedOperationException("Not implemented yet.");return x+y;}public int len(String str) {// TODO Auto-generated method stub//throw new UnsupportedOperationException("Not implemented yet.");return str.length();}}Test类:package com.ren.wsdlToJavabeanTest;public class Test {public static void main(String[] args) {WebserviseTest_Service service=new WebserviseTest_Service();WebserviseTest ws=service.getWebserviseTestSOAP();System.out.println(ws.plus(1, 1));System.out.println(ws.len("student"));}}。

生成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。

soap服务端wsdl生成java代码及部署

soap服务端wsdl生成java代码及部署

soap服务端wsdl⽣成java代码及部署环境:eclipse3.7 + Tomcat7.0.29 + axis(eclipse⾃带,1.x系列)新建⼀个dynamic Web Project如果eclipse仅仅安装Tomcat的话,可以忽略这个主意事项。

否则,在Target runtime 选项选择Tomcat或者None(因为选择其他服务器的话,从wsdl⽆法反向⽣成java)右键项⽬,new-->other-->web services-->wsdl filenext 输⼊⽂件名, next在Target namespace 输⼊命名空间,/soap(这个决定你反向⽣成java⽂件所在的包,反向⽣成java后的包名为com.test.soap)⾄于soap binding普遍采⽤document,rpc的好像⽐较⿇烦。

点击finishwsdl⽂件design视图,⼀般通过更改这个视图来改wsdl,改源码太⿇烦了,由于这篇博客主要讲部署问题,所以soap不谈,需要的话请看,endpoint可以不⽤改,改了我也不知道会咋样。

右键⼯程,new-->other-->web services-->web service-->nextweb service type 选择Top down java bean Web service (down那个是⽤java类⽣成soap服务的)service service difinition :wsdl所在位置服务我选deploy service(由于第⼀次认真接触这个,其他的不知道啥作⽤) service旁边的Configuration 点击相应的项,server runtime选择Tomcat ,web service runtime选择Axis,不选Axis2(Axis2配置⽐较繁琐,同事说⽤Axis即Axis1.x系列) service project:选择你的项⽬⾄于client 选择no client ⼀般默认如果之前新建项⽬时的Target runtime不是tomcat或者none,此时就会报错。

SoapUI测试工具WSDL文件生成

SoapUI测试工具WSDL文件生成

SoapUI测试工具WSDL文件生成
最近找到一款测试工具SoapUI--接口测试工具,觉得挺不错。

所以粗略的研究了一下,在此特地总结了一下。

使用SOAPUI测试工具时,谈到最多的是导入WSDL文件新建工程。

由于对开发不熟,所以一直纠结如何生成WSDL文件这个问题。

后来,终于找到了WSDL文件的生成方式,使用Eclipse或者PHP_ZendStudio。

1.启动Eclipse工具导入项目工程
2.选择File->New->Other,选择Web Services中WSDL,点击Next
3.选择目标文件父目录,并新建wsdl文档名称;如下图
4.点击Next并至Finish
5.点击Finish完成后,进入如下界面
6.用户可自行编辑设置测试步骤项。

7.WSDL文件生成后,可按SOAPUI用户手册进行导入并进行测试。

java使用CXF将wsdl文件生成客户端代码命令java调用第三方的webservice应用实例

java使用CXF将wsdl文件生成客户端代码命令java调用第三方的webservice应用实例
博主你好请教你个问题我用这个也进行了数据校验我自己写了一个之前校验的时候还好好的但是今天突然注解就不起作用了debug也不进我写的个类了这具体是什么原因导致的啊谢谢
java使用 CXF将 wsdl文件生成客户端代码命令 java调用第三方的 webservice应 用 实 例
cxf生成客户端代码 3、使用wsdl2java命令生成客户端代码 在命令行执行wsdl2java -p org.logink.ws -d f:\logink\src -all E:\wsdl3.1-credit\LogisticsCreditService\LogisticsCreditService.wsdl
wsdl2java用法: wsdl2java -p com -d src -all aa.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.
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用java程序生成WSDL文件1.先写一个简单的java程序
2.先生成WSDL文件以下为流程图
下一步:
下一步:
选择相应的classes:
下一步:
完成:
成功生成WSDL文件
3.然后根据WSDL文件生成java客户端测试代码
下一步:
下一步:
完成:
然后继续重复上次动作到:
这次选择这样:
然后按照上次的顺序做法完成结果如下:
但是为什么会出错呢别急这是我们没有引入axis2 jar包
然后就成功了
4.然后写入测试的代码:
如下图:
然后写Main函数调用这个测试:
然后运行可以看到运行成功:
如果想发布在第一次实验做过了在此我就不演示了。

相关文档
最新文档