开发服务端
导入maven
<?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>
<groupId>cn.com.techfly</groupId>
<artifactId>03.cxf-ws-spring-server</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<!-- CXF对JAX-WS的支持 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.0.1</version>
</dependency>
<!-- spring框架 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.2.0.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.0.1</version>
</dependency>
<!-- junit测试框架 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- 实体类工具 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
</dependencies>
<!-- tomcat插件-->
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>9000</port>
<server>tomcat7</server>
</configuration>
</plugin>
</plugins>
</build>
</project>
创建User实体类
package cn.com.techfly.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;//id
private String name;//名字
private String gender;//性别
}
创建接口
package cn.com.techfly.service;
import cn.com.techfly.bean.User;
import javax.jws.WebService;
import java.util.List;
/**
*
* @WebService 把该类标注为WebService接口,可能被远程客户端调用。
* 注意:该注解需要在JDK1.6以上可以使用
*/
@WebService
public interface UserService {
public void saveUser(User user);
public void updateUser(User user);
public void deleteUser(Integer id);
public List<User> findAllUser();
public User findById(Integer id);
}
实现接口
package cn.com.techfly.service.impl;
import cn.com.techfly.bean.User;
import cn.com.techfly.service.UserService;
import java.util.ArrayList;
import java.util.List;
public class UserServiceImpl implements UserService {
public void saveUser(User user) {
System.out.println("保存用户:" + user);
}
public void updateUser(User user) {
System.out.println("修改用户:" + user);
}
public void deleteUser(Integer id) {
System.out.println("删除用户:" + id);
}
public List<User> findAllUser() {
List<User> users = new ArrayList<User>();
users.add(new User(1, "张三", "男"));
users.add(new User(2, "李四", "男"));
users.add(new User(3, "陈六", "女"));
System.out.println("批量添加用户:" + users);
return users;
}
public User findById(Integer id) {
User user = new User();
if (id == 1) {
user.setId(1);
user.setName("露西");
user.setGender("男");
System.out.println("用户:" + user);
}else {
System.out.println("用户不存在!");
}
return user;
}
}
编写applicantionContext.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"
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">
<!-- 发布接口-->
<!-- address:发布地址 -->
<!-- serviceClass:接口类路径-->
<jaxws:server address="/userService" serviceClass="cn.com.techfly.service.UserService">
<!-- 接口实现类-->
<jaxws:serviceBean>
<!-- class:接口实现类路径-->
<bean class="cn.com.techfly.service.impl.UserServiceImpl"/>
</jaxws:serviceBean>
<!-- 日志拦截器-->
<!-- 输入拦截器-->
<jaxws:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
</jaxws:inInterceptors>
<!-- 输出拦截器-->
<jaxws:outInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
</jaxws:outInterceptors>
</jaxws:server>
</beans>
配置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">
<display-name>03.cxf-ws-spring-server</display-name>
<!-- 监听器启动Spring配置-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicantionContext.xml</param-value>
</context-param>
<!-- 启动cxf-->
<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>/*</url-pattern>
</servlet-mapping>
</web-app>
开发客户端
导入maven
<?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>
<groupId>cn.com.techfly</groupId>
<artifactId>04.cxf-ws-spring-client</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<!-- CXF对JAX-WS的支持 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.0.1</version>
</dependency>
<!-- spring框架 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.2.0.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.0.1</version>
</dependency>
<!-- junit测试框架 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- 实体类工具 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
</dependencies>
<!-- tomcat插件-->
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>9000</port>
<server>tomcat7</server>
</configuration>
</plugin>
</plugins>
</build>
</project>
创建User实体类
package cn.com.techfly.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;//id
private String name;//名字
private String gender;//性别
}
创建接口
package cn.com.techfly.service;
import cn.com.techfly.bean.User;
import javax.jws.WebService;
import java.util.List;
/**
*
* @WebService 把该类标注为WebService接口,可能被远程客户端调用。
* 注意:该注解需要在JDK1.6以上可以使用
*/
@WebService
public interface UserService {
public void saveUser(User user);
public void updateUser(User user);
public void deleteUser(Integer id);
public List<User> findAllUser();
public User findById(Integer id);
}
编写applicantionContext.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"
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">
<!-- 创建服务接口代理类对象-->
<!-- address:发布地址 -->
<!-- serviceClass:接口类路径-->
<jaxws:client id="userService"
address="http://localhost:9000/03.cxf-ws-spring-server/userServie"
serviceClass="cn.com.techfly.service.UserService">
<!-- 日志拦截器-->
<!-- 输入拦截器-->
<jaxws:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
</jaxws:inInterceptors>
<!-- 输出拦截器-->
<jaxws:outInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
</jaxws:outInterceptors>
</jaxws:client>
</beans>
编写调用服务端代码
package cn.com.techfly.test;
import cn.com.techfly.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ClientDemoTest {
public static void main(String[] args) {
//1、加载applicantionContext.xml
ApplicationContext ac = new ClassPathXmlApplicationContext("applicantionContext.xml");
//2、获取Spring容器的接口代理对象
UserService userService = (UserService) ac.getBean("userService");
//3、调用服务端接口
userService.findById(1);
}
}
运行程序
先运行服务端,在运行客户端。
服务端运行成功。
客户端运行成功。
客户端成功调用服务端接口。