使用idea开发工具,基于Maven环境进行Spring集成CXF WebService框架。
1、pom.xml文件添加依赖包:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.10</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.10</version>
</dependency>
</dependencies>
2、创建实体:
public class User {
private String username;
private int age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
@WebService
public interface IUserService {
//新增
@WebMethod
public void addUser(User user);
//获取所有
@WebMethod
public List<User> findAll();
}
4、接口实现类:
@Service
public class IUserServiceImpl implements IUserService {
@Autowired
private IUserDao userDao;
public void addUser(User user) {
userDao.save(user);
}
public List<User> findAll() {
return userDao.findAll();
}
}
5、持久层接口:
public interface IUserDao {
//保存
void save(User user);
//获取所有
List<User> findAll();
}
6、持久层实现:
@Repository
public class IUserDaoImpl implements IUserDao {
private ArrayList<User> users = new ArrayList<User>();
public void save(User user) {
users.add(user);
}
public List<User> findAll() {
return users;
}
}
7、编辑spring配置文件,配置注解扫描和发布webService服务:
<?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:jaxws="http://cxf.apache.org/jaxws"
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://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<!--配置注解扫描-->
<context:component-scan base-package="hzq.com.user"/>
<!--发布webservice服务-->
<jaxws:server id="userService" address="/userServic" serviceClass="hzq.com.user.service.IUserService">
<jaxws:serviceBean>
<bean class="hzq.com.user.service.impl.IUserServiceImpl"></bean>
</jaxws:serviceBean>
</jaxws:server>
</beans>
8、修改web.xml配置文件:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<!--spring配置文件路径加载-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--配置cxf-->
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
</web-app>
10、启动项目,进行测试:
访问路径: http://localhost:8080/spring_cxf/service,获取该路径所有的服务列表
点击WSDL后面的连接,查看wsdl文件内容。
11、创建测试客户端:
使用CXF提供的“wsdl2java.bat”工具,根据WSDL创建java客户端代码:
12、复制生成的java代码到项目中。
13、编写客户端测试代码。
public class Demo {
@Test
public void add(){
IUserServiceService userServiceService = new IUserServiceService();
IUserService userService = userServiceService.getIUserServicePort();
User user = new User();
user.setUsername("lisi");
user.setAge(5);
userService.addUser(user);
System.out.println("新增结束");
}
@Test
public void findAll(){
IUserServiceService userServiceService = new IUserServiceService();
IUserService userService = userServiceService.getIUserServicePort();
List<User> users = userService.findAll();
for(User u : users){
System.out.println("username = "+u.getUsername()+" age = "+ u.getAge());
}
}
}
14、源码下载地址:http://download.csdn.net/detail/mmd0308/9819309