`
human_zx
  • 浏览: 64287 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

xfire与spring结合的几种方式-

阅读更多

接着我上一篇继续学习。

根据org.codehaus.xfire.spring.XFireSpringServlet和org.codehaus.xfire.spring.ServiceBean配置。

1,创建web 动态工程XFireService,倒入包。

创建接口类,我这个接口只有一个方法。

 

package com.zx.xfiretext.webserver;

import com.zx.xfiretext.domain.User;   
public interface UserService {   
    public User queryUserByAccoutId(String accountId);   
  
} 
 

 

 创建接口的实现类:

package com.zx.xfiretext.webserver;

import java.util.Date;    
import org.apache.commons.logging.Log;    
import org.apache.commons.logging.LogFactory;   
  
import com.zx.xfiretext.domain.User;   
import com.zx.xfiretext.webserver.UserService;   
  
public class UserServiceImpl  implements UserService{   
    private static final Log log = LogFactory.getLog(UserServiceImpl.class);   
       
    public User queryUserByAccoutId(String accountId){    
        log.debug("accountId=" + accountId);    
        User user = new User();    
        user.setAccountId("testAccount");    
        user.setLastLogin(new Date());    
        user.setUserName("测试用户");    
        user.setUserId(new Long(123L));   
        return user;    
        }   
} 
 

 

 创建实体类:

 

package com.zx.xfiretext.domain;

import java.io.Serializable;    
import java.util.Date;

public class User implements Serializable{
	 private static final long serialVersionUID = 6517808321041980976L; private Long userId;    
	 private String accountId;   
	 private String userName;    
	 private Date lastLogin;    
	 public String getAccountId()    
	 {   
	     return accountId;    
	 }    
	 public void setAccountId(String accountId)    
	 {    
	     this.accountId = accountId;    
	 }    
	 public Date getLastLogin()    
	 {    
	     return lastLogin;    
	 }    
	 public void setLastLogin(Date lastLogin)    
	 {    
	     this.lastLogin = lastLogin;    
	 }    
	 public Long getUserId()    
	 {    
	     return userId;    
	 }    
	 public void setUserId(Long userId)    
	 {   
	     this.userId = userId;    
	 }    
	 public String getUserName()    
	 {    
	     return userName;    
	 }    
	 public void setUserName(String userName)    
	 {    
	     this.userName = userName;    
	 }  
}
 

   在WEB-INF先新建applicationContext.xml文件,如下:

 

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 
<beans> 
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/> 

<bean id="userService" class="com.zx.xfiretext.webserver.UserServiceImpl"/> 
<bean id="addressingHandler" class="org.codehaus.xfire.addressing.AddressingInHandler"/> 

<bean name="UserService" class="org.codehaus.xfire.spring.ServiceBean"> 
<property name="serviceBean" ref="userServiceBean"/> 
<property name="serviceClass" value="com.zx.xfiretext.webserver.UserService"/>
 <property name="inHandlers"> 
 <list> 
 <ref bean="addressingHandler"/> </list> 
 </property>
</bean>
<bean id="userServiceBean" class="com.zx.xfiretext.webserver.UserServiceImpl"/> 
</beans> 
 

修改web.xml文件,如下

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Spring Image Database</display-name> 
<description>Spring Image Database sample application</description> 
<context-param> 
<param-name>contextConfigLocation</param-name> 
<param-value>/WEB-INF/applicationContext.xml</param-value> 
</context-param>
 <listener> 
 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
 </listener> 
 <servlet> 
 <servlet-name>XFireServlet</servlet-name> 
 <display-name>XFire Servlet</display-name> 
 <servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
  </servlet> 
  <servlet-mapping> 
  <servlet-name>XFireServlet</servlet-name> 
  <url-pattern>/services/*</url-pattern> 
  </servlet-mapping> 
  </web-app> 
 

这样就发布了一个UserService,然后就可以进行测试:

通过ie测试:

启动tomcat,在ie中输入http://localhost:8080/XFireService/services/UserService?wsdl 出现wsdl文挡,或者输入http://localhost:8080/XFireService/services/ 出现

Available Services:

  • UserService [wsdl] ,<!----><!---->

则说明配置成功,

客户端测试:

 首先把服务器端的打成jar包

新建一个web动态工程,添加包,

创建一个测试类:

import java.net.MalformedURLException; 
import java.rmi.RemoteException;
import org.codehaus.xfire.client.XFireProxyFactory; 
import org.codehaus.xfire.service.Service; 
import org.codehaus.xfire.client.*; 
import org.codehaus.xfire.service.binding.ObjectServiceFactory; 
import com.zx.xfiretext.domain.User; 
import com.zx.xfiretext.webserver.UserService; 
public class MyClient 
{ 
	public static void main(String[] args) 
	{
try {
	Service serviceModel = new ObjectServiceFactory() .create(UserService.class); 
	UserService service = (UserService) new XFireProxyFactory().create( serviceModel, "http://localhost:8080/XFireService/services/UserService"); 
	User user = service.queryUserByAccoutId("123"); 
	System.out .println("userId=" + user.getUserId() + ", userName=" + user.getUserName() + ", lastLogin=" + user.getLastLogin()); 
	}
catch (MalformedURLException e) {
	e.printStackTrace(); 
	}
} 
	} 

 

 运行测试类,如果在控制台输入的是

userId=123, userName=测试用户, lastLogin=Thu May 22 11:26:48 CST 2008

则说明测试成功。

Ps:如果出现javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found错误,

错误原因是:
认为是由于jdk1.5 与 tomcat5.0之间的关于 TransformerFactoryImpl 类的冲突造成的。
tomcat-5.0.28\common\endorsed下有两个jar包:xercesImpl.jar和xml-apis.jar,其中的类 javax.xml.transform.TransformerFactory 与jdk1.5中的类org.apache.xalan.processor.TransformerFactoryImpl其实是同一个类。
in tomcat java is called with the following argument:
-Djava.endorsed.dirs="X:\my_app\Portal\tomcat\common\endorsed"
In this directory you find two jar files: xercesImpl.jar and xml-apis.jar needed by tomcat and that must be loaded before all xmsl stuff present in the jdk (1.4 naming problem). And in the file xml-apis.jar the TransformerFactoryImpl is set to "org.apache.xalan.processor.TransformerFactoryImpl".

解决办法:
1. 将xml-apis.jar移出endorsed文件夹。
2. 用xalan系列jar包替换原来的xercesImpl.jar和xml-apis.jar。
xalan系列jar包:serializer.jar、xalan.jar、xercesImpl.jar和xml-apis.jar。

 

 

0
0
分享到:
评论

相关推荐

    XFire与Spring组合发布webservices

    将XFire与Spring结合使用,可以实现以下几种发布Web服务的方式: 1. **基于Spring Bean的配置**:通过在Spring配置文件中定义Bean,可以将Web服务的实现类声明为一个Bean。Spring会自动检测该Bean上的JAX-WS注解...

    xfire-webservice数据格式及集成spring

    配置XFire与Spring的集成通常涉及以下几个步骤: - 引入必要的依赖库,如Spring和XFire的相关jar包。 - 创建一个Spring配置文件,定义Web服务的bean,包括服务接口、实现类和XFire相关的配置。 - 在Spring配置...

    spring1.2.6源码

    Spring框架是Java开发中不可或缺的一部分,它以其IoC(Inversion...在实际的学习过程中,建议先从主要的接口和类开始,逐步深入到具体的实现细节,结合实际项目中的使用情况,将理论与实践相结合,以获得更深刻的领悟。

    Spring + Xfire + 注解方式

    描述中提到的博客链接虽然无法直接访问,但根据常规的博客内容,博主可能详细解释了如何将Spring与Xfire结合,以及如何通过注解的方式来替代传统的XML配置,以实现更加简洁、直观的代码结构。 在使用注解的方式时,...

    spring-xfire编写webservice

    4. **Spring与XFire结合**: - 如何将Spring容器中的Bean导出为Web Service,这涉及到Spring对Web Service的支持和配置,以及XFire如何整合Spring的IoC(Inversion of Control)容器。 - 编写客户端调用代码,包括...

    使用XFire+Spring构建Web Service

    【使用XFire+Spring构建Web Service】是一种在Java平台上开发Web服务的高效方法。XFire作为新一代的Web服务框架,与Axis2并列,因其简洁的API和对Web服务标准的良好支持而受到开发者欢迎。XFire特别强调与Spring框架...

    xfire开发所需jar包

    XFire适用于以下几种情况: 1. 快速构建SOAP Web服务:通过简洁的API,开发者可以迅速创建和发布SOAP服务。 2. 集成现有系统:由于JAX-RPC兼容性,XFire可以作为旧有JAX-RPC系统的升级选择。 3. 易于测试:XFire...

    Spring4.x最新jar包

    5. **测试**:Spring提供了测试模块,支持单元测试和集成测试,可以方便地与JUnit等测试框架结合使用。 在Spring 4.x版本中,有以下关键改进和新特性: 1. **Java 8支持**:Spring 4.x全面支持Java 8,包括Lambda...

    webservice-xfire相关(xfire&wsdl4j;&jaxrpc;&jdom;)

    XFire支持多种协议,如SOAP、RESTful HTTP、JMS等,并且与Spring框架集成良好。它提供了一种直观的方式来定义服务接口和实现,然后自动将它们转换为Web服务。 2. **WSDL4J**: WSDL(Web Services Description ...

    Xfire配置Web Service+Spring+Hibernate详细流程(转)

    Xfire提供了一种方式,可以将Spring的bean暴露为Web服务。通过定义一个服务接口和实现类,我们可以在实现类中注入需要的Spring bean。这样,Web服务调用的方法实际上是在调用Spring管理的bean,间接地访问到...

    XFire demo

    **XFire 与 Maven 结合** Maven 是一个项目管理工具,它简化了构建、依赖管理和项目信息管理。在本项目中,我们利用 Maven 的依赖管理和构建功能来集成 XFire 相关的库,确保项目能够顺利运行。在 `pom.xml` 文件中...

    xfire服务器端

    这种结合为开发人员提供了极大的便利,因为Spring的组件模型可以与Xfire的Web服务功能无缝对接。 首先,让我们深入了解一下Xfire的核心特性。Xfire基于Java语言,它支持SOAP 1.1和1.2规范,同时也支持WS-I基本...

    CXF-Spring相关jar包

    CXF与Spring的结合,使得开发者可以充分利用Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)特性来管理服务的生命周期,简化服务的部署和调用。 CXF-Spring的...

    java webservice XFire技术文档,一个简单列子和一个稍微难的列子

    2. **XFire简介**:文档会介绍XFire框架,包括它的特点、优点以及如何与Spring框架集成,使Web服务的开发更加便捷。 3. **服务端创建**:文档会详细讲解如何使用XFire创建服务端。这通常包括定义服务接口、实现服务...

    cxf与spring集成

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而CXF和Spring都是Java领域中广泛使用的开源框架。CXF是一个强大的Web服务框架,它继承了早期的XFire项目,提供了更全面的功能和更好的性能。Spring则是...

    webservice四种发布方式及客户端调用

    本文将详细介绍四种常见的 WebService 发布方式及其客户端调用方法,包括 CXF、XFire、AXIS1 和 AXIS2,并结合实际案例进行分析。 #### 二、CXF 方式 **1. 概述** - CXF 是 Apache 的一款开源框架,它提供了强大...

Global site tag (gtag.js) - Google Analytics