2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

时间:2023-03-08 17:59:59
2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

1. 准备:创建一个Maven Web App 项目

这里让我们使用Maven 模板创建一个Web App 项目

1. New------> Maven Project

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

2. 使用默认配置,点击Next

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

3. Catelog 选择Internal ,Filter  输入webappp

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

4.输入组织Id 和包名点击下一步

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

5. 点击Finished 之后我们可以看到这样一个目录结构

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

注意:

红色报错是因为没有引入servlet-api.jar,我们稍后处理

由于这个模板文件比较陈旧,因此我们需要做个修改。

6.Package 视图下,项目右键——Build Path -----> Configure Build Path...

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

7. 切换到Libraries 视图,点击Remove ,移除这个陈旧的JRE 依赖类库

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

8.点击添加类库

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

9. 选中JRE System Library

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

10.选中工作空间默认的JRE,点击Finished ,关闭对话框。

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

11. 之后会自动变成这样的目录结构

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

Tips:

我们可以对比看到比之前多了两个文件夹

src/main/java

src/main/test 文件夹

12. 下载 Axis2.war 样例模板

http://axis.apache.org/axis2/java/core/download.html

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

13.下载后用好压将这个*.war 解压,

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

14. WEB-INF/lib 目录下有一些说明文件,我们需要删掉,只留下*.jar 即可

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

15.用命令行进入这个解压目录,我们需要删除所有的*.txt 文件,输入以下dos 命令即可

del *.txt

执行效果如下:

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

16. 我们可以看到所有的txt 文件已经被删掉了

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

17. 复制所有解压的文件到刚才创建的项目webapp 文件夹下

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

最后将WEB-INF/lib 下的jar 添加到build path 中就可以了。

当然也可以使用Maven 来管理,我花了点时间整理了下,贴出来

POM.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xingyun</groupId>
<artifactId>axis2-webapp-pojo-sample</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>axis2-webapp-pojo-sample Maven Webapp</name>
<url>http://maven.apache.org</url> <!-- 该项目支持Tomcat 7.0 + JDK1.8+ -->
<dependencies>
<!-- Axis2 Framework start -->
<!-- activation-1.1.jar -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>${activation.version}</version>
</dependency> <!-- antlr-2.7.7.jar https://mvnrepository.com/artifact/antlr/antlr -->
<dependency>
<groupId>antlr</groupId>
<artifactId>antlr</artifactId>
</dependency> <!-- apache-mime4j-core-0.7.2 https://mvnrepository.com/artifact/org.apache.james/apache-mime4j-core -->
<dependency>
<groupId>org.apache.james</groupId>
<artifactId>apache-mime4j-core</artifactId>
<version>${apache.mime4j.core.version}</version>
</dependency> <!-- axiom axiom-api-1.2.21.jar -->
<dependency>
<groupId>org.apache.ws.commons.axiom</groupId>
<artifactId>axiom-api</artifactId>
<version>${axiom.version}</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- axiom-dom-1.2.21.jar -->
<dependency>
<groupId>org.apache.ws.commons.axiom</groupId>
<artifactId>axiom-dom</artifactId>
<version>${axiom.version}</version>
</dependency> <!-- axiom-impl-1.2.21.jar -->
<dependency>
<groupId>org.apache.ws.commons.axiom</groupId>
<artifactId>axiom-impl</artifactId>
<version>${axiom.version}</version>
</dependency> <!-- axiom-jaxb-1.2.21.jar -->
<dependency>
<groupId>org.apache.ws.commons.axiom</groupId>
<artifactId>axiom-jaxb</artifactId>
<version>${axiom.version}</version>
</dependency> <!-- axis2 axiom-adb-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-adb</artifactId>
<version>${axis2.version}</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- axis2-clustering-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-clustering</artifactId>
<version>${axis2.version}</version>
</dependency> <!-- axis2-codegen-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-codegen</artifactId>
<version>${axis2.version}</version>
</dependency> <!-- axis2-corba-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-corba</artifactId>
<version>${axis2.version}</version>
</dependency> <!-- axis2-fastinfoset-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-fastinfoset</artifactId>
<version>${axis2.version}</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- axis2-jaxbri-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-jaxbri</artifactId>
<version>${axis2.version}</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- axis2-jaxws-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-jaxws</artifactId>
<version>${axis2.version}</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- axis2-jibx-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-jibx</artifactId>
<version>${axis2.version}</version>
<exclusions>
<exclusion>
<groupId>org.jibx</groupId>
<artifactId>jibx-bind</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.code.findbugs</groupId>
<artifactId>bcel-findbugs</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- axis2-json-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-json</artifactId>
<version>${axis2.version}</version>
</dependency> <!-- axis2-kernel-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-kernel</artifactId>
<version>${axis2.version}</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- axis2-metadata-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-metadata</artifactId>
<version>${axis2.version}</version>
</dependency> <!-- axis2-mtompolicy-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-mtompolicy</artifactId>
<version>${axis2.version}</version>
</dependency> <!-- axis2-saaj-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-saaj</artifactId>
<version>${axis2.version}</version>
</dependency> <!-- axis2-soapmonitor-servlet-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-soapmonitor-servlet</artifactId>
<version>${axis2.version}</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- axis2-spring-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-spring</artifactId>
<version>${axis2.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- axis2-transport-base-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-base</artifactId>
<version>${axis2.version}</version>
</dependency> <!-- axis2-transport-http-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-http</artifactId>
<version>${axis2.version}</version>
</dependency> <!-- axis2-transport-jms-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-jms</artifactId>
<version>${axis2.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jms_1.1_spec</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jta_1.0.1B_spec</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- axis2-transport-local-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-local</artifactId>
<version>${axis2.version}</version>
</dependency> <!-- axis2-transport-mail-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-mail</artifactId>
<version>${axis2.version}</version>
</dependency> <!-- axis2-transport-tcp-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-tcp</artifactId>
<version>${axis2.version}</version>
</dependency> <!-- axis2-transport-udp-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-udp</artifactId>
<version>${axis2.version}</version>
</dependency> <!-- axis2-transport-xmpp-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-transport-xmpp</artifactId>
<version>${axis2.version}</version>
<exclusions>
<exclusion>
<groupId>jivesoftware</groupId>
<artifactId>smack</artifactId>
</exclusion>
<exclusion>
<groupId>jivesoftware</groupId>
<artifactId>smackx</artifactId>
</exclusion>
<exclusion>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- axis2-xmlbeans-1.7.9.jar -->
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-xmlbeans</artifactId>
<version>${axis2.version}</version>
</dependency> <!-- Common Codec commons-codec-1.2.jar https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency> <!-- commons-fileupload-1.3.3.jar https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons.fileupload.version}</version>
</dependency> <!-- commons-httpclient-3.1.jar https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient -->
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>${commons.httpclient.version}</version>
</dependency> <!-- commons-io-2.1.jar https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons.io.version}</version>
</dependency> <!-- commons-logging-1.1.1.jar https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>${commons.logging.version}</version>
</dependency> <!-- geronimo-annotation_1.0_spec-1.1.jar https://mvnrepository.com/artifact/org.apache.geronimo.specs/geronimo-annotation_1.0_spec -->
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-annotation_1.0_spec</artifactId>
<version>${geronimo.annotation.1.0.spec.version}</version>
</dependency> <!-- geronimo-jaxws_2.2_spec-1.0.jar https://mvnrepository.com/artifact/org.apache.geronimo.specs/geronimo-jaxws_2.2_spec -->
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jaxws_2.2_spec</artifactId>
<version>${geronimo.jaxws.2.2.spec.version}</version>
</dependency> <!-- geronimo-jta_1.1_spec-1.1.jar https://mvnrepository.com/artifact/org.apache.geronimo.specs/geronimo-jta_1.1_spec -->
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jta_1.1_spec</artifactId>
<version>${geronimo.jta.1.1.spec.version}</version>
</dependency> <!-- geronimo-saaj_1.3_spec-1.0.1.jar https://mvnrepository.com/artifact/org.apache.geronimo.specs/geronimo-saaj_1.3_spec -->
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-saaj_1.3_spec</artifactId>
<version>${org.apache.geronimo.specs.version}</version>
</dependency> <!-- geronimo-stax-api_1.0_spec-1.0.1.jar https://mvnrepository.com/artifact/org.apache.geronimo.specs/geronimo-stax-api_1.0_spec -->
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-stax-api_1.0_spec</artifactId>
<version>${org.apache.geronimo.specs.version}</version>
</dependency> <!-- geronimo-ws-metadata_2.0_spec-1.1.2.jar https://mvnrepository.com/artifact/org.apache.geronimo.specs/geronimo-ws-metadata_2.0_spec -->
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-ws-metadata_2.0_spec</artifactId>
<version>${geronimo.ws.metadata.2.0.spec.version}</version>
</dependency> <!-- gson-2.1.jar https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency> <!-- httpclient-4.5.3.jar https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency> <!-- httpcore-4.4.6.jar https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
</dependency> <!-- jaxb-api-2.2.6.jar https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
</dependency> <!-- jaxb-impl-2.2.6.jar https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl -->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>${com.sun.xml.bind.version}</version>
</dependency>
<!-- jaxb-xjc-2.2.6.jar https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-xjc -->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>${com.sun.xml.bind.version}</version>
</dependency> <!-- jaxen-1.1.6.jar https://mvnrepository.com/artifact/jaxen/jaxen -->
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
</dependency> <!-- jaxws-tools-2.2.6.jar https://mvnrepository.com/artifact/com.sun.xml.ws/jaxws-tools -->
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-tools</artifactId>
<version>${com.sun.xml.bind.version}</version>
<exclusions>
<exclusion>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- jettison-1.3.8.jar https://mvnrepository.com/artifact/org.codehaus.jettison/jettison -->
<dependency>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
<version>${jettison.version}</version>
<exclusions>
<exclusion>
<groupId>stax</groupId>
<artifactId>stax-api</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- jibx-run-1.2.jar https://mvnrepository.com/artifact/org.jibx/jibx-run -->
<dependency>
<groupId>org.jibx</groupId>
<artifactId>jibx-run</artifactId>
<version>${jibx.run.version}</version>
<exclusions>
<exclusion>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>wstx-asl</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- jsr311-api-1.1.1.jar https://mvnrepository.com/artifact/javax.ws.rs/jsr311-api -->
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>${jsr311.api.version}</version>
</dependency> <!-- juli-6.0.53.jar https://mvnrepository.com/artifact/org.apache.tomcat/juli -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>juli</artifactId>
<version>${juli.version}</version>
</dependency> <!-- log4j-1.2.15.jar https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
<exclusions>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- mail-1.4.jar https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>${mail.version}</version>
</dependency> <!-- mex-1.7.9-impl.jar private jar neethi-3.0.3.jar https://mvnrepository.com/artifact/org.apache.neethi/neethi -->
<dependency>
<groupId>org.apache.neethi</groupId>
<artifactId>neethi</artifactId>
<version>${neethi.version}</version>
</dependency> <!-- stax2-api-3.1.1.jar https://mvnrepository.com/artifact/org.codehaus.woodstox/stax2-api -->
<dependency>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>stax2-api</artifactId>
<version>${stax2.api.version}</version>
<exclusions>
<exclusion>
<groupId>javax.xml.stream</groupId>
<artifactId>stax-api</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- taglibs-standard-impl-1.2.5.jar https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl -->
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
<version>${org.apache.taglibs.version}</version>
</dependency> <!-- taglibs-standard-spec-1.2.5.jar https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl -->
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-spec</artifactId>
<version>${org.apache.taglibs.version}</version>
</dependency> <!-- tribes-6.0.53.jar https://mvnrepository.com/artifact/org.apache.tomcat/tribes -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tribes</artifactId>
<version>${tribes.version}</version>
</dependency> <!-- woden-core-1.0M10.jar https://mvnrepository.com/artifact/org.apache.woden/woden-core -->
<dependency>
<groupId>org.apache.woden</groupId>
<artifactId>woden-core</artifactId>
<version>${woden.core.version}</version>
<exclusions>
<exclusion>
<groupId>javax.xml.stream</groupId>
<artifactId>stax-api</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- woodstox-core-asl-4.2.0.jar https://mvnrepository.com/artifact/org.codehaus.woodstox/woodstox-core-asl -->
<dependency>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>woodstox-core-asl</artifactId>
<version>${woodstox.core.asl.version}</version>
<exclusions>
<exclusion>
<groupId>javax.xml.stream</groupId>
<artifactId>stax-api</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- wsdl4j-1.6.2.jar https://mvnrepository.com/artifact/wsdl4j/wsdl4j -->
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
</dependency> <!-- xalan-2.7.0.jar https://mvnrepository.com/artifact/xalan/xalan -->
<dependency>
<groupId>xalan</groupId>
<artifactId>xalan</artifactId>
<version>${xalan.version}</version>
<exclusions>
<exclusion>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- xmlbeans-2.6.0.jar https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans -->
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>${xmlbeans.version}</version>
<exclusions>
<exclusion>
<groupId>stax</groupId>
<artifactId>stax-api</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- xml-resolver-1.2.jar https://mvnrepository.com/artifact/xml-resolver/xml-resolver -->
<dependency>
<groupId>xml-resolver</groupId>
<artifactId>xml-resolver</artifactId>
<version>${xml.resolver.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.ws.xmlschema</groupId>
<artifactId>xmlschema-core</artifactId>
</exclusion>
</exclusions>
</dependency> <!-- xmlschema-core-2.2.1.jar https://mvnrepository.com/artifact/org.apache.ws.xmlschema/xmlschema-core -->
<dependency>
<groupId>org.apache.ws.xmlschema</groupId>
<artifactId>xmlschema-core</artifactId>
<version>${xmlschema.core.version}</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies> <dependencyManagement>
<!-- 解决版本冲突 -->
<dependencies>
<dependency>
<groupId>antlr</groupId>
<artifactId>antlr</artifactId>
<version>2.7.7</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.2.6</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.6</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.6</version>
</dependency>
</dependencies>
</dependencyManagement> <!-- config -->
<properties>
<java.version>1.8</java.version>
<antlr2.version>2.7.7</antlr2.version>
<activation.version>1.1</activation.version>
<axis2.version>1.7.9</axis2.version>
<axiom.version>1.2.21</axiom.version>
<apache.mime4j.core.version>0.7.2</apache.mime4j.core.version>
<commons.fileupload.version>1.3.3</commons.fileupload.version>
<commons.httpclient.version>3.1</commons.httpclient.version>
<commons.io.version>2.1</commons.io.version>
<xmlschema.core.version>2.2.1</xmlschema.core.version>
<xml.resolver.version>1.2</xml.resolver.version>
<xmlbeans.version>2.6.0</xmlbeans.version>
<xalan.version>2.7.0</xalan.version>
<woodstox.core.asl.version>4.2.0</woodstox.core.asl.version>
<woden.core.version>1.0M10</woden.core.version>
<tribes.version>6.0.53</tribes.version>
<org.apache.taglibs.version>1.2.5</org.apache.taglibs.version>
<stax2.api.version>3.1.1</stax2.api.version>
<neethi.version>3.0.3</neethi.version>
<mail.version>1.4</mail.version>
<log4j.version>1.2.15</log4j.version>
<juli.version>6.0.53</juli.version>
<jsr311.api.version>1.1.1</jsr311.api.version>
<jibx.run.version>1.2</jibx.run.version>
<jettison.version>1.3.8</jettison.version>
<geronimo.ws.metadata.2.0.spec.version>1.1.2</geronimo.ws.metadata.2.0.spec.version>
<com.sun.xml.bind.version>2.2.6</com.sun.xml.bind.version>
<org.apache.geronimo.specs.version>1.0.1</org.apache.geronimo.specs.version>
<geronimo.jta.1.1.spec.version>1.1</geronimo.jta.1.1.spec.version>
<geronimo.jaxws.2.2.spec.version>1.0</geronimo.jaxws.2.2.spec.version>
<geronimo.annotation.1.0.spec.version>1.1</geronimo.annotation.1.0.spec.version>
<commons.logging.version>1.1.1</commons.logging.version>
</properties>
<!-- Build Config -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

可以先发布到tomcat 容器中

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

到这里第一步准备就完成了。

2. 了解 Axis2 Service 目录结构

Axis2的服务器端可以部署在任何Servlet引擎上,站看我们刚才创建的项目可以看到如下项目结构:

代码清单2:axis2.war的目录结构

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

注意:

最重要的是 axis2.xml,它控制应用程序如何处理收到的消息,确定Axis2是否需要应用modules目录中定义的任何模块。

Axis2 管理控制台的登陆账号密码也在这个配置文件里面。

services 文件夹下可以放*.aar 文件,也可以放services.xml 文件

3. 部署POJO

方法一:通过ANT 生成 WSDL 文件

安装配置ANT

接下来我们还需要安装下Ant, 因为待会要通过ANT命令构建我们的Web Service.

1. 打开Ant 官网:https://ant.apache.org/bindownload.cgi

2. 我们可以看到当前可能是这样的,我们下载最新版本。

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

Tips: 由于是windows 系统演示,因此我摸下载的是图中所示的zip,如果是linux 系统可以下载 tar.xz 格式

3. 配置环境变量

新建一个系统环境变量

ANT_HOME
C:\Apps\apache-ant\apache-ant-1.10.5

如图所示:

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

添加到Path 中

%ANT_HOME%\bin\

如图所示:

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

验证:

ant -version

安装成功会像这样

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service


ANT编译生成WSDL

要使用POJO(Plain Old Java Objects)部署服务,请执行以下步骤。

注意:这里我们使用官方给的样例源码中来演示

解压下载的二进制文件,比如我的存放位置如下:

E:\open-source\axis2\axis2-1.7.9-bin\axis2-1.7.9\samples

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

我们打开那个quickstart 文件夹,命令行进入这个文件夹:

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

前面我们已经安装配置好了ant 构建工具,因此这里只需要在命令行下通过键入以下内容就可以从quickstart目录生成WSDL:

ant generate.wsdl

执行成功会显示如下:

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

我们可以看到多了一个build 文件夹

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

点进去可以看到有一个WSDL 文件(WSDL,  Web Services Description Language的简写 )

这个文件是 StockQuoteSevice.java Web Service 的描述文件

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

打开这个文件可以看下

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns="http://quickstart.samples/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:tns="http://quickstart.samples/" targetNamespace="http://quickstart.samples/">
<wsdl:types>
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://quickstart.samples/xsd">
<xs:element name="update">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="" name="symbol" nillable="true" type="xs:string"/>
<xs:element name="price" type="xs:double"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getPrice">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="" name="symbol" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getPriceResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="return" type="xs:double"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name="updateRequest">
<wsdl:part name="parameters" element="ns:update"/>
</wsdl:message>
<wsdl:message name="getPriceRequest">
<wsdl:part name="parameters" element="ns:getPrice"/>
</wsdl:message>
<wsdl:message name="getPriceResponse">
<wsdl:part name="parameters" element="ns:getPriceResponse"/>
</wsdl:message>
<wsdl:portType name="StockQuoteServicePortType">
<wsdl:operation name="update">
<wsdl:input message="tns:updateRequest" wsaw:Action="urn:update"/>
</wsdl:operation>
<wsdl:operation name="getPrice">
<wsdl:input message="tns:getPriceRequest" wsaw:Action="urn:getPrice"/>
<wsdl:output message="tns:getPriceResponse" wsaw:Action="urn:getPriceResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="StockQuoteServiceSoap11Binding" type="tns:StockQuoteServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<wsdl:operation name="update">
<soap:operation soapAction="urn:update" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
</wsdl:operation>
<wsdl:operation name="getPrice">
<soap:operation soapAction="urn:getPrice" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="StockQuoteServiceSoap12Binding" type="tns:StockQuoteServicePortType">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<wsdl:operation name="update">
<soap12:operation soapAction="urn:update" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
</wsdl:operation>
<wsdl:operation name="getPrice">
<soap12:operation soapAction="urn:getPrice" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="StockQuoteServiceHttpBinding" type="tns:StockQuoteServicePortType">
<http:binding verb="POST"/>
<wsdl:operation name="update">
<http:operation location="update"/>
<wsdl:input>
<mime:content type="application/xml" part="parameters"/>
</wsdl:input>
</wsdl:operation>
<wsdl:operation name="getPrice">
<http:operation location="getPrice"/>
<wsdl:input>
<mime:content type="application/xml" part="parameters"/>
</wsdl:input>
<wsdl:output>
<mime:content type="application/xml" part="parameters"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="StockQuoteService">
<wsdl:port name="StockQuoteServiceHttpSoap11Endpoint" binding="tns:StockQuoteServiceSoap11Binding">
<soap:address location="http://localhost:8080/axis2/services/StockQuoteService"/>
</wsdl:port>
<wsdl:port name="StockQuoteServiceHttpSoap12Endpoint" binding="tns:StockQuoteServiceSoap12Binding">
<soap12:address location="http://localhost:8080/axis2/services/StockQuoteService"/>
</wsdl:port>
<wsdl:port name="StockQuoteServiceHttpEndpoint" binding="tns:StockQuoteServiceHttpBinding">
<http:address location="http://localhost:8080/axis2/services/StockQuoteService"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

Tips: 这个WSDL 文件可以用Ant 命令根据java代码生成,也可以通过services.xml 配置经过浏览器访问URL 生成。

方法二:通过URL访问生成WSDL 文件

接下来我们就尝试通过URL访问生成WSDL 文件

打开我们自己创建的工程,我们需要在services 目录下创建一个文件夹 StockQuoteService

注意:这个名字必须和services.xml 中name 节点的值保持一致。

其次还需要创建一个META-INF 文件夹,将我们的services.xml 放进去(这个文件可以在样例源码中找到)

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

文件路径:C:\Apps\axis2\axis2-1.7.9\samples\quickstart\resources\META-INF\services.xml

内容如下:

<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you under the Apache License, Version 2.0 (the
~ "License"); you may not use this file except in compliance
~ with the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
--> <service name="StockQuoteService" scope="application" targetNamespace="http://quickstart.samples/">
<description>
Stock Quote Service
</description>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/ns/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
<messageReceiver mep="http://www.w3.org/ns/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
<schema schemaNamespace="http://quickstart.samples/xsd"/>
<parameter name="ServiceClass">samples.quickstart.service.pojo.StockQuoteService</parameter>
</service>

其次创建的web service Java源码部分结构如下

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

这个StockQuoteService.java 文件可以在样例源码中找到

文件路径:E:\open-source\axis2\axis2-1.7.9-bin\axis2-1.7.9\samples\quickstart\src\samples\quickstart\service\pojo\StockQuoteService.java

文件内容如下:

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package samples.quickstart.service.pojo; import java.util.HashMap; public class StockQuoteService { private HashMap<String,Double> map = new HashMap<String,Double>(); public double getPrice(String symbol) {
Double price = (Double) map.get(symbol);
if(price != null){
return price.doubleValue();
}
return 42.00;
} public void update(String symbol, double price) {
map.put(symbol, new Double(price));
}
}

Tips: 为了去掉警告,我做了简单修改,当然不修改也没问题

部署发布到tomcat 或者其他web 容器成功后可以看到

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

然后通过查看以下服务列表来检查以确保服务已正确部署:

http://localhost:8080/axis2-webapp-pojo-sample/services/listServices

我们可以看到除了默认的Version Services 之外,我们自定义的Web Service 也部署上去了。

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

您还可以在以下位置查看WSDL:

http://localhost:8080/axis2-webapp-pojo-sample/services/StockQuoteService?wsdl

访问成功如下所示:

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

the schema 在

http://localhost:8080/axis2-webapp-pojo-sample/services/StockQuoteService?xsd

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

URL正常工作后,快速测试服务。尝试将浏览器指向以下URL:

http://localhost:8080/axis2-webapp-pojo-sample/services/StockQuoteService/getPrice?symbol=IBM

我们将收到以下响应:

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

如果我们调用更新方法,

http://localhost:8080/axis2-webapp-pojo-sample/services/StockQuoteService/update?symbol=IBM&price=100.00

Tips: 但是由于更新方法是没有返回值的,因此页面可能看不到什么变化

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

然后执行第一个getPrice URL,您将看到价格已更新。

http://localhost:8080/axis2-webapp-pojo-sample/services/StockQuoteService/getPrice?symbol=IBM

效果如下所示:

2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

本篇完~