环境 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文件夹下建如下目录结构
orgopen
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?wsdl2>http://localhost:8080/项目名/services/testOnly/sayHello
3>http://localhost:8080/项目名/services/testOnly/getValue