本文主要是介绍使用CXF开发WebService程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、CXF是什么
cxf是一个开源框架,实现webservice开发,它支持多种协议,比如:SOAP1.1,1,2、XML/HTTP、RESTful HTTP 或者 CORBA。
cxf开发的webservice可以通过tomcat运行,cxf开发的webservice服务接口可以和javaweb应用程序部署在一块儿,共同使用一个端口80。
cxf基于SOA面向服务架构理念。依赖spring进行各各cxf模块整合。
2、CXF的下载和安装
2.1 下载
从官网下载最新的CXF的版本http://cxf.apache.org/download.html
2.2 安装
由于需要使用到bin目录下的文件,需要配置下面的环境变量。
JAVA_HOME,
CXF_HOME=cxf的目录
Path = %JAVA_HOME%\bin;%CXF_HOME%\bin;
CLASSPATH=.;%CXF_HOME%\lib\cxf-manifest.jar
3、需求
开发一个用户管理的WebService服务端,对外提供用户的增删改查操作。
4、服务端的开发 (利用CXF开发,是在接口上加上@WebService注解)
4.1.1 新建一个Java项目,名称叫UserCXFWebService
将CXF中的jar包全部导入
4.1.2 传输的实体类要实现Serializable接口
- public class User implements Serializable {
- private int id;
- private String name;
- private int age;
-
- }
4.2 关于服务接口的定义如下
-
-
-
-
-
-
- @WebService(targetNamespace = "http://user.namager.cn", name = "IUserServiceSoap", portName = "IUserServicePort", serviceName = "IUserService")
- public interface IUserService {
-
- public void add(@WebParam(name = "user") User user);
-
-
- public void delete(@WebParam(name = "user") User user);
-
-
- public User findById(@WebParam(name = "id") int id);
- }
4.3 关于接口的实现类
- public class UserServiceImpl implements IUserService {
-
-
- private IUserDao userDao = new UserDaoImpl();
-
- public IUserDao getUserDao() {
- return userDao;
- }
-
- public void setUserDao(IUserDao userDao) {
- this.userDao = userDao;
- }
-
- @Override
- public void add(User user) {
- userDao.add(user);
- }
-
- @Override
- public void delete(User user) {
- userDao.delete(user);
- }
-
- @Override
- public User findById(int id) {
- return userDao.findById(id);
- }
-
- }
4.3 利用CXF发布WebService的代码如下
- public class PublicTest {
- public static void main(String[] args) {
-
-
- JaxWsServerFactoryBean jaxWsServerFactoryBean = new JaxWsServerFactoryBean();
-
- jaxWsServerFactoryBean.setAddress("http://localhost:8080/cuixiangyang");
-
- jaxWsServerFactoryBean.setServiceClass(IUserService.class);
-
- jaxWsServerFactoryBean.setServiceBean(new UserServiceImpl());
-
- jaxWsServerFactoryBean.create();
- }
- }
浏览器访问wsdl文件
5、客户端的开发
5.1 新建Java项目,名称为UserCXFClient
将CXF中的jar包全部导入
5.2 利用CXF中bin目录下的wsdl2java命令,生成客户端的调用代码
然后发下bin目录下有一个cn文件,里面的文件即是生成的客户端调用代码
5.3 编写客户端的调用代码
1、第一种调用方法 CXF的调用
- public class ClientTest1 {
- public static void main(String[] args) {
-
- JaxWsProxyFactoryBean wsProxyFactoryBean = new JaxWsProxyFactoryBean();
-
-
- wsProxyFactoryBean.setAddress("http://localhost:8888/usermanager?wsdl");
-
- wsProxyFactoryBean.setServiceClass(IUserServiceSoap.class);
-
- IUserServiceSoap port = wsProxyFactoryBean
- .create(IUserServiceSoap.class);
-
- User user = port.findById(1);
- System.out.println(user);
- }
-
- }
2、第二个调用方法 原始的调用方法
- public class ClientTest2 {
- public static void main(String[] args) throws MalformedURLException {
-
- URL wsdlDocumentLocation = new URL(
- "http://localhost:8888/usermanager?wsdl");
-
- QName serviceName = new QName("http://user.namager.cn", "IUserService");
-
- Service service = Service.create(wsdlDocumentLocation, serviceName);
-
- IUserServiceSoap port = service.getPort(IUserServiceSoap.class);
-
- User user = port.findById(1);
-
- System.out.println(user);
- }
-
- }
6、利用CXF实现WebService代码的下载
https://download.csdn.net/download/u013310119/10313438
这篇关于使用CXF开发WebService程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!