加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

实现WebServices二:使用XFireSpringServlet与ServiceBean

发布时间:2020-12-17 00:12:51 所属栏目:安全 来源:网络整理
导读:使用XFire进行web services开发有三种方式: 1. 不集成Spring: 配置 services.xml 文件和web.xml(配置 org.codehaus.xfire.transport.http.XFireConfigurableServlet servlet ) 2. Spring使用XFireSpringServlet方式。 3.Spring集成使用 org.springframewor


使用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、实现服务接口

import java.text.NumberFormat; i

import java.text.DecimalFormat;

public class BankingService implements IBankingService { ?

? ? public BankingService(){ ? ? ?

? ? } ?

? ? public String transferFunds( ?

? ? ? ? String fromAccount,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-class>org.springframework.web.context.ContextLoaderListener</listener-class>

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

<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、测试,略

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读