实现WebServices二:使用XFireSpringServlet与ServiceBean

来源:互联网 发布:在虚拟机上配置nginx 编辑:程序博客网 时间:2024/05/17 21:39


使用XFire进行web services开发有三种方式:

1. 不集成Spring: 配置services.xml 文件和web.xml(配置org.codehaus.xfire.transport.http.XFireConfigurableServlet servlet)

2. Spring使用XFireSpringServlet方式。

3.Spring集成使用org.springframework.web.servlet.DispatcherServlet方式


使用XFireSpringServlet进行实现的步骤:

1、定义服务接口;

2、实现服务接口;

3、更新web.xml添加Spring监听器相关XFire相关的servlet(即添加XFireSpringServlet)和Spring监听器;

4、在Spring文件application.xml配置ServiceBean;

5、测试web services是否部署成功


1、定义服务接口

package com.mybank.xfire.example;


public interface IBankingService {

     public String transferFunds(  

          String fromAccount, String toAccount, double amount, String currency);  

}

注:服务接口不能少,客户端访问web services就是通过接口进行访问的,实现类对客户端是透明的。


2、实现服务接口

package com.mybank.xfire.example;


import java.text.NumberFormat; i

import java.text.DecimalFormat;


public class BankingService implements IBankingService {  


    public BankingService(){      

    }  


    public String transferFunds(  

        String fromAccount, String toAccount, double amount, String currency){  


        String statusMessage = "";  

        try {  

            NumberFormat formatter = new DecimalFormat("###,###,###,###.00");        

            statusMessage = "COMPLETED: " + currency + " " + formatter.format(amount)+  

            " was successfully transferred from A/C# " + fromAccount + " to A/C# " + toAccount;  

        } catch (Exception e){  

            statusMessage = "BankingService.transferFunds(): EXCEPTION: " + e.toString();  

        }  

        return statusMessage;  

    }

}


注:BankingService的transferFunds返回类型是String,如果是复杂类型需要Aegis进行数据绑定。


3、配置web.xml

<web-app>

<display-name>Spring Image Database</display-name>

<description>Spring Image Database sample application</description>


<!--配置spring上下文文件路径-->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>

classpath:applicationContext.xml

</param-value>

</context-param>


<!--配置log4j日志监听器-->

<listener>

<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>

</listener>


<!-- 配置spring上下文加载监听器 -->

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<servlet>


<!--配置处理XFire处理web服务请求的servlet-->

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

<display-name>XFire Servlet</display-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>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>


</web-app>

注:使用Spring管理XFire bean就应该配置Spring监听器和spring上下文配置文件路径。


4、在Spring上下文配置文件application.xml中配置XFire ServiceBean

<beans>

   <!--引入xfire.xml 这个文件包含了定义TransportManager,ServiceRegistry,和一些简单的ServiceFactorys的bean-->

   <import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>


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

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

      <property name="serviceClass" value="com.mybank.xfire.example.IBankingService"/>

      <property name="inHandlers">

         <list>

            <ref bean="addressingHandler"/>

         </list>

      </property>

   </bean>


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

   <bean id="bank" class="com.mybank.xfire.example.BankingService"/>

</beans>

 


5、测试,略

原创粉丝点击