webservice-之使用xfire+spring开发(转自勇哥的BLOG)

本文介绍如何使用Spring框架和XFire实现WebService的部署过程。主要内容包括:实现WebService接口的类必须实现特定接口;配置三个必要的XML文件(web.xml, xfire-servlet.xml, applicationContext-webService.xml)以完成服务发布。
摘要由CSDN通过智能技术生成

1 、想要发布成webservice的类,必须实现接口(Spring2.0,Xfile1.2)<o:p></o:p>

23个配置文件(后面详细说)<o:p></o:p>

----------------------------------------------<o:p></o:p>

HelloRemote.java<o:p></o:p>

package test;<o:p></o:p>

public interface HelloRemote {<o:p></o:p>

    public String hello();   <o:p></o:p>

    public String helloTo(String name);   <o:p></o:p>

    public String getJsonData(String pageIndex,String pageSize); <o:p></o:p>

}<o:p></o:p>

----------------------------------------------<o:p></o:p>

HelloBean.java<o:p></o:p>

package test;<o:p></o:p>

import javax.servlet.http.HttpServletRequest;<o:p></o:p>

import javax.servlet.http.HttpSession;<o:p></o:p>

import org.codehaus.xfire.transport.http.XFireServletController;<o:p></o:p>

public class HelloBean implements HelloRemote <o:p></o:p>

{<o:p></o:p>

    public String hello() <o:p></o:p>

    {<o:p></o:p>

        return "hello";<o:p></o:p>

    }<o:p></o:p>

    public String helloTo(String name) <o:p></o:p>

    {<o:p></o:p>

        return " hello " + name + "!";<o:p></o:p>

    }<o:p></o:p>

    private String example() <o:p></o:p>

    {<o:p></o:p>

        // 使用session<o:p></o:p>

        HttpServletRequest request = XFireServletController.getRequest();<o:p></o:p>

        HttpSession session = request.getSession();     <o:p></o:p>

        return " 请求地址:"+request.getLocalAddr()<o:p></o:p>

+", 会话创建时间:"+session.getCreationTime();<o:p></o:p>

    }<o:p></o:p>

    public String getJsonData(String pageIndex, String pageSize) <o:p></o:p>

    {<o:p></o:p>

        String rtnValue = "";<o:p></o:p>

        rtnValue = example();<o:p></o:p>

        return rtnValue;<o:p></o:p>

    }<o:p></o:p>

}<o:p></o:p>

----------------------------------------------<o:p></o:p>

web.xml<o:p></o:p>

<?xml version="1.0" encoding="UTF-8"?><o:p></o:p>

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"<o:p></o:p>

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<o:p></o:p>

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee <o:p></o:p>

    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><o:p></o:p>

    <!-- 配置文件路径开始,指定加载的配置文件 --><o:p></o:p>

    <context-param><o:p></o:p>

        <param-name>contextConfigLocation</param-name><o:p></o:p>

        <param-value><o:p></o:p>

            /WEB-INF/classes/applicationContext*.xml<o:p></o:p>

            classpath:org/codehaus/xfire/spring/xfire.xml<o:p></o:p>

        </param-value><o:p></o:p>

    </context-param><o:p></o:p>

    <!-- 启动时加载SpringContextServlet --><o:p></o:p>

    <listener><o:p></o:p>

        <listener-class><o:p></o:p>

            org.springframework.web.context.ContextLoaderListener<o:p></o:p>

        </listener-class><o:p></o:p>

    </listener><o:p></o:p>

    <listener><o:p></o:p>

        <listener-class><o:p></o:p>

            org.springframework.web.util.IntrospectorCleanupListener<o:p></o:p>

        </listener-class><o:p></o:p>

    </listener><o:p></o:p>

    <!-- XFire 配置 --><o:p></o:p>

    <servlet><o:p></o:p>

        <servlet-name>xfire</servlet-name><o:p></o:p>

        <servlet-class><o:p></o:p>

            org.springframework.web.servlet.DispatcherServlet<o:p></o:p>

        </servlet-class><o:p></o:p>

    </servlet><o:p></o:p>

    <servlet-mapping><o:p></o:p>

        <servlet-name>xfire</servlet-name><o:p></o:p>

        <url-pattern>*.ws</url-pattern><o:p></o:p>

    </servlet-mapping><o:p></o:p>

<o:p> </o:p>

    <welcome-file-list><o:p></o:p>

        <welcome-file>index.jsp</welcome-file><o:p></o:p>

    </welcome-file-list><o:p></o:p>

</web-app><o:p></o:p>

这里注意:classpath:org/codehaus/xfire/spring/xfire.xml必须要写进去。<o:p></o:p>

----------------------------------------------<o:p></o:p>

xfire-servlet.xml 新建这个文件,并且和web.xml放在同一个文件夹。<o:p></o:p>

注意: 名称和位置都不能变。<o:p></o:p>

<?xml version="1.0" encoding="UTF-8"?><o:p></o:p>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" <o:p></o:p>

"http://www.springframework.org/dtd/spring-beans.dtd"><o:p></o:p>

<beans><o:p></o:p>

    <bean       class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><o:p></o:p>

        <property name="urlMap"><o:p></o:p>

            <map><o:p></o:p>

                <entry key="/myHelloService.ws"><!-- 暴露的服务名称 --><o:p></o:p>

                    <ref bean="myTest" /><o:p></o:p>

                </entry><o:p></o:p>

            </map><o:p></o:p>

        </property><o:p></o:p>

    </bean><o:p></o:p>

    <bean id="myTest" parent="webService"<o:p></o:p>

        class="org.codehaus.xfire.spring.remoting.XFireExporter"><o:p></o:p>

        <!-- 定义实现类(指向applicationContext-webService.xml) --><o:p></o:p>

        <property name="serviceBean"><o:p></o:p>

            <ref bean="myHelloBean" /><o:p></o:p>

        </property><o:p></o:p>

        <!-- 定义接口类 --><o:p></o:p>

        <property name="serviceClass"><o:p></o:p>

            <value>test.HelloRemote</value><o:p></o:p>

        </property><o:p></o:p>

    </bean><o:p></o:p>

    <!-- webService 基本配置 --><o:p></o:p>

    <bean id="webService"<o:p></o:p>

        class="org.codehaus.xfire.spring.remoting.XFireExporter"<o:p></o:p>

        abstract="true"><o:p></o:p>

        <property name="serviceFactory"><o:p></o:p>

            <ref bean="xfire.serviceFactory" /><o:p></o:p>

        </property><o:p></o:p>

        <property name="xfire"><o:p></o:p>

            <ref bean="xfire" /><o:p></o:p>

        </property><o:p></o:p>

    </bean><o:p></o:p>

</beans><o:p></o:p>

----------------------------------------------<o:p></o:p>

spring 的配置文件 applicationContext-webService.xml<o:p></o:p>

<?xml version="1.0" encoding="UTF-8"?>   <o:p></o:p>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" <o:p></o:p>

"http://www.springframework.org/dtd/spring-beans.dtd">     <o:p></o:p>

<beans>   <o:p></o:p>

    <bean id="myHelloBean" class="test.HelloBean"></bean>   <o:p></o:p>

</beans><o:p></o:p>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值