使用cfx与springMVC集成发布与调用webservice
2017-12-01 00:00
706 查看
摘要: 根据官方版本提供的标准例子
版本:apache-cxf-3.2.1
JDK版本:1.8.0_25
注:此版本最低支持1.8 , JDK7 请下载 CXF 3.1.14 版本
必须引用的jar包列表
对应maven 依赖:
修改web.xml文件,引入代码片段
创建接口与实现类
HelloWord.java
HelloWorldImpl.java
创建注入配置文件cxf-servlet.xml
然后spring-context.xml引入
<import resource="classpath:cxf-servlet.xml" />
或直接把该配置文件放到WEB-INF根目录下和web.xml放到同一目录.
启动tomcat
看到以下输出信息,说明发布成功
在浏览器访问该地址 http://localhost:8080/nkydsj/services/hello_world?wsdl
客户端调用代码 Client.java运行后
版本:apache-cxf-3.2.1
JDK版本:1.8.0_25
注:此版本最低支持1.8 , JDK7 请下载 CXF 3.1.14 版本
必须引用的jar包列表
对应maven 依赖:
<!--apache cxf start--> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-core</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-bindings-soap</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-databinding-jaxb</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-simple</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-wsdl</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>org.apache.neethi</groupId> <artifactId>neethi</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.codehaus.woodstox</groupId> <artifactId>stax2-api</artifactId> <version>3.1.4</version> </dependency> <dependency> <groupId>org.codehaus.woodstox</groupId> <artifactId>woodstox-core-asl</artifactId> <version>4.4.1</version> </dependency> <dependency> <groupId>wsdl4j</groupId> <artifactId>wsdl4j</artifactId> <version>1.6.3</version> </dependency> <dependency> <groupId>org.apache.ws.xmlschema</groupId> <artifactId>xmlschema-core</artifactId> <version>2.2.2</version> </dependency> <!--apache cxf end-->
修改web.xml文件,引入代码片段
<!-- 加入CXF支持 webservice start--> <servlet> <description>Apache CXF Endpoint</description> <display-name>cxf</display-name> <servlet-name>cxf</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>cxf</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> <!-- 加入CXF支持 webservice end--
创建接口与实现类
HelloWord.java
package com.quickmap.common; import javax.jws.WebParam; import javax.jws.WebService; // START SNIPPET: service @WebService public interface HelloWorld { String sayHi(@WebParam(name="text")String text);// @WebParam 里面的name是请求时候的参数名 } // END SNIPPET: service
HelloWorldImpl.java
// START SNIPPET: service package com.quickmap.common; import javax.jws.WebService; @WebService(endpointInterface = "com.quickmap.common.HelloWorld", serviceName = "HelloWorld") public class HelloWorldImpl implements HelloWorld { public String sayHi(String text) { System.out.println("sayHi called"); return "Hello " + text; } } // END SNIPPET: service
创建注入配置文件cxf-servlet.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:soap="http://cxf.apache.org/bindings/soap" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <jaxws:server id="jaxwsService" serviceClass="com.quickmap.common.HelloWorld" address="/hello_world"> <jaxws:serviceBean> <bean class="com.quickmap.common.HelloWorldImpl"/> </jaxws:serviceBean> </jaxws:server> </beans>该文件保存到classpath根目录,如图
然后spring-context.xml引入
<import resource="classpath:cxf-servlet.xml" />
或直接把该配置文件放到WEB-INF根目录下和web.xml放到同一目录.
启动tomcat
看到以下输出信息,说明发布成功
在浏览器访问该地址 http://localhost:8080/nkydsj/services/hello_world?wsdl
客户端调用代码 Client.java运行后
package com.quickmap.common; import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; public final class Client { public static void main(String args[]) throws Exception { JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance(); org.apache.cxf.endpoint.Client client = clientFactory.createClient("http://localhost:8080/nkydsj/services/hello_world?wsdl"); Object[] result = new Object[0]; try { result = client.invoke("sayHi", ",webservice调用成功啦!!!"); System.out.println(result[0]); } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- 使用CXF发布和调用webservice之HelloWorld入门
- 使用.net调用xfire发布webservice的统一安全认证
- webService总结(一)——使用CXF发布和调用webService(不使用Spring)
- 使用CXF发布和调用webservice之HelloWorld入门
- 基于JAVA中使用Axis发布/调用Webservice的方法详解
- .NET动态调用WebService并生成程序集 兼容集成java发布的webserive
- c/c++使用gsoap调用wcf发布的webservice
- 使用Axis2实现WebService的发布和调用
- webservice学习之使用java发布webservice以及调用
- WebService使用入门(包括发布服务,调用服务)
- Webservice使用xfire发布及客户端调用
- 不使用VS.NET集成开发环境,调用微软的WebService注册
- webService学习之路(二):springMVC集成CXF快速发布webService
- c/c++使用gsoap发布和调用webservice
- 调用Https WebService发布后使用时报“基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系”证书验证失败的解决过程(3)
- axis2 webservice 发布、调用与项目集成
- Java Web 跨平台 - 使用Apache Axis2引擎发布基于Java语言的WebService并跨平台调用实例
- 不使用VS.NET集成开发环境,调用微软的WebService注册服务
- springmvc webservice的2种用法,xstream以及axis2 集成spring发布服务
- 使用CXF发布和调用webservice之HelloWorld入门