发布一个WebService服务:

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自动)刷新项目,可以看到已经生成了代码

另一种方法:使用Axis2

1、在当前项目的pom.xml中添加下述依赖

<!-- axis 1.4 jar start -->
        <dependency>
            <groupId>org.apache.axis</groupId>
            <artifactId>axis</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>commons-discovery</groupId>
            <artifactId>commons-discovery</artifactId>
            <version>0.2</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.axis</groupId>
            <artifactId>axis-jaxrpc</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis</groupId>
            <artifactId>axis-saaj</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>wsdl4j</groupId>
            <artifactId>wsdl4j</artifactId>
            <version>1.4</version>
        </dependency>
        <!-- axis 1.4 jar end -->

    在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.

    缺少mail.jar,在tomcat的lib中找到mail-1.4.jar复制到client的lib中。重新运行,警告消失

部分内容参考自:https://blog.csdn.net/qazwsxpcm/article/details/70370490

-->axis2-kernel-1.6.1.jar -->axis2-spring-1.6.1.jar -->axis2-transport-http-1.6.1.jar -->XmlSchema-1.4.7.jar -->wsdl4j-1.6.2.jar -->axiom-api-1.2.12.jar -->axiom-impl-1.2.12.jar -->neethi-3.0.1.jar -->axis2-transport-local-1.6.1.jar -->commons-httpclient-3.1.jar -->axis2-jaxws-1.6.1.jar -->spring.jar -->commons-logging-1.1.1.jar axis2 webservice client端jar包 -->axis2-kernel-1.6.1.jar -->axis2-adb-1.6.1.jar -->axiom-api-1.2.12.jar -->commons-logging-1.1.1.jar -->wsdl4j-1.6.2.jar -->XmlSchema-1.4.7.jar -->axiom-impl-1.2.12.jar -->neethi-3.0.1.jar -->axis2-transport-local-1.6.1.jar -->axis2-transport-http-1.6.1.jar -->commons-httpclient-3.1.jar -->httpcore-4.0.jar -->commons-codec-1.3.jar 在使用Idea根据wsdl自动生成java code的时候;抛出无法找到主类:org.apache.axis.wsdl.WSDL2Java(Throws Could not find main class: org.apache.axis.wsdl.WSDL2Java)。 添加本文的jar包压缩包解压出来的所有jar包到当前使用的java.exe 命令的lib目录下的ext目录中即可解决。 调用WSDL2Java需要相关jars,使用-cp添加进来,不支持使用通配符。提醒:Linux下jar之间使用冒号隔开:,windows下jar之间使用分号隔开 java -cp mail-1.4.jar;saaj-api-1.3.jar;jaxrpc-1.1.jar;commons-discovery-0.2.jar;commons-logging-1.1.jar;axis-1.4.jar;activation-1.1.jar;wsdl4j-1.4.jar org.apache.axis.wsdl.WSDL2Java http://*.*.*.*/SMSWebService/services/sigMessageServices?wsdl 乱码是因为文件编码不一致,Win10默认字符编码为936(GBK),导致IDEA根据wsdl生成java文件编码为GBK,而如果IDEA设置了全局/项目编码为UTF-8,这时打开文件就会乱码。可修改IDEA配置,单独将乱码文件配置为GBK也能解决乱码问题,但是文件太多时很不方便。可借助EmEditor文本编辑器统一将所有选中的GBK文件转为UTF-8。 Axis 1.4依赖jar包Maven配置文件<!-- axis 1.4 jar start --> <dependency> <groupId>org.apache.axis</groupId> <artifactId>axis</artifactId> <version>1.4</version>    WebService概念:它可以让一个程序透明的调用互联网程序,不用管具体实现细节,只要WebService公开了服务接口,远程客户端就可以调用服务。Webservice基于HTTP协议,它是分布式应用程序的发展趋势。    Apache Axis是一个开源的WebSerbive运行引擎,现在拥有1.x和2.x两个版本。本文讲解Axis2.x版本,该版本较Axis1.x版本在体系结构上进行了重写,具有更高的效率、更加模块化也更加面向XML。Axis应该是最早一批SOAP(简单对象访问协议),该协议提供 POST /服务名.asmx HTTP/1.1 Host: 接口地址(x.x.x.x)(url :接口地址/服务名.asmx) Content-Type: text/xml; charset=utf-8 Content-Length: le... 解决:java.lang.ClassNotFoundException: org.apache.axis.wsdl.WSDL2Java一·问题描述:1.idea解析wsdl文件失败,报错如图所示:二·报错原因:三·解决办法: 一·问题描述: 1.idea解析wsdl文件失败,报错如图所示: 二·报错原因: idea的WebService Client工具解析wsdl文件,缺少相关的jar包 三·解决办法: 参考这个文章:IDEA如何解析wsdl文件为Java源代码 https://blog.csdn.ne webService 调用服务端 // 需要导入的axis.jar包, org.apache.axis.client.Service service = new Service(); //生成客户端 org.apache.axis.client.Call call = (Call)service.createCall(); //设置服务地址,指明远程调用的类, 设置url call.setTargetEndpointAddress(new URL(url字符串)); //设置是否使用SoapAc 突然之间要用JAVAwebservice 的接口,用Eclipse 和 axis1.4 结合来自动生成JAVA代码非常方便。1. 下载 axis1.4 相关包,解压后取得其中lib 下的所有JAR包,并导入ECLIPSE工程中。2. 取得服务端提供的 wsdl 描述文件。3. 在工程中运行 axis 包中的 wsdl2java :org.apache.axis.wsdl.WSDL2Java并设... WSDL2Java操作指南 1. 安装JDK1.5, 配置系统环境变量:<br />   下载安装JDK后, 设置环境变量:<br />   JAVA_HOME=C:/Program Files/Java/jdk1.5.0_02<br />   Path=%Path%;%JAVA_HOME%/bin(这里的%Path%指你系统已经有的一系列配置)<br />   CLASSPATH=%JAVA_HOME%/lib2. 下载axis, 配置系统环境变量:<br />   下载axis后,配置如下:<br /> 本文是Apache Axis的用户指南的第一部分。笔者在学习的过程中,作为记录,简单的翻译了一下。笔者已经翻译了Apache Axis的安装及应用文档,也谈不上翻译,只是笔者在学习的过程中,将笔者认为重要的部分作为记录,并加以笔者实践的结果。建议在阅读本文之前先阅读Apache Axis安装指南。0.介绍SOAP:SOAP是基于XML的通信协议和编码格式,它用于交互应用程序通信。现在的