`

XFire+Spring构建Web Service

    博客分类:
  • java
阅读更多

       以前一直没有时间学习Web Service,今天因为项目需要,所以晚上学习了下,感觉不是太难,废话少说了,说步骤。    

      在MyEclipse中新建Web工程,名为webservice_test。选择该工程后,点击右键选择MyEclipse->Add Web Service Capabilities,再点击右键选择MyEclipse->Add Spring Capabilities。

      首先在WEB-INF下建立两个配置Spring配置文件,一个为applicationContext.xml,该文件用来定义本工程的bean,一个为xfire-servlet.xml,用来配置XFire的相关bean。修改后的web.xml的内容如下所示:

<!--EndFragment-->

<?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">
	<servlet>
		<servlet-name>XFireServlet</servlet-name>
		<servlet-class>
			org.codehaus.xfire.spring.XFireSpringServlet
		</servlet-class>
		<load-on-startup>0</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>XFireServlet</servlet-name>
		<url-pattern>/services/*</url-pattern>
	</servlet-mapping>
	<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>
	<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>*.do</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

 

Web Service的接口类HelloWorld.java和对应实现类HelloWorldImpl.java 

 

<!--EndFragment-->
package webservice;

public interface HelloWorld {
	String sayHelloWorld(String name);

}

 

package webservice;

public class HelloWorldImpl implements HelloWorld {

	public String sayHelloWorld(String name) {
		String helloWorld = "hello," + name;
		return helloWorld;
	}
}

 

      在applicationContext.xml文件中配置对应的bean——HelloWorldBean,该xml文件的内容如下:

    <!--EndFragment-->

<?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-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" />

	<bean
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="urlMap">
			<map>
				<entry key="/HelloWorldService.do">
					<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为 Spring提供了方便易用的导出器XFireExporter,借助该导出器的支持,我们可以在Spring容器中将一个POJO导出为Web Service。HelloWorld是业务服务类,在此拥有一个sayHelloWorld的方法,我们希望将此方法开放为Web Service。在实际应用中,如果某个类具有众多的方法,而其中的某些方法不需要开放为Web Service的情况下,我们可以定义一个窄接口,该接口中只需定义那些开放为Web Service的业务方法。

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

在本实例中,通过定义一个baseWebService,其余的webService配置都将该bean作为父bean,这样可以简化Spring的配置,不需要多次引入serviceFactory和xfire。

 

     在上一步操作完成之后,的这个简单的Web Service已经编写完毕,下面让来看看自己的劳动成果吧。

    浏览器中输入地址:http://localhost:8080/webservice_test/HelloWorldService.do?wsdl,我们可以看到HelloWorldService对应的WSDL信息,阅读这个WSDL文档,我们可以知道HelloWorld的sayHelloWorld方法已经被成功地发布为Web Service了。

<!--EndFragment-->
分享到:
评论

相关推荐

    使用XFire+Spring构建Web Service

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

    使用XFire+Spring构建Web Service步骤以及源代码.rar

    总之,使用XFire和Spring构建Web服务允许你利用Spring的灵活性和XFire的效率来创建高性能的服务。这种方式使得服务的开发、管理和维护变得更加简单,尤其适合大型企业级应用。通过实践这个教程,你不仅可以学习到Web...

    使用XFire+Spring构建Web Service步骤

    总结,使用XFire和Spring构建Web Service,可以利用Spring的IoC和AOP特性简化服务的创建和管理,同时XFire提供了高效且灵活的Web Service实现。通过以上步骤,开发者可以快速地搭建自己的Web Service,并与其他系统...

    使用XFire+Spring构建Web Service(二).doc

    总结来说,这个例子不仅展示了如何使用XFire+Spring构建Web服务,还涵盖了处理复杂数据类型、对象序列化、服务发布、异常处理等多个关键点。通过这样的实践,开发者可以更好地理解Web服务的实现原理,并能够灵活地...

    XFire+Spring发布Web Service(一)

    在"XFire+Spring发布Web Service(一)"这个主题中,我们主要关注的是如何设置客户端来消费发布的Web服务。客户端代码是与服务端进行交互的部分,通常包括调用服务接口、处理响应等操作。 首先,你需要在你的项目中...

    xfire+spring开发webservice

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

    xfire+spring+webservice例子

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

    XFire+Spring webwervice

    【XFire+Spring Web Service】是一个结合了XFire和Spring框架的解决方案,用于构建高效、易用的Web服务。...对于需要快速构建Web服务并期望与Spring生态系统紧密集成的开发者来说,这是一个理想的解决方案。

    使用XFire+Spring构建WebService

    在IT行业中,构建Web服务是常见的任务之一,而Spring框架和XFire的结合提供了一种高效、灵活的方式来创建和消费SOAP(Simple Object Access Protocol)Web服务。本文将深入探讨如何利用XFire和Spring来构建...

    xfire+spring+hibernate的一种整合方式

    6. **适用场景**:这种整合方式适用于需要构建Web服务并依赖于数据库操作的Java应用,特别是那些希望以面向对象的方式编写业务逻辑,同时需要灵活发布和调用Web服务的项目。 7. **注意事项**:尽管这种整合方式在...

Global site tag (gtag.js) - Google Analytics