Spring集成XFire开发WebService

Spring集成XFire开发WebService

 

Spring是目前最流行的 JavaEE Framework,但是使用 Spring Spring-WS开发 WebService却十分繁琐。 XFire是一个简化 WebService开发的开源项目,通过 Spring XFire的结合可以大大简化基于 Spring Framework的应用中的 WebService开发。

Spring XFire可以通过多种方式结合,下文介绍的是笔者常用的一种简单而实用的方法。所用的 Spring版本为 2.0,XFire版本为 1.2.6

1 配置 XFire Servlet

web.xml中加入如下配置:

< 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 > /servlet/XFireServlet/* </ url-pattern >

  </ servlet-mapping >

  < servlet-mapping >

    < servlet-name > XFireServlet </ servlet-name >

    < url-pattern > /services/* </ url-pattern >

  </ servlet-mapping >

2 配置 Spring 的监听器,同基于 spring Web 项目一样 Spring 的监听器是必不可少的。

    < 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 >   

以下是完整的 web.xml 配置文件

<? xml version = "1.0" encoding = "UTF-8" ?>

< web-app version = "2.4"

    xmlns = "http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee

    http://java.sun.com/xml/ns/j2ee/web-app_2_4.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.spring.XFireSpringServlet

    </ servlet-class >

  </ servlet >

  < servlet-mapping >

    < servlet-name > XFireServlet </ servlet-name >

    < url-pattern > /servlet/XFireServlet/* </ url-pattern >

  </ servlet-mapping >

  < servlet-mapping >

    < servlet-name > XFireServlet </ servlet-name >

    < url-pattern > /services/* </ url-pattern >

  </ servlet-mapping >

</ web-app >

3 定义接口及实现服务

定义接口,这个接口中定义要通过 WebService 暴露的方法

package org.ccsoft;

public interface HelloWS {

    public String sayHello(String sb);

}

实现服务

package org.ccsoft;

public class HelloWSImp implements HelloWS {

    public String sayHello (String sb) {

       // TODO Auto-generated method stub

       return "Hello " +sb;

    }

}

4 配置服务

将上文中实现的服务,加入到 spring 的配置文件中。

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <bean id="helloWS" class="org.ccsoft.HelloWSImp"/>

    <bean name="helloService" class="org.codehaus.xfire.spring.ServiceBean">

    <property name="serviceBean" ref="helloWS"/>

    <property name="serviceClass" value="org.ccsoft.HelloWS"/>

    <property name="inHandlers">

      <list>

        <ref bean="addressingHandler"/>

      </list>

    </property>

</bean>

       <bean id="addressingHandler" class="org.codehaus.xfire.addressing.AddressingInHandler"/>

</beans>

好了现在你可以通过 http://127.0.0.1:8080/XFireWS1/services/HelloWS?wsdl 来验证是否部署成功了。

你可能感兴趣的:(Spring集成XFire开发WebService)