项目结构图:
一、项目配置
1、pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<properties>
<!-- JDK版本 -->
<jdk.version>1.8</jdk.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<cxf.version>3.1.6</cxf.version>
</properties>
<dependencies>
<!--xml-->
<!--webservice-->
<dependency>
<groupId>xom</groupId>
<artifactId>xom</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.6</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-core</artifactId>
<version>3.1.6</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.6</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.1.6</version>
</dependency>
<!--FastJson1-->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.2.3</version>
<classifier>jdk15</classifier> <!--指定jdk版本-->
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.28</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20171018</version>
</dependency>
<!-- mapper json -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
<version>2.7.0</version>
</dependency>
</dependencies>
</build>
</project>
2、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>MTS</display-name>
<!-- spring -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-config.xml</param-value>
</context-param>
<!--WebService-->
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/webservice/*</url-pattern>
</servlet-mapping>
</web-app>
3、spring-config.xml
<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd"
default-autowire="byName">
<!-- 注入除@Controller和@ControllerAdvice -->
<context:component-scan base-package="com.styl">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
<context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice" />
</context:component-scan>
<!-- 引入属性文件 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:properties/*.properties</value>
</list>
</property>
</bean>
<import resource="classpath:spring/spring-mybatis.xml"/>
<import resource="classpath:spring/spring-config-cache.xml" />
<import resource="classpath:spring/spring-config-shiro.xml" />
<!--Web Service 接口配置-->
<!--用import标签引入cxf的xml配置文件-->
<import resource="classpath:spring/apache-cxf.xml"/>
</beans>
4、apache-cxf.xml
<?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:jaxws="http://cxf.apache.org/jaxws"
xmlns:soap="http://cxf.apache.org/bindings/soap"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/bindings/soap
http://cxf.apache.org/schemas/configuration/soap.xsd">
<!--
1.使用jaxws:endpoint标签的配置发布一个 webservice
2.服务提供实现类为 com.elgin.cxf.service.impl.HelloServiceImpl,用implementor属性配置
3.address属性配置外部访问的相对路径
4.使用 jaxws:inInterceptors 标签配置2个日志拦截器,用来打印调用时的日志信息
5.注意:在此配置文件中,需加入jaxws与soap命名空间
-->
<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<!--
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
-->
<!-- 定义webservice的发布接口 -->
<!--配置方式(一)-->
<!--
<jaxws:endpoint implementor="#helloWorld" address="/HelloWorld"/>
-->
<!--配置方式(二)-->
<!--
<jaxws:endpoint implementor="com.styl.modules.ws.impl.HelloWorldImpl" address="/HelloWorld"/>
-->
<!--配置方式(三)-->
<jaxws:endpoint id = "helloWorld" implementor="com.styl.modules.ws.impl.HelloWorldImpl" address="/HelloWorld"/>
<jaxws:endpoint id = "wsService" implementor="com.styl.modules.ws.impl.WsServiceImpl" address="/WsService"/>
</beans>
二、WebService接口及实现类文件
HelloWorld.java
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
public String say(String str);
public String sayHello(@WebParam(name="jsonStr") String jsonStr);
}
WsService.java
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public interface WsService {
public String sayHellos(@WebParam(name="jsonStr") String jsonStr);
}
HelloWorldImpl.java
import javax.jws.WebService;
import org.springframework.stereotype.Component;
import com.styl.modules.ws.HelloWorld;
import net.sf.json.JSONObject;
/**
* 配置方式(一)
*/
/*
@Component("helloWorld")
@WebService
*/
//配置方式(二)
@WebService(endpointInterface="com.styl.modules.ws.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
public String say(String str) {
return "Hello"+str;
}
public String sayHello(String jsonStr) {
String result = "";
JSONObject object = JSONObject.fromObject(jsonStr);
JSONObject obj = new JSONObject();
try {
String data = object.getString("data");
obj.put("data", data);
obj.put("msg", "測試代碼");
result =obj.toString();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
WsServiceImpl.java
import javax.jws.WebService;
import org.springframework.stereotype.Component;
import net.sf.json.JSONObject;
import com.styl.modules.ws.WsService;
/**
* 配置方式(一)
*/
@Component("WsService")
@WebService
/**
* 配置方式(二)
*/
/*@WebService(endpointInterface="com.styl.modules.wservice.zz.WsService")*/
public class WsServiceImpl implements WsService {
public String sayHellos(String jsonStr) {
String result = "";
JSONObject object = JSONObject.fromObject(jsonStr);
JSONObject obj = new JSONObject();
try {
String data = object.getString("data");
obj.put("data", data);
obj.put("msg", "測試代碼");
result =obj.toString();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}