编程知识 cdmana.com

Apache-CXF整合SpringMVC WebService Apache-CXF整合SpringMVC

 Apache-CXF整合SpringMVC WebService Apache-CXF整合SpringMVC

 

一、前言

1、最近公司一个项目,突然需要用到WebService,网上找了下,实现的方式很多,这里记录下Apache-CXF和SpringMVC的整合过程。

2、SpringMVC 部分配置略, CXF单独也可以在web项目中运行。

 

二、WebService 服务端 代码实现

1、依赖pom

 <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws -->
	<dependency>
	    <groupId>org.apache.cxf</groupId>
	    <artifactId>cxf-rt-frontend-jaxws</artifactId>
	    <version>3.2.7</version>
	</dependency>
	
    <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-transports-http -->
	<dependency>
	    <groupId>org.apache.cxf</groupId>
	    <artifactId>cxf-rt-transports-http</artifactId>
	    <version>3.2.7</version>
	</dependency>

 

2、web.xml 配置

<!-- CXF WebService Config -->
  	<servlet>
	    <servlet-name>cxf</servlet-name>
	    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  	</servlet>
  	<servlet-mapping>
    	<servlet-name>cxf</servlet-name>
    	<url-pattern>/cxf/service/*</url-pattern>
  	</servlet-mapping>
	
	<context-param>
	    <param-name>contextConfigLocation</param-name>
	    <param-value>classpath:/spring-cxf.xml</param-value>
  	</context-param>
 
   <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>

3、创建一个HelloService 接口,记得加上 @WebService 注解

import java.util.List;
import javax.jws.WebService;
/**
 * description: HelloService , 记得加上注解 @WebService 
 * @version v1.0
 * @author w
 * @date 2020年5月14日下午1:48:52
 **/
@WebService
public interface HelloService {
	
	String say(String name);
	
	List<String> getList(Object arg);
}

 

4、创建 HelloServiceImpl 类,实现 HelloService 接口

import java.util.ArrayList;
import java.util.List;
import com.runcode.cxf.HelloService;

/**
 * description: HelloServiceImpl 实现 HelloService 接口 
 * @version v1.0
 * @author w
 * @date 2020年5月14日下午1:50:36
 **/
public class HelloServiceImpl implements HelloService {

	@Override
	public String say(String name) {
		return "hi :"+ name;
	}

	@Override
	public List<String> getList(Object arg) {
		List<String> list = new ArrayList<String>();
		list.add("hello");
		list.add("world");
		return list;
	}
}

5、创建 spring-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:jaxrs="http://cxf.apache.org/jaxrs" xmlns:cxf="http://cxf.apache.org/core"
		xsi:schemaLocation="http://www.springframework.org/schema/beans 
	          http://www.springframework.org/schema/beans/spring-beans.xsd
	            http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
	            http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
	            http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd">

	<description>Apache CXF  Configuration</description>

	<jaxws:endpoint id="hello" address="/hello" implementor="com.runcode.cxf.impl.HelloServiceImpl"></jaxws:endpoint>
	

</beans>

6、部署项目,启动服务,浏览器访问: http://192.168.1.104:8282/spring-mvc-tourist/cxf/service , 获取wsdl 。

 

三、WebService 客户端代码实现

1、使用Eclipse 创建一个项目: cxf-client

2、读取服务端提供的WSDL,这里使用JDK默认提供的 wsimport 命令,如下:

3、创建 CXFTest 类 ,测试,即可验证:

    @Test
	public void test() {
		HelloService helloService= new HelloServiceImplService().getHelloServiceImplPort();
		String say = helloService.say("cxf");
		System.out.println(say);
		
		List<String> list = helloService.getList(null);
		System.out.println(list);
	}

 

四、总结

1、WebService 服务端创建步骤:

  • 添加依赖 pom

  • web.xml , 配置 CXFServlet

  • 创建对应 服务接口和实现类 --- 记得加上 @WebService 注解

  • 创建spring-cxf.xml , 配置服务端接口

 

2、WebService 客户端调用步骤:

  • 访问服务端,获取对应的 WSDL

  • 使用 wsimport 命令,生成客户端代码

  • 客户端调用 即可

 

3、补充:关于生成客户端代码,还可以使用 wsdl2java 命令,自己去了解 ; 还可以使用Eclipse 提供的功能,步骤: 选中 cxf-client 项目 --- 右键 --- New --- Other ... --- Web Service Client --- 填入 WSDL 地址即可。

 

客户端调用时,可能需要增加以下几个依赖:

 <!-- https://mvnrepository.com/artifact/org.apache.axis/axis-jaxrpc -->
	<dependency>
	    <groupId>org.apache.axis</groupId>
	    <artifactId>axis-jaxrpc</artifactId>
	    <version>1.4</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/org.apache.axis/axis -->
	<dependency>
	    <groupId>org.apache.axis</groupId>
	    <artifactId>axis</artifactId>
	    <version>1.4</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/commons-discovery/commons-discovery -->
	<dependency>
	    <groupId>commons-discovery</groupId>
	    <artifactId>commons-discovery</artifactId>
	    <version>0.5</version>
	</dependency>
	
	
     <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws -->
	<dependency>
	    <groupId>org.apache.cxf</groupId>
	    <artifactId>cxf-rt-frontend-jaxws</artifactId>
	    <version>3.2.7</version>
	</dependency>

 

以上,一个简单的Spring和CXF整合的WebService就好啦!

(需要源码,私信我,谢谢。)

 

 

 

版权声明
本文为[HaHa_Sir]所创,转载请带上原文链接,感谢
https://thinkcode.blog.csdn.net/article/details/106278536

Scroll to Top