`
yaodi0818
  • 浏览: 135838 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用XFire+Spring构建WebService

阅读更多
XFire是完全基于流数据处理进行工作的,这意味着XFire不是将整个SOAP文档缓存在内存中,而是以管道的方式接收SOAP流数据。这种工作方式的转变带来了可观的性能回报,同时节省了内存的占用
XFire从管道中接收一个SOAP请求到返回一个SOAP响应,在管道调用的任何一个阶段,XFire都可以添加一些额外的Handler,在对消息进行加工处理后再传入到下一个阶段中
在SOAP请求消息对WebService发起真正调用之前,分别会经过传输、预转发、转发、策略实施、用户信息处理、预调用、服务调用等阶段

下面实例一个XFire于Spring集成的helloWorld的简单实例

(1)、在MyEclipse中新建Web工程,名为webservice_spring
为项目增加XFire支持的类库,把xfire-1.2.6里lib所有jar和xfire-all-1.2.6.jar拷贝到WEB-INF/lib下
因为XFire集成Spring,所以不需要加入spring类库支持

(2)、WEB-INF下建立两个Spring配置文件,一个为applicationContext.xml用来定义本工程的bean,一个为xfire-servlet.xml用来配置XFire的相关bean

(3)、web.xml的配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- Spring配置 -->
    <context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>/WEB-INF/applicationContext.xml,/WEB-INF/xfire-servlet.xml</param-value>
    </context-param>
    <listener>
       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener> 
       <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
    </listener>
<!-- XFire配置 -->
    <servlet>   
       <servlet-name>xfire</servlet-name>   
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>   
    <servlet-mapping> 
       <servlet-name>xfire</servlet-name>
       <url-pattern>*.ws</url-pattern>
    </servlet-mapping>
    <servlet>
<!-- 配合Spring容器中XFire一起工作的Servlet-->
       <servlet-name>XFireServlet</servlet-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>


(4)、WebService的接口类HelloWorld.java和对应的实现类HelloWorldImpl.java
package webservice;
public interface HelloWorld {	
    String sayHelloWorld(String name);
}

package webservice;
public class HelloWorldImpl implements HelloWorld {
	@Override
	public String sayHelloWorld(String name) {
		String helloWorld = "hello," + name;
	    return helloWorld;
	}
}


(5)、Spring配置文件
applicationContext.xml文件中配置对应的bean
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="HelloWorldBean" class="webservice.HelloWorldImpl"/>
</beans>

XFire为Spring提供了方便易用的导出器XFireExporter,借助该导出器的支持,我们可以在Spring容器中将一个POJO导出为WebService
HelloWorld是业务服务类,在此拥有一个sayHelloWorld的方法,我们希望将此方法开放为WebService
在实际应用中,如果某个类具有众多的方法,而其中的某些方法不需要开放为WebService的情况下,可以定义一个窄接口,该接口中只需定义那些开放为WebService的业务方法

xfire-servlet.xml文件中导出器的设置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <!-- 引入XFire预配置信息 -->
    <import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
    <!-- 定义访问的url -->
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
       <property name="urlMap">             
           <map>                 
              <entry key="/HelloWorldService.ws">                  
                  <ref bean="HelloWorldService" />                 
              </entry>             
           </map>         
       </property>     
    </bean>     
    <!-- 使用XFire导出器 -->
    <bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" lazy-init="false" abstract="true">
       <!-- 引用xfire.xml中定义的工厂 -->
       <property name="serviceFactory" ref="xfire.serviceFactory" />
       <!-- 引用xfire.xml中的xfire实例 -->
       <property name="xfire" ref="xfire" />
    </bean>
    <bean id="HelloWorldService" parent="baseWebService">
       <!-- 业务服务bean -->
       <property name="serviceBean" ref="HelloWorldBean" />
       <!-- 业务服务bean的窄接口类 -->
       <property name="serviceClass" value="webservice.HelloWorld" />
    </bean>
</beans>

在该配置文件中引入了xfire.xml这个Spring配置文件,它是在XFire核心JAR包中拥有一个预定义的Spring配置文件,它定义了XFire在Spring中必须用到的一些Bean和资源,需要引入这个预定义的配置文件从该配置文件中可以看出,通过XFireExporter将业务类导出为WebService,对于任何导出器都需要引入XFire环境,即serviceFactory和xfire,这是标准的配置
ServiceFactory是XFire的核心类,它可以将一个POJO生成为一个WebService

(6)、在上一步操作完成之后,这个简单的WebService已经编写完毕,下面来看看效果吧!!!
在浏览器中输入地址:http://localhost:8080/webservice_spring/HelloWorldService.ws?wsdl
可以看到HelloWorldService对应的WSDL信息,只要拿到这个WSDL就可以开发相应的客户端调用程序了


(7)、根据服务地址创建客户端调用程序
在src目录下建立客户端调用的Spring配置文件client.xml。在client.xml配置文件中定义了一个testWebService的bean,该bean访问wsdlDocumentUrl为http://localhost:8080/webservice_spring/HelloWorldService.ws?wsdl的WSDL
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="testWebService" class="org.codehaus.xfire.spring.remoting.XFireClientFactoryBean">
       <property name="serviceClass">          
   <value>webservice.HelloWorld</value>       
       </property>      
        <property name="wsdlDocumentUrl">         
<value>http://localhost:8080/webservice_helloworld/HelloWorldService.ws?wsdl</value>       
        </property>      
     </bean>
</beans>


(8)、在WebServiceClientTest.java文件中获得HelloWorld,并调用它的sayHelloWorld方法来完成测试
package webservice;
import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
import org.springframework.context.ApplicationContext;
public class WebServiceClientTest { 
    HelloWorld helloWorld = null;
    public static void main(String[] args) {
       WebServiceClientTest test = new WebServiceClientTest();
       test.testClient();
    } 
    public void testClient() {
       ApplicationContext ctx = new ClassPathXmlApplicationContext("client.xml");
       helloWorld = (HelloWorld) ctx.getBean("testWebService");
       System.out.println(helloWorld.sayHelloWorld("北京"));
    }
}


在启动webservice_spring工程的情况下,运行WebServiceClientTest类,可看到控制台包含如下信息:hello,北京
由此可看出调用WebService成功
分享到:
评论
1 楼 alert_mm 2009-04-15  
  很好 很详细 正是我需要的

相关推荐

    使用xfire+spring构建webservice

    标题“使用xfire+spring构建webservice”指出的是一个关于如何利用XFire和Spring框架创建Web服务的教程。XFire是早先的一个用于构建Web服务的开源Java库,它简化了SOAP(简单对象访问协议)服务的开发。而Spring框架...

    xfire+spring开发webservice

    Spring框架是Java企业级应用开发的首选工具,而XFire则是一个早期的、基于Apache CXF的用于构建和消费Web服务的库。本篇文章将深入探讨如何使用XFire与Spring框架一起开发Web服务。 首先,我们需要理解XFire的基本...

    xfire+spring+webservice+client

    标题中的“xfire+spring+webservice+client”是一个关于集成XFire、Spring框架和Web服务客户端的专题,这涉及到Java开发中的一项重要技术——Web服务的消费与提供。在这个主题下,我们将深入探讨以下几个核心知识点...

    xfire+spring+maven构建webservice服务器和客户端

    通过这个教程,开发者能够掌握如何使用XFire和Spring构建Web服务,以及如何利用Maven进行项目管理。虽然XFire现在已经过时,但这个过程可以帮助理解现代Web服务框架如Apache CXF的工作原理,同时加深对Spring和Maven...

    ssh及XFire+Spring构建WebService

    在“XFire+Spring构建WebService整合”中,Spring可以被用来管理XFire的生命周期,以及配置Web服务的bean。 3. **Hibernate**:Hibernate是Java领域最知名的ORM框架之一,它简化了与数据库的交互,使得开发者可以...

    xfire+spring+webservice例子

    2. `使用XFire+Spring构建Web Service(一)——helloWorld篇 - 阿蜜果 - BlogJava.mht`:这是一个关于Web服务创建的教程文档,可能详细介绍了如何使用XFire和Spring创建一个简单的"Hello World"服务。 3. `....

    xfire+spring+webservice

    XFire、Spring和Web服务的结合为开发者提供了强大的工具,使得构建、部署和管理Web服务变得更为简便。本文将深入探讨XFire与Spring框架如何协同工作,以及它们如何在Web服务领域发挥重要作用。 XFire,作为一款轻量...

    xfire+spring+webservice入门例子

    在使用XFire和Spring构建Web服务时,需要注意以下几点: - 确保所有必要的库都已正确导入,避免依赖冲突。 - 调试Web服务时,可以使用SOAP UI等工具模拟客户端请求,检查服务是否正常工作。 - 注意命名空间和WSDL...

    使用XFire+Spring构建Web Service

    本篇文章将详细探讨如何使用XFire和Spring来构建Web Service,以及它们各自的核心特性与优势。 首先,XFire是一个基于Java的轻量级Web服务框架,它允许开发者快速地创建和部署SOAP Web服务。XFire提供了直观的API和...

    xfire+spring开发webservice的例子

    这四个关键词——"maven"、"xfire"、"spring"和"webservice"——构成了一个完整的开发流程,下面将逐一解析它们在构建Web服务中的作用。 首先,Maven是Apache软件基金会开发的一款项目管理和集成工具。它通过提供...

    Xfire+spring+hiebrnate webService

    本项目“Xfire+Spring+Hibernate WebService”是一个采用特定技术栈构建的Web服务解决方案。下面将详细阐述这个项目中涉及的核心技术和它们之间的交互。 【Xfire】: Xfire是一款开源的Java库,它提供了创建和消费...

    spring+xfire( 编写webservice完整配置+案例)

    在本教程中,我们将深入探讨如何使用Spring和XFire编写Web服务的完整配置,并通过实际案例来学习这一过程。 首先,我们需要了解Spring和XFire的基础。Spring框架提供了一个名为Spring-WS的模块,专门用于构建Web...

    使用xfire+spring编写webservice例子,供大家学习与交流

    本示例将详细介绍如何使用XFire和Spring框架来构建一个Web服务。XFire是Apache CXF的一部分,它是一个用于创建、部署和管理Web服务的开源工具,而Spring是一个广泛使用的Java企业级应用开发框架,提供了一个全面的...

Global site tag (gtag.js) - Google Analytics