Spring 整合CXF 实现WebService(JAX-WS)
Posted 天宇轩-王
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 整合CXF 实现WebService(JAX-WS)相关的知识,希望对你有一定的参考价值。
服务端
创建项目
添加依赖
web.xml 配置CXFServlet
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>Archetype Created Web Application</display-name> <!--1. cxfsevlet配置--> <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>/ws/*</url-pattern> </servlet-mapping> <!--2.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> <!-- 欢迎页面配置 --> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
pom.xml
<groupId>org.example</groupId> <artifactId>spring-webservice</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>3.1.4</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.1.4</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.2.4.RELEASE</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.2</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <showWarnings>true</showWarnings> </configuration> </plugin> <!-- 运行tomcat7方法:tomcat7:run --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!-- 指定端口 --> <port>8080</port> <!-- 请求路径 --> <path>/</path> </configuration> </plugin> </plugins> </build> </project>
import javax.jws.WebService; /** * 对外发布服务的接口 */ @WebService public interface HelloService { /** * 对外发布服务的接口的方法 */ public String sayHello(String name); }
import webservice.HelloService; public class HelloServiceImpl implements HelloService { @Override public String sayHello(String name) { return name + ",Welcome to Itheima!"; } }
<?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:cxf="http://cxf.apache.org/core" 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/core http://cxf.apache.org/schemas/core.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <!-- Spring整合cxf发布服务,关键点: 1. 服务地址 2. 服务类 服务完整访问地址: http://localhost:8080/ws/hello --> <jaxws:server address="/hello"> <jaxws:serviceBean> <bean class="webservice.impl.HelloServiceImpl"></bean> </jaxws:serviceBean> </jaxws:server> </beans>
启动服务
客户端
<?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"> <!-- Spring整合cxf客户端配置: 1. 服务地址 http://localhost:8080/ws/hello 2. 服务接口类型 --> <jaxws:client id="helloService" serviceClass="webservice.impl.HelloService" address="http://localhost:8080/ws/hello"></jaxws:client> </beans>
/**
* 对外发布服务的接口
*/
@WebService(targetNamespace = "http://webservice/")
public interface HelloService {
/**
* 对外发布服务的接口的方法
*/
public String sayHello(String name);
}
测试类
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml") public class Client { // 注入对象 @Resource private HelloService helloService; @Test public void remote(){ // 查看接口的代理对象类型 // class com.sun.proxy.$Proxy45 System.out.println(helloService.getClass()); // 远程访问服务端方法 System.out.println(helloService.sayHello("Jerry")); } }
测试结果:
以上是关于Spring 整合CXF 实现WebService(JAX-WS)的主要内容,如果未能解决你的问题,请参考以下文章
Spring 整合CXF 实现WebService(JAX-WS)
SpringBoot2.1.6 整合CXF 实现Webservice