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>
View Code

可以先发布到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="0" 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="0" 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>
View Code

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));
    }
}
View Code

相关文章:

  • 2022-12-23
  • 2021-09-22
  • 2021-10-26
  • 2021-07-14
  • 2022-03-11
  • 2022-12-23
  • 2021-12-03
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-04
  • 2021-08-20
  • 2021-08-24
相关资源
相似解决方案