Spring 集成 Axis2 1.7.5

来源:互联网 发布:mac免费打谱软件 编辑:程序博客网 时间:2024/04/30 13:19

环境 java8 win10 IDEA 开发中遇到的问题

1,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>org.open</groupId>  <artifactId>logistics</artifactId>  <packaging>war</packaging>  <version>1.0-SNAPSHOT</version>  <name>logistics Maven Webapp</name>  <url>http://maven.apache.org</url>  <properties>    <!--axis2版本指定-->    <axis2.version>1.7.5</axis2.version>    <spring.version>4.3.3.RELEASE</spring.version>  </properties>  <dependencies>    <!--axis2 begin-->    <dependency>      <groupId>org.apache.axis2</groupId>      <artifactId>axis2</artifactId>      <version>${axis2.version}</version>    </dependency>    <dependency>      <groupId>org.apache.axis2</groupId>      <artifactId>axis2-spring</artifactId>      <version>${axis2.version}</version>    </dependency>    <dependency>      <groupId>org.apache.axis2</groupId>      <artifactId>axis2-transport-http</artifactId>      <version>${axis2.version}</version>    </dependency>    <dependency>      <groupId>org.apache.axis2</groupId>      <artifactId>axis2-transport-local</artifactId>      <version>${axis2.version}</version>    </dependency>    <dependency>      <groupId>org.apache.axis2</groupId>      <artifactId>axis2-xmlbeans</artifactId>      <version>${axis2.version}</version>    </dependency>    <dependency>      <groupId>org.apache.axis2</groupId>      <artifactId>axis2-json</artifactId>      <version>${axis2.version}</version>    </dependency>    <!--<dependency>-->      <!--<groupId>org.apache.axis2</groupId>-->      <!--<artifactId>axis2-soapmonitor-servlet</artifactId>-->      <!--<version>${axis2.version}</version>-->    <!--</dependency>-->    <!--axis2 end-->    <!--spring 可配可不配-->    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-beans</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-context</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-core</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-web</artifactId>      <version>${spring.version}</version>    </dependency>  </dependencies>  <build>    <finalName>logistics</finalName>  </build></project>

2,web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"         xmlns="http://java.sun.com/xml/ns/javaee"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">    <servlet>        <servlet-name>AxisServlet</servlet-name>        <!-- 注册axis2的servlet -->        <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>        <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>        <servlet-name>AxisServlet</servlet-name>        <url-pattern>/services/*</url-pattern>    </servlet-mapping>    <!-- 加载spring的配置文件 -->    <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath*:applicationContext.xml</param-value>    </context-param>    <!--//增加spring监听器-->    <listener>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener></web-app>

3,applicationContext.xml放于resources文件夹下

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:aop="http://www.springframework.org/schema/aop"       xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">    <context:component-scan base-package="org.open.logistics.*" />    <context:annotation-config/>    <!-- axis2 交给spring 去管理 -->    <bean id="applicationContext" class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder"/></beans>

4,确保WEB-INF目录下包含如下结构文件夹(粗体),文件(只有services.xml)

WEB-INF

    services

        testonly -- 此文件夹名字可任意,但个人建议与services.xml中service name 属性的值保持一致,方便查找

            META-INF

                services.xml

5, services.xml

<?xml version="1.0" encoding="UTF-8" ?><serviceGroup>    <!-- url 路径访问的service名称-->    <service name="testOnly" scope="application">        <description>simple spring example</description>        <parameter name="ServiceObjectSupplier">            org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier        </parameter>        <!--testonly 通过spring注入的beanName-->        <parameter name="SpringBeanName">testOnly</parameter>        <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>        <parameter name="xmlToJsonNamespaceMap"></parameter>    </service></serviceGroup>

6,java文件夹下建如下目录结构

org
    open
        logistics
            ws
                demo
                    service
                      HelloImpl.java
                model
                    User.java
HelloImpl.java
package org.open.logistics.ws.demo.service;import org.apache.axiom.om.*;import org.open.logistics.ws.model.User;import org.springframework.stereotype.Component;/** * Created by Administrator on 2017/6/9. */@Component("testOnly")public class HelloImpl {    public User sayHello(String name) {        User user = new User();        if((name == null) || (name == "")) {            name = "anonymous";            user.setName("null");            user.setAge(0);        }else{            user.setName(name);            user.setAge(18);        }        return user;    }    public OMElement getValue(OMElement ignore) {        OMFactory factory=                OMAbstractFactory.getOMFactory();        OMNamespace payloadNs= factory.createOMNamespace(                "http://springExample.org/example1", "example1");        OMElement payload =                factory.createOMElement("string", payloadNs);        OMText response = factory.createOMText("test");        payload.addChild(response);        return payload;    }}
User.java
package org.open.logistics.ws.model;/** * Created by Administrator on 2017/6/11. */public class User {    private String name;    private Integer age;    public User() {    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }}

7,部署到tomcat上访问 注意url路径区分大小写

    1>http://localhost:8080/项目名/services/testOnly?wsdl
  
    2>http://localhost:8080/项目名/services/testOnly/sayHello

    3>http://localhost:8080/项目名/services/testOnly/getValue

原创粉丝点击