在ssh项目已开发中,嵌套使用CXF
1 http://www.apache.org/网站下载CXF项目。准备以下JAR包
2 编写服务端
2.1 新建一个空的WEB工程,我这里命名为ws_test,将其放置于TOMCAT的webapps目录;
2.2 然后在ws_test下面建立WEB-INF文件夹,并在WEB-INF文件夹中建立目录lib;
2.3 将上面提到的JAR包都拷贝到lib目录中;
2.4 在WEB-INF目录中新建web.xml文件,并将如下内容放于其中:
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <web-app 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_2_5.xsd"
- version="2.5">
- <description>
- Web Service Test.
- </description>
- <display-name>Web Service Test</display-name>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath*:applicationContext-server.xml</param-value>
- </context-param>
- <listener>
- <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
- </listener>
- <servlet>
- <servlet-name>CXFService</servlet-name>
- <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>CXFService</servlet-name>
- <url-pattern>/*</url-pattern>
- </servlet-mapping>
- </web-app>
这个配置文件是WEB应用的核心配置文件,如Listener的配置,servlet请求的映射等,这里并配置了启动的时候加载SPRING,并初使化我们的WEBSERVICE服务端配置文件。
2.5 在ECLIPSE中新建JAVA工程,并在工程中新建lib目录,将上面提到的JAR包全部放到lib目录,并将他们全部加入到classpath中;
2.6 增加服务端的JAVA类:
- package com.use.test.ws.entity;
- public class User {
- int id ;
- String name = null;
- String address = null;
- String email = null;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- }
- package com.use.test.ws.server;
- import javax.jws.WebParam;
- import javax.jws.WebService;
- import javax.jws.soap.SOAPBinding;
- import javax.jws.soap.SOAPBinding.Style;
- import com.use.test.ws.entity.User;
- /**
- * <b>function:</b>定制客户端请求WebService所需要的接口
- */
- @WebService
- @SOAPBinding(style = Style.RPC)
- public interface IService {
- public User getUserByName(@WebParam(name = "name") String name);
- public void setUser(User user);
- }
- package com.use.test.ws.server;
- import java.util.Date;
- import javax.jws.WebParam;
- import javax.jws.WebService;
- import javax.jws.soap.SOAPBinding;
- import javax.jws.soap.SOAPBinding.Style;
- import com.use.test.ws.entity.User;
- /**
- * <b>function:</b> WebService传递复杂对象,如JavaBean、Array、List、Map等
- */
- @WebService
- @SOAPBinding(style = Style.RPC)
- @SuppressWarnings("deprecation")
- public class TestService implements IService {
- public User getUserByName(@WebParam(name = "name") String name) {
- User user = new User();
- user.setId(new Date().getSeconds());
- user.setName(name);
- user.setAddress("china");
- user.setEmail(name + "@test.com");
- return user;
- }
- public void setUser(User user) {
- System.out.println("############Server setUser###########");
- System.out.println("setUser:" + user);
- }
- }
2.7 在src目录下建立applicationContext-client.xml,并放入以下内容:
- <span xmlns="http://www.w3.org/1999/xhtml" style=""><span xmlns="http://www.w3.org/1999/xhtml" style=""><?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:jaxws="http://cxf.apache.org/jaxws"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd
- http://cxf.apache.org/jaxws
- http://cxf.apache.org/schemas/jaxws.xsd">
- <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"/>
- <bean id="userServiceBean" class="com.use.test.ws.server.TestService"/>
- <bean id="inMessageInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
- <bean id="outLoggingInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
- <jaxws:server id="userService" serviceClass="com.use.test.ws.server.IService" address="/Users">
- <jaxws:serviceBean>
- <ref bean="userServiceBean"/>
- </jaxws:serviceBean>
- <jaxws:inInterceptors>
- <ref bean="inMessageInterceptor"/>
- </jaxws:inInterceptors>
- <jaxws:outInterceptors>
- <ref bean="outLoggingInterceptor"/>
- </jaxws:outInterceptors>
- </jaxws:server>
- </beans>
- </span></span><span style="color:#099000;"><span style="color:#000000;font-weight: bold;"><span style="color:#000000;font-weight: bold;"></span></span></span>
2.8 将建立的JAVA工程导出jar包,只导出src下面的内容即,并将这个jar包放到上面的TOMCAT工程中的ws_test/WEB-INF/lib目录下,并启动TOMCAT服务器;
2.9 启动成功后,此时访问URL:http://localhost:8080/ws_test/Users?wsdl,应该会看到WSDL的输出。
3 编写客户端
3.1 独立的客户端请求类
- package com.use.test.ws.client;
- import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
- import com.use.test.ws.entity.User;
- import com.use.test.ws.server.IService;
- public class TestClient {
- public static void main(String[] args) {
- JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
- factory.setServiceClass(IService.class);
- factory.setAddress("http://localhost:8080/ws_test/Users");
- IService service = (IService) factory.create();
- System.out.println("#############Client getUserByName##############");
- User user = service.getUserByName("hoojo");
- System.out.println(user);
- user.setAddress("China-Guangzhou");
- service.setUser(user);
- }
- }
点击右键就可以运行这个类。
3.2 与SPRING的集成,首先需要在src下面建立配置文件applicationContext-client.xml,将输入以下内容:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:jaxws="http://cxf.apache.org/jaxws"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd
- http://cxf.apache.org/jaxws
- http://cxf.apache.org/schemas/jaxws.xsd">
- <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"/>
- <jaxws:client id="userWsClient" serviceClass="com.use.test.ws.server.IService" address="http://localhost:8080/ws_test/Users"/>
- </beans>
3.3 建立JAVA类
- package com.use.test.ws.client;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import com.use.test.ws.entity.User;
- import com.use.test.ws.server.IService;
- /**
- * <b>function:</b>请求Spring整合CXF的WebService客户端
- */
- public class SpringUsersWsClient {
- public static void main(String[] args) {
- ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext-client.xml");
- IService service = ctx.getBean("userWsClient", IService.class);
- System.out.println("#############Client getUserByName##############");
- User user = service.getUserByName("hoojo");
- System.out.println(user);
- user.setAddress("China-Guangzhou");
- service.setUser(user);
- }
- }
直接运行这个类就OK了。
原文转载自:http://blog.csdn.net/fenglibing/article/details/16842587
在此基础上使用遇到了一些问题(很多是由于包未导入,因为cxf的包实在太多)
1.The prefix "jaxws" for element "jaxws:server" is not bound.
解决方法:首先导入cxf的包,然后在头部增加xmlns:jaxws="http://cxf.apache.org/jaxws"
且将http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd插入xsi:schemaLocation中去。
2.加载配置文件失败cxf.xml
解决方法:首先导入cxf的包,然后使用<import resource="classpath*:META-INF/cxf/cxf.xml"/>
注意classpath后面需要加入*。
3.关掉 available soap services page
这个坑爹的问题由于缺少stax2-api-3.1.4.jar包,启动没异常,调用出异常。
再则是匹配路径导致的:例如 <jaxws:server id="userService" serviceClass="org.service.IUserService" address="/webservice/user"> 配置了一个地址,在web-xml文件的匹配地址/webservice/*
导致输出这个available soap services page。
CXF应该是web-xml文件的匹配地址/webservice/*在这里找到servlet类,然后地址配置这个就可以address="user"> 找到
相关推荐
ssh+cxf整合发布webservice实例,详细解释配置过程,下载解压即可使用。
spring+struts+hibernate+cxf整合及单个cxf测试样例,详细介绍ssh+cxf配置过程,及执行顺序。
ssh框架整合cxf(webservice),ssh案例(增、删、改、查),发布webservice,客户端调用,该工程自带jar包,mysql连接池,自动建库、建表。 ①直接解压,导入ssh2cxf项目 ②用tomcat启动ssh2cxf项目 ③在浏览器输入...
slf4j-api.jar.zip CXF整合SSH你可能需要它
slf4j-all-log4j12-1.4.3.jar.zip CXF整合SSH你可能需要它
SSH整合cxf webservice实例
CXF WebServices整合SSH2和Uploadify上传控件的代码,本人已做测试能够跑通. 请把服务端和客户端部署在不同的Web应用服务器上.
通过CXF方式创建带用户认证的Webservice接口(含调用程序)与SSH框架完美整合。
文档里详细描述了再SSH里,怎么配置CXF,并有一系列Demo供参考。
一步一步详细的配置说明。外加代码。jar包太大只好截图相送。解决一下问题:1.在网上找到的资料大多是低版本,遇到的问题是读取xml失败 2.网上资料大多是只有spring+xfire 含有Hibernate的少 3.... 4.... 5....
该整合包是我做的视频系统,资源管理系统,及考场系统项目中lib里打包出来的,应用中还有别的包我给选出来了,由于整个整合包太大,我只抽取了ssh2的相关包打包发布了,如果有别的应用整合包的需求可以联系我。...
Maven_day02.Maven整合SSH.私服安装配置 12-SSH企业案例2_ERP_项目整合(学习15天) ERP_day01_ERP简介,软件设局.环境搭建.部门管理列表查询 ERP_day02_Dep部门表的_条件查询,分页,增加,删除 ERP_day03_Dep代码...
熟悉Spring、Spring MVC、MyBatis、Hibernate、Spring Boot、SpringData等主流开发框架,能进行SSH、SSM、SSS框架整合开发; 熟练使用关系型数据库MySQL及非关系型数据库Redis进行数据存储,对Oracle数据库有一定...
系统中通过 cxf webservice引擎,将统计服务对外公开,可实现第三方系统的无 缝整合. .利用aop + scheduler 采用动态表实现日志管理,提高日志表的存储和访问能力. .集成 spring cache ,对 service层用户参与调查...
提供CXF WebService接口,面向SOA,可与其它系统完美整合 集成JBOSS RULE 5规则引擎集成,灵活业务处理 后台大量封装好的基础类,提供简单、易用的调用方式 前台提供完整的管理系统开发框架,基于JQuery技术 包括:...