Spring+XFire开发[web service]

Spring+XFire开发[web service]

 

经过4天的努力,终于把XFireSpring结合起来做了一个web service发布成功了

首先建立一个工程,创建一个接口(XFiceFace):

package com.fire.face;

public interface XFireFace {
 public int doAdd(int i,int k);
}

接着创建有一个实现类(XFireFace):

package com.fire.imservlet;

import com.fire.face.XFireFace;

public class XFireFaceIm implements XFireFace{
 public int doAdd(int i,int k){
  return i+k;
 }
}

看过我前面文章的朋友很容易想到会去建立一个META-INF/xfire/service.xml文件.

因为集成了Spring,再次可以不必了.

因为web服务的定义在xfire-servlet.xml中可以找到。

接下来就该写配置文件了.

WEB-INF文件夹下创建applicationContext.xml文件,这是Spring的配置文件.

需要说明的是,这个文件很重要.

里面的BEAN ,必须设置正确,然后在 XXX-SERVLET.XML 中把接口类和实现类都指定好才行.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//Spring//DTD Bean//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
<!-- Application Context -->
<beans>

 <bean id="xfim"
  class="com.fire.imservlet.XFireFaceIm"/>
 <bean id="domInHandler"
   class="org.codehaus.xfire.util.dom.DOMInHandler" />

 <bean id="wss4jTokenHandler"
  class="org.codehaus.xfire.security.wss4j.WSS4JInHandler" />
</beans>

其中xfim这个bean,就是本工程发布的实现类

你可以只写一个...

当然你也可以在这个文件中定义其他的需要Spring管理的bean

 

接下来配置xfire-servlet.xml

WEB-INF文件夹下创建

根据Spring规范,我把这个文件名起做xfire-servlet.xml.

需要注意的是此处的xfire是在web.xml当中配置的DispatcherServlet的名称.

其中xfim是我在applicationContext.xml中配置的那个Bean.

map就是java.util.map

因为是个集合类.

此处实现了Spring的注入!

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//Spring//DTD Bean//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
<!-- Application Context -->
<beans>
 <bean
  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="urlMap">
   <map>
    <entry key="/XFireFace">
     <ref bean="XFireService"/>
    </entry>
   </map>
 </property>
 </bean>
 <bean id="XFireService"
  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="xfim"/>
        </property>
        <property name="serviceClass">
         <value>com.fire.face.XFireFace</value>
        </property>
 </bean>
</beans>

最后就是修改web.xml文件了

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" 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>/WEB-INF/applicationContext.xml
        classpath:org/codehaus/xfire/spring/xfire.xml</param-value>
    </context-param>
   
    <context-param>
     <param-name>log4jConfigLocation</param-name>
     <param-value>/WEB-INF/log4j.properties</param-value>
    </context-param>
   
 <listener>
        <listener-class>
        org.springframework.web.util.Log4jConfigListener
        </listener-class>
 </listener>
 
 <listener>
        <listener-class>
        org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

    <servlet>
        <servlet-name>xfire</servlet-name>
        <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>xfire</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

 
</web-app>

OK此时启动服务器,我用的是tomcat5.0.28

控制台会输入如下信息,log4j有一个警告,不需管它!

log4j:WARN No appenders could be found for logger (org.apache.catalina.startup.Embedded).
log4j:WARN Please initialize the log4j system properly.

log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.ConvertUtils).
log4j:WARN Please initialize the log4j system properly.

然后可以在浏览器访问:http://localhost:8080/xfire/XFireFace?wsdl

浏览器输出以下服务信息,代表发布成功!

你将可以通过http://localhost:8080/xfire/XFireFace来调用此服务了!

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

- <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope" xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding" xmlns:tns="http://face.fire.com" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://face.fire.com">

- <wsdl:types>

- <xsd:schema targetNamespace="http://face.fire.com" elementFormDefault="qualified" attributeFormDefault="qualified">

- <xsd:element name="doAdd">

- <xsd:complexType>

- <xsd:sequence>

  <xsd:element name="in0" type="xsd:int" minOccurs="1" maxOccurs="1" />

  <xsd:element name="in1" type="xsd:int" minOccurs="1" maxOccurs="1" />

  </xsd:sequence>

  </xsd:complexType>

  </xsd:element>

- <xsd:element name="doAddResponse">

- <xsd:complexType>

- <xsd:sequence>

  <xsd:element name="out" type="xsd:int" minOccurs="1" maxOccurs="1" />

  </xsd:sequence>

  </xsd:complexType>

  </xsd:element>

  </xsd:schema>

  </wsdl:types>

- <wsdl:message name="doAddResponse">

  <wsdl:part element="tns:doAddResponse" name="parameters" />

  </wsdl:message>

- <wsdl:message name="doAddRequest">

  <wsdl:part element="tns:doAdd" name="parameters" />

  </wsdl:message>

- <wsdl:portType name="XFireFacePortType">

- <wsdl:operation name="doAdd">

  <wsdl:input message="tns:doAddRequest" name="doAddRequest" />

  <wsdl:output message="tns:doAddResponse" name="doAddResponse" />

  </wsdl:operation>

  </wsdl:portType>

- <wsdl:binding name="XFireFaceHttpBinding" type="tns:XFireFacePortType">

  <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />

- <wsdl:operation name="doAdd">

  <wsdlsoap:operation soapAction="" />

- <wsdl:input name="doAddRequest">

  <wsdlsoap:body use="literal" />

  </wsdl:input>

- <wsdl:output name="doAddResponse">

  <wsdlsoap:body use="literal" />

  </wsdl:output>

  </wsdl:operation>

  </wsdl:binding>

- <wsdl:service name="XFireFace">

- <wsdl:port binding="tns:XFireFaceHttpBinding" name="XFireFaceHttpPort">

  <wsdlsoap:address location="http://localhost:8080/xfire/XFireFace" />

  </wsdl:port>

  </wsdl:service>

  </wsdl:definitions>

 

 

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值