基于spring4.3.6,cxf3.0.12的WebService开发
2017-03-03 00:00
525 查看
基于spring4.3.6,cxf3.0.12的WebService开发
由于项目使用Spring开发,所以笔者选择了ApacheCXF进行WebService开发,原因是ApacheCXF提供方便的Spring整合方法,
可以通过注解、Spring标签式配置来暴露WebServices和消费WebServices。
1.首先去http://cxf.apache.org/download.html下载最新的版本(目前是3.0.12)
2.Mavenpom依赖相应的包到项目中,大概包如下:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.0.12</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.0.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.6.RELEASE</version>
</dependency>
3.新建一个接口
@WebService
publicinterfaceHelloWorldService{
publicStringgetNewName(StringuserName);
}
使用@WebService标识让CXF知道使用该接口来创建WSDL
4.新建一个实现类
@WebService(endpointInterface="org.app.demo.spring.service.HelloWorldService")
publicclassHelloWorldServiceImplimplementsHelloWorldService{
publicStringgetNewName(StringuserName){
return"HelloSpring!"+userName;
}
}
5.修改相应的配置文件
ApplicationContext.xml中加入如下代码
<jaxws:endpoint
id="helloWorld"
implementor="org.app.demo.spring.service.impl.HelloWorldServiceImpl"
address="/HelloWorld"/>
或者
<beanid="helloWorldService"class="org.app.demo.spring.service.impl.HelloWorldServiceImpl"/>
<jaxws:endpoint
id="helloWorld"
implementor="#helloWorldService"
address="/HelloWorld"/>
注意:XML头文件需相应添加
xmlns:jaxws="http://cxf.apache.org/jaxws
http://cxf.apache.org/jaxwshttp://cxf.apache.org/schemas/jaxws.xsd
web.xml中加入如下代码
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
6.发布项目到tomcat服务器。
7.启动Tomcat,打开http://localhost:8080/myapp/HelloWorld?wsdl就可以看到了
8.客户端调(javaproject)用也很方便,如下代码:
URLwsdlUrl=newURL("http://192.168.0.114:8080/myapp/HelloWorld?wsdl");
QNameSERVICE_NAME=newQName("http://impl.service.spring.demo.app.org/","HelloWorldServiceImplService");
Serviceservice=Service.create(wsdlUrl,SERVICE_NAME);
HelloWorldServicehello=service.getPort(HelloWorldService.class);
System.out.println(hello.getNewName("WebService调用"));
8.客户端调(javaweb)ApplicationContext.xml中加入如下代码
<beanid="helloWorld"
class="org.app.demo.spring.service.HelloWorldService"
factory-bean="clientFactory"factory-method="create"/>
<beanid="clientFactory"class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<propertyname="serviceClass"value="org.app.demo.spring.service.HelloWorldService"/>
<propertyname="address"value="http://192.168.0.114:8080/myapp/HelloWorld"/>
</bean>
类@Autowired
privateHelloWorldServicehelloWorld;
然后执行代码后,会打印出HelloSpring!WebService调用。
注意1.IP地址为Webservice的服务器的地址。
2.必须把相应的接口复制到客户端项目中。
publicinterfaceHelloWorldService{
publicStringgetNewName(StringuserName);
@WebService(endpointInterface="org.app.demo.spring.service.HelloWorldService")
publicclassHelloWorldServiceImplimplementsHelloWorldService{
publicStringgetNewName(StringuserName){
return"HelloSpring!"+userName;
}
<jaxws:endpoint
id="helloWorld"
implementor="org.app.demo.spring.service.impl.HelloWorldServiceImpl"
<jaxws:endpoint
id="helloWorld"
implementor="#helloWorldService"
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/*</url-pattern>
URLwsdlUrl=newURL("http://192.168.0.114:8080/myapp/HelloWorld?wsdl");
QNameSERVICE_NAME=newQName("http://impl.service.spring.demo.app.org/","HelloWorldServiceImplService");
Serviceservice=Service.create(wsdlUrl,SERVICE_NAME);
HelloWorldServicehello=service.getPort(HelloWorldService.class);
<beanid="helloWorld"
class="org.app.demo.spring.service.HelloWorldService"
factory-bean="clientFactory"factory-method="create"/>
<beanid="clientFactory"class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<propertyname="serviceClass"value="org.app.demo.spring.service.HelloWorldService"/>
<propertyname="address"value="
类@Autowired
相关文章推荐
- CXF Spring开发WebService,基于SOAP和REST方式
- 基于Spring和CXF的webservice开发环境搭建
- Spring+CXF开发基于SOAP协议的WebService
- 谈谈WebService开发-应用篇(四)-CXF基于Spring的应用
- CXF使用教程(三)——基于Spring的webService开发
- WebService(4):CXF Spring开发WebService,基于SOAP和REST方式
- 基于Spring+CXF技术开发WebService
- 基于Spring和CXF的webservice开发环境搭建
- CXF Spring开发WebService,基于SOAP和REST方式
- WebService介绍(WebService基础知识、XFire、CXF(基于XFire和Celtix项目整合而来,与Spring融合好)、AXIS1、AXIS2(有AXIS1转换而来,有Java)
- 基于cxf实现的webservice,全程开发指南和笔记,以及代码
- cxf开发基于web的webservice项目2
- myeclipse开发基于cxf的webservice
- 基于spring+cxf实现用户文件传输的webservice
- 使用Spring+CXF开发WebService
- CXF+Maven+Eclipse开发基于jax-rs规范的WebService
- Spring+CXF开发WebService
- 开发基于CXF的 RESTful WebService web 项目 webservice发布
- 基于cxf实现的webservice,全程开发指南和笔记,以及代码
- spring中发布基于cxf的webservice