CXF+Spring+Tomcat简明示例
来源:互联网 发布:图片制作软件下载 编辑:程序博客网 时间:2024/06/10 07:39
多系统(异构系统)进行交互时,一种良好的方式便是调用Web Service,本示例基于Apache组织的CXF,为了方便起见特将服务端和客户端写在同一个工程下,
实际项目中是不可能的,但是客户端却依赖于服务端的Web Service接口,那么可以通过导出jar的方式。
环境:
MyEclipse10
JDK6
Tomcat7
CXF2.5
Spring3
示例项目结构图:
如上图所示,全部依赖的第三方库都在lib中,下面贴出全部代码。
IHelloService.java
package bing.server;
import javax.jws.WebService;
/** *//**
* <p>
* WebService接口
* </p>
*
*@author IceWee
* @date 2012-7-6
*@version 1.0
*/
@WebService
publicinterface IHelloService{
public String sayHello(String username);
}
import javax.jws.WebService;
/** *//**
* <p>
* WebService接口
* </p>
*
*@author IceWee
* @date 2012-7-6
*@version 1.0
*/
@WebService
publicinterface IHelloService{
public String sayHello(String username);
}
HelloServiceImpl.java
package bing.server;
import javax.jws.WebService;
/** *//**
* <p>
* WebService实现类
* </p>
*
*@author IceWee
* @date 2012-7-6
*@version 1.0
*/
@WebService(endpointInterface="bing.server.IHelloService", serviceName="HelloService")
publicclass HelloServiceImplimplements IHelloService{
@Override
public String sayHello(String username){
return"hello, "+ username;
}
}
import javax.jws.WebService;
/** *//**
* <p>
* WebService实现类
* </p>
*
*@author IceWee
* @date 2012-7-6
*@version 1.0
*/
@WebService(endpointInterface="bing.server.IHelloService", serviceName="HelloService")
publicclass HelloServiceImplimplements IHelloService{
@Override
public String sayHello(String username){
return"hello, "+ username;
}
}
HelloServiceClient.java
package bing.client;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import bing.server.IHelloService;
/** *//**
* <p>
* WebService调用方-客户端
* </p>
*
*@author IceWee
* @date 2012-7-6
*@version 1.0
*/
publicclass HelloServiceClient{
publicstatic void main(String[] args){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext-client.xml");
IHelloService helloService= (IHelloService) context.getBean("client");
String response= helloService.sayHello("Peter");
System.out.println(response);
}
}
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import bing.server.IHelloService;
/** *//**
* <p>
* WebService调用方-客户端
* </p>
*
*@author IceWee
* @date 2012-7-6
*@version 1.0
*/
publicclass HelloServiceClient{
publicstatic void main(String[] args){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext-client.xml");
IHelloService helloService= (IHelloService) context.getBean("client");
String response= helloService.sayHello("Peter");
System.out.println(response);
}
}
applicationContext-server.xml
<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="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">
<!--
***注意***
手动添加的内容:
xmlns:jaxws="http://cxf.apache.org/jaxws"
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
-->
<importresource="classpath:META-INF/cxf/cxf.xml"/>
<importresource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
<importresource="classpath:META-INF/cxf/cxf-servlet.xml"/>
<jaxws:endpointid="helloService" implementor="bing.server.HelloServiceImpl" address="/helloService"/>
</beans>
<beansxmlns="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">
<!--
***注意***
手动添加的内容:
xmlns:jaxws="http://cxf.apache.org/jaxws"
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
-->
<importresource="classpath:META-INF/cxf/cxf.xml"/>
<importresource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
<importresource="classpath:META-INF/cxf/cxf-servlet.xml"/>
<jaxws:endpointid="helloService" implementor="bing.server.HelloServiceImpl" address="/helloService"/>
</beans>
applicationContext-client.xml
<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="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">
<!--
***注意***
手动添加的内容:
xmlns:jaxws="http://cxf.apache.org/jaxws"
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
-->
<importresource="classpath:META-INF/cxf/cxf.xml"/>
<importresource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
<importresource="classpath:META-INF/cxf/cxf-servlet.xml"/>
<beanid="client" class="bing.server.IHelloService" factory-bean="clientFactory" factory-method="create"/>
<beanid="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<propertyname="serviceClass" value="bing.server.IHelloService"/>
<propertyname="address" value="http://localhost:8080/CXFDemo/ws/helloService"/>
</bean>
</beans>
<beansxmlns="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">
<!--
***注意***
手动添加的内容:
xmlns:jaxws="http://cxf.apache.org/jaxws"
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
-->
<importresource="classpath:META-INF/cxf/cxf.xml"/>
<importresource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
<importresource="classpath:META-INF/cxf/cxf-servlet.xml"/>
<beanid="client" class="bing.server.IHelloService" factory-bean="clientFactory" factory-method="create"/>
<beanid="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<propertyname="serviceClass" value="bing.server.IHelloService"/>
<propertyname="address" value="http://localhost:8080/CXFDemo/ws/helloService"/>
</bean>
</beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-appversion="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>CXFDemo</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-server.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<display-name>CXFServlet</display-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
<web-appversion="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>CXFDemo</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-server.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<display-name>CXFServlet</display-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
所有项目都已配置完成,可以发布到Tomcat了,在浏览器中输入:http://localhost:8080/CXFDemo/ws,返回如图:
从上图中可以看到我们对外发布的WebService接口,点击蓝色超链接,返回如图:
到此,证明我们的Web Service已经发布成功,可以进行调用测试了。运行HelloServiceClient,返回如图:
全文完!
《注解》:
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
这几个xml在cxf-xxx.jar包里面。
HelloServiceImpl 类的注解:
@WebService(endpointInterface = "bind.server.IHelloService", serviceName = "helloService")
注意:serviceName 是小写开头的helloService否则出错
@WebService(endpointInterface = "bind.server.IHelloService", serviceName = "helloService")
注意:serviceName 是小写开头的helloService否则出错
@Override 时出错误:The method **() of type must override a supertclass method
解决办法是:
一、
因为你的Compiler 是jdk1.5,只要把它改为 1.6
方法:
1. window ->preferences... -> java -> Compiler
2. Compiler compliance level : 6.0
二、 把项目的JRE变成6.0的项目右键->build path->configure build path->java Compiler(左边那排中) ->在右边的Compiler compliance level 修改版本为1.6
- CXF+Spring+Tomcat简明示例
- CXF+Spring+Tomcat简明示例
- CXF+Spring+Tomcat简明示例
- CXF+Spring+Tomcat简明示例
- CXF+Spring+Tomcat简明示例
- CXF+Spring+Tomcat简明示例
- CXF+Spring+Tomcat简明示例
- CXF+Spring+Tomcat简明示例
- CXF+Spring+Tomcat简明示例
- CXF+Spring+Tomcat简明示例
- CXF+Spring+Tomcat简明示例
- CXF+Spring+Tomcat
- spring+cxf+tomcat错误
- Cxf 集成spring完整示例
- cxf spring 整合使用示例
- Cxf 集成spring完整示例
- cxf + spring 的WS-Security示例
- cxf + spring 的WS-Security示例
- VC6.0中,创建、调用 dll
- 两种DMA触发方式的传输过程
- 【OpenCV】图像几何变换:旋转,缩放,斜切
- Android发送和接收自定义Broadcast
- HDU3535分组背包
- CXF+Spring+Tomcat简明示例
- wifi的设计
- 什么是架构
- yuv序列转avi源代码
- 常用快捷键 vs2005 + sqlserver2005
- 实现函数atoi和itoa
- JAVA中synchronized和lock详解
- Google + SEO
- js 获取当前时间 YYYY-MM-DD