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成功
分享到:
相关推荐
标题“使用xfire+spring构建webservice”指出的是一个关于如何利用XFire和Spring框架创建Web服务的教程。XFire是早先的一个用于构建Web服务的开源Java库,它简化了SOAP(简单对象访问协议)服务的开发。而Spring框架...
Spring框架是Java企业级应用开发的首选工具,而XFire则是一个早期的、基于Apache CXF的用于构建和消费Web服务的库。本篇文章将深入探讨如何使用XFire与Spring框架一起开发Web服务。 首先,我们需要理解XFire的基本...
标题中的“xfire+spring+webservice+client”是一个关于集成XFire、Spring框架和Web服务客户端的专题,这涉及到Java开发中的一项重要技术——Web服务的消费与提供。在这个主题下,我们将深入探讨以下几个核心知识点...
通过这个教程,开发者能够掌握如何使用XFire和Spring构建Web服务,以及如何利用Maven进行项目管理。虽然XFire现在已经过时,但这个过程可以帮助理解现代Web服务框架如Apache CXF的工作原理,同时加深对Spring和Maven...
在“XFire+Spring构建WebService整合”中,Spring可以被用来管理XFire的生命周期,以及配置Web服务的bean。 3. **Hibernate**:Hibernate是Java领域最知名的ORM框架之一,它简化了与数据库的交互,使得开发者可以...
2. `使用XFire+Spring构建Web Service(一)——helloWorld篇 - 阿蜜果 - BlogJava.mht`:这是一个关于Web服务创建的教程文档,可能详细介绍了如何使用XFire和Spring创建一个简单的"Hello World"服务。 3. `....
XFire、Spring和Web服务的结合为开发者提供了强大的工具,使得构建、部署和管理Web服务变得更为简便。本文将深入探讨XFire与Spring框架如何协同工作,以及它们如何在Web服务领域发挥重要作用。 XFire,作为一款轻量...
在使用XFire和Spring构建Web服务时,需要注意以下几点: - 确保所有必要的库都已正确导入,避免依赖冲突。 - 调试Web服务时,可以使用SOAP UI等工具模拟客户端请求,检查服务是否正常工作。 - 注意命名空间和WSDL...
本篇文章将详细探讨如何使用XFire和Spring来构建Web Service,以及它们各自的核心特性与优势。 首先,XFire是一个基于Java的轻量级Web服务框架,它允许开发者快速地创建和部署SOAP Web服务。XFire提供了直观的API和...
这四个关键词——"maven"、"xfire"、"spring"和"webservice"——构成了一个完整的开发流程,下面将逐一解析它们在构建Web服务中的作用。 首先,Maven是Apache软件基金会开发的一款项目管理和集成工具。它通过提供...
本项目“Xfire+Spring+Hibernate WebService”是一个采用特定技术栈构建的Web服务解决方案。下面将详细阐述这个项目中涉及的核心技术和它们之间的交互。 【Xfire】: Xfire是一款开源的Java库,它提供了创建和消费...
在本教程中,我们将深入探讨如何使用Spring和XFire编写Web服务的完整配置,并通过实际案例来学习这一过程。 首先,我们需要了解Spring和XFire的基础。Spring框架提供了一个名为Spring-WS的模块,专门用于构建Web...
本示例将详细介绍如何使用XFire和Spring框架来构建一个Web服务。XFire是Apache CXF的一部分,它是一个用于创建、部署和管理Web服务的开源工具,而Spring是一个广泛使用的Java企业级应用开发框架,提供了一个全面的...