开发服务端
导入maven
<dependencies>
<!-- CXF对JAX-WS的支持 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.0.1</version>
</dependency>
<!-- 内置jetty web服务器 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.0.1</version>
</dependency>
<!-- 依赖日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.6</version>
</dependency>
<!-- 实体类工具 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
</dependencies>
创建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;
}
}
编写发布接口
package cn.com.techfly.test;
import cn.com.techfly.service.UserService;
import cn.com.techfly.service.impl.UserServiceImpl;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
/**
* 发布接口
*/
public class ServerDemoTest {
//接口地址
private static final String ADDRESS = "http://localhost:9000/userService";
public static void main(String[] args) {
// 1 .创建工厂对象
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
//2.设置参数
//2.1 设置访问路径(让客户端访问)
factory.setAddress(ADDRESS);
//2.2 设置接口类型
factory.setServiceClass(UserService.class);
//2.3设置实现类对象
factory.setServiceBean(new UserServiceImpl());
//3.发布接口(阻塞方法)
factory.create();
System.out.println("WebService服务程序发布成功.....");
}
}
开发客户端
导入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>02.cxf-ws-java-client</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- CXF对JAX-WS的支持 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.0.1</version>
</dependency>
<!-- 内置jetty web服务器 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.0.1</version>
</dependency>
<!-- 依赖日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.6</version>
</dependency>
<!-- 实体类工具 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
</dependencies>
</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.test;
import cn.com.techfly.service.UserService;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
/**
* 调用服务端接口
*/
public class ClientDemoTest {
//接口地址(要和服务端发布的接口要一模一样)
private static final String ADDRESS = "http://localhost:9000/userService";
public static void main(String[] args) {
// 1 .创建工厂对象
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
//2.设置参数
//2.1 设置访问路径
factory.setAddress(ADDRESS);
//2.2 设置接口
factory.setServiceClass(UserService.class);
//3.创建接口的代理类对象
UserService userService = (UserService) factory.create();
//调用服务端接口
userService.findAllUser();
}
}
运行程序
先运行服务端,在运行客户端。
服务端运行成功。
客户端运行成功。
客户端成功调用服务端接口。