a,在类上添加@WebService注解
(注:此注解是jdk1.6提供的,位于javax.jws.WebService包中)
b,通过EndPoint(端点服务)发布一个WebService
(注:EndPoint是jdk提供的一个专门用于发布服务的类,该类的publish方法接收两个参数,一个是本地的服务地址,二是提供服务的类。位于 javax.xml.ws.Endpoint包中)
c,注: 类上添加注解@WebService,类中所有非静态方法都会被发布;
静态方法和final方法不能被发布;
方法上加@WebMentod(exclude=true)后,此方法不被发布;
已通过Endpoint发布了一个端点服务WebService,运行编译该class,在浏览器中输入正确的wsdl地址(url:http://172.11.1.111:8080/?wsdl)返回xml
这个xml的阅读方式:
1)先找service节点:每个wsdl中,有且只有一个service节点。也叫服务视图节点。service中有port节点服务端端口。
2)根据port节点的binding属性找binding节点。根据binding节点的type属性找portType节点。
3)portType节点就是我们定义的SEI服务的接口类型。Prottype中的operation 节点就是方法名称。
4)operation 节点的input就是参数的定义,output就是返回值的定义。
5)Input有个属性叫做message,message属性对应message节点。其中有一个element,对应element节点。
6)Element节点定义中xsd中。定义了数据的类型。参数和返回值都在其中定义。
想通过?wsdl生成WebService,调用WebService的方法。
1、选择生成的代码存放位置,可以新建一个项目或者放在当前项目下(仅作测试用)
2、打开cmd,在dos命令下输入 wsimport -s “src目录” -p “生成类所在包名” -keep “wsdl发布地址”
示例:wsimport -s D:\Wordspace\MyTest\webservice\src -p main.com.client -keep http://172.11.1.111:8080/?wsdl
一般src的下一层包是main、test等包,所以这里“生成类所在包名”要加上main这一层
3、成功则返回 parsing WSDL…
generating code…
compiling code…
4、(IDEA自动)刷新项目,可以看到已经生成了代码
1、在当前项目的pom.xml中添加下述依赖
org.apache.axis
axis
1.4
commons-discovery
commons-discovery
0.2
commons-logging
commons-logging
org.apache.axis
axis-jaxrpc
1.4
org.apache.axis
axis-saaj
1.4
wsdl4j
wsdl4j
1.4
在IDEA的项目package右键-->WebServices-->Generate Wsdl From Java Code,这个“Generate Wsdl From Java Code”也可以生成代码,而且跟用命令行生成的很像,但是用这个方法生成的代码到后面调用WebService接口的时候执行失败。我觉得这个方法也可以,但实际上不行,不知道哪里出错了。
接下来的操作照着图来,下面是解释:
Web service wsdl url:在浏览器输入能正确返回xml的wsdl地址
Output pahe和Package prefix是指定生成的文件放的位置
Web Service Platform:这里选择Apache Axis
Allow extensions :允许扩展
Generate TestCase:生成xxxServiceTestCase.java文件
Generate classes for schema arrays:从概要数组里生成class文件
Generate unreferenced elements:生成未引用的元素
Support wrapped document/literal style:支持document/literal类型的包装
extends是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法;
implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用
1、在项目的package右键
2、勾选Generate classes for schema arrays或者Generate unreferenced elements,其它随意,就能生成
主要是GetValue和GetValueResponse,其它类不管你勾选什么或者不勾选,都会自动生成
点击OK之后,发现无法下载,报错,一开始是找不到main,缺少了axis.jar,添加了之后又报找不到某一个class,另一个jar,接连手动添加了几个,猜测是缺少了jar,最后搜到某博客才引入了完整的maven 依赖,解决了问题点击进入该博客
虽然需要的类是下载下来了,但是会有警告
Jan 17, 2019 3:10:57 PM org.apache.axis.utils.JavaUtils isAttachmentSupported
WARNING: Unable to find required classes (javax.activation.DataHandler
and javax.mail.internet.MimeMultipart). Attachment support is disabled.
Done
缺少mail.jar,在tomcat的lib中找到mail-1.4.jar复制到client的lib中。重新运行,警告消失
部分内容参考自:https://blog.csdn.net/qazwsxpcm/article/details/70370490