`

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使用XFire+Spring构建Web Service使用XFire+Spring构建Web Service使用XFire+Spring构建Web Service使用XFire+Spring构建Web Service使用XFire+Spring构建Web Service

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

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

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

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

    使用XFire+Spring构建Web Service步骤

    使用XFire+Spring构建Web Service步骤 java

    使用XFire+Spring构建Web+Service

    1 支持一系列Web Service的新标准--JSR181、WSDL2.0 、JAXB2、WS-Security等; 2 使用Stax解释XML,性能有了质的提高。XFire采用Woodstox 作Stax实现; 3 容易上手,可以方便快速地从pojo发布服务; 4 支持...

    XFire+Spring webwervice

    使用XFire+Spring构建Web Service.doc 该文章讲解了整个的配置流程,按照该流程可以完成框架搭建。该文章是转载其他人的,因为没有积分,所以不得以而为之。惭愧。

    xfire与spring集成案例

    使用XFire+Spring构建Web Service。自己参考网上的讲解写的例子。里面有help.txt 介绍了我参考的xfire+spring集成的网址。

    Web Service框架xfire与spring集成开发流程

    XFire 是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,帮助你方便快速地...并且因为XFire为Spring提供的支持,使得我们可以很容易在Spring中使用XFire构建Web Service应用。

    webservice例子

    在Spring中使用XFire构建Web Service应用.例子不错,值得下载看看。

    Spring中文帮助文档

    13.1.2. Spring Web MVC框架的特点 13.2. DispatcherServlet 13.3. 控制器 13.3.1. AbstractController 和 WebContentGenerator 13.3.2. 其它的简单控制器 13.3.3. MultiActionController 13.3.4. 命令控制器 ...

    Spring API

    13.1.2. Spring Web MVC框架的特点 13.2. DispatcherServlet 13.3. 控制器 13.3.1. AbstractController 和 WebContentGenerator 13.3.2. 其它的简单控制器 13.3.3. MultiActionController 13.3.4. 命令控制器 ...

Global site tag (gtag.js) - Google Analytics