<!--StartFragment -->
1.MyEclipse下新建Web Service项目,选择Xfire......
2.编写Service,分别写接口类和其实现类。
接口类:
package edu.tyut.caiqm.services;//Generated by MyEclipse
public interface IHello { public String example(String message); public String sayHello(String s);}
实现类:
package edu.tyut.caiqm.services;//Generated by MyEclipse
public class HelloImpl implements IHello { public String example(String message) { return message; }
public String sayHello(String s) { return "Hello, "+s+" !"; } }
3.加入对Spring的支持,这里选择Spring 1.2版本。
4.编写配置文件。
4.1 Web.xml(加入对Spring的监听和XFire的Servlet)
<?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"> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:org/codehaus/xfire/spring/xfire.xml /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> <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> --> <servlet> <servlet-name>XFireServlet</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet <!-- org.codehaus.xfire.spring.XFireSpringServlet --> </servlet-class> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
4.2 Spring配置文件:
<?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="mathBean" class="edu.tyut.caiqm.services.HelloImpl" />
</beans>
4.3 XFire服务定义配置:
文件名为:XFireServlet-servlet.xml 绿色标记部分为web.xml中org.springframework.web.servlet.DispatcherServlet 项配置的名称。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd"><beans> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="urlMap"> <map> <entry key="/MathService"> 服务名 <ref bean="math" /> </entry> </map> </property> </bean> <bean id="math" class="org.codehaus.xfire.spring.remoting.XFireExporter"> <property name="serviceFactory"> <ref bean="xfire.serviceFactory" /> </property> <property name="xfire"> <ref bean="xfire" /> </property> <property name="serviceBean"> <ref bean="mathBean" /> </property> <property name="serviceClass"> <value>edu.tyut.caiqm.services.IHello</value> 接口的全路径 </property> </bean></beans>
5. 目录结构为:
6. 测试部分:
6.1 先测试wsdl: 启动Tomcat后,浏览器中输入:http://localhost:9090/ServicesSpring/services/MathService?wsdl
6.2 编写测试类:
package edu.tyut.caiqm.Client;
import org.codehaus.xfire.XFireFactory;import org.codehaus.xfire.client.XFireProxyFactory;import org.codehaus.xfire.service.Service;import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import edu.tyut.caiqm.services.IHello;
public class test { public static void main(String [] args){ Service servModel=new ObjectServiceFactory().create(IHello.class); XFireProxyFactory factory=new XFireProxyFactory(XFireFactory.newInstance().getXFire()); String endpoint="http://localhost:9090/ServicesSpring/services/MathService"; try{ IHello service=(IHello)factory.create(servModel, endpoint); String s=service.sayHello("caiqm"); System.out.println(s); }catch(Exception e){ System.out.println("error"); } }}结果:Hello, caiqm !
相关资源:webservice xfire整合spring(webservice配置采用注解)例子