`
lanxin1985
  • 浏览: 83010 次
  • 性别: Icon_minigender_2
  • 来自: 大连
社区版块
存档分类
最新评论

XFire与Spring结合的几种方式

阅读更多
1、使用org.codehaus.xfire.spring.XFireSpringServlet与ServiceBean
1.1 web.xml的配置

<web-app>
<display-name>Spring Image Database</display-name>
<description>Spring Image Database sample application</description>
<!--
  These values are used by ContextLoaderListener, defined immediately below.
        The files listed below are used to initialize the business logic portion of the application.
        Each dispatcher servlet (defined further down) has their own configuration file,
        which may or may not depend on items in these files.
    -->
    <context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>
     classpath:applicationContext-webservice.xml
    </param-value>
    </context-param>
<!-- Log4j configuration listener-->
<listener>
  <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<!-- Spring framework -->
<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

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

1.2 applicationContext-webservice.xml的配置:

<beans>

    <import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>
   
    <bean name="echoService" class="org.codehaus.xfire.spring.ServiceBean">
        <property name="serviceBean" ref="echo"/>
        <property name="serviceClass" value="org.codehaus.xfire.test.Echo"/>
        <property name="inHandlers">
            <list>
                <ref bean="addressingHandler"/>
            </list>
        </property>
    </bean>

    <bean id="echo" class="org.codehaus.xfire.test.EchoImpl"/>

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

   <bean name="bookService" class="org.codehaus.xfire.spring.ServiceBean">
        <property name="serviceBean" ref="bookServiceBean"/>
        <property name="serviceClass" value="org.codehaus.xfire.demo.BookService"/>
    </bean>

    <bean id="bookServiceBean" class="org.codehaus.xfire.demo.BookServiceImpl"/>

</beans>

1.3 这样将会发布两个service,BookService和EchoService。随后就可以使用client端进行测试了。

     //测试BookService
    public static void main(String args[])
    {
        String serviceURL = "http://127.0.0.1:9001/xfire/services/BookService";
        Service serviceModel = new ObjectServiceFactory().create(BookService.class,null,"http://xfire.codehaus.org/BookService",null);
        XFireProxyFactory serviceFactory = new XFireProxyFactory();
        try
        {
            BookService service = (BookService) serviceFactory.create(serviceModel, serviceURL);
            Client client = Client.getInstance(service);
            client.addOutHandler(new OutHeaderHandler());
            Book[] books = service.getBooks();
            System.out.println("BOOKS:");
            for (int i = 0; i < books.length; i++)
            {
                System.out.println(books[i].getTitle());
            }
        }
        catch (MalformedURLException e)
        {
            e.printStackTrace();
        }
    }

1.4 忘了BookService及其实现了。

     public interface BookService
    {
              public Book[] getBooks();
   
              public Book findBook(String isbn);
   
             public Map getBooksMap();
   }



    public class BookServiceImpl implements BookService
    {
    private Book onlyBook;
   
    public BookServiceImpl()
    {
        onlyBook = new Book();
        onlyBook.setAuthor("Dan Diephouse");
        onlyBook.setTitle("Using XFire");
        onlyBook.setIsbn("0123456789");
     }

     public Book[] getBooks()
     {
        return new Book[] { onlyBook };
     }
   
     public Book findBook(String isbn)
     {
        if (isbn.equals(onlyBook.getIsbn()))
            return onlyBook;
       
        return null;
     }

     public Map getBooksMap() {
  Map result = new HashMap();
  result.put(onlyBook.getIsbn(), onlyBook);
  return result;
     }
    }

1.5 简单的测试就是通过IE,输入http://ip:port/context/services/BookService?wsdl或者http://ip:port/context/services/EchoService?wsdl,将会出现相应的wsdl文档。

     如果只是输入http://ip:port/context/services/BookService,会出现Invalid SOAP request.这也说明配置正确。

2、直接集成Spring(通过Spring的org.springframework.web.servlet.DispatcherServlet)

2.1 web.xml配置
<web-app>
<!-- START SNIPPET: xfire -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
        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>
<!-- END SNIPPET: xfire -->
</web-app>
2.2 xfire-servlet.xml配置
<beans>
    <!-- START SNIPPET: xfire -->
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="urlMap">
            <map>
                <entry key="/EchoService">
                    <ref bean="echo"/>
                </entry>
            </map>
        </property>
    </bean>

    <bean id="echoBean" class="org.codehaus.xfire.spring.example.EchoImpl"/>

    <!-- Declare a parent bean with all properties common to both services -->
    <bean id="echo" 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="echoBean"/>
        </property>
        <property name="serviceClass">
            <value>org.codehaus.xfire.spring.example.Echo</value>
        </property>
    </bean>
    <!-- END SNIPPET: xfire -->
</beans>
2.3 余下的配置跟第一种方法一样。

3、另外xfire的官方文档上还有一种方法,是通过XBean与Spring结合来实现webservice的expose。还是觉得上面的两种方法比较好。既然已经与spring集成在一起了,何必再引入其他的呢?以后的维护是不是也要有问题呢?

在随后的文章里将会介绍xfire与Jibx结合的例子。


分享到:
评论

相关推荐

    XFire与Spring组合发布webservices

    将XFire与Spring结合使用,可以实现以下几种发布Web服务的方式: 1. **基于Spring Bean的配置**:通过在Spring配置文件中定义Bean,可以将Web服务的实现类声明为一个Bean。Spring会自动检测该Bean上的JAX-WS注解...

    xfire-webservice数据格式及集成spring

    配置XFire与Spring的集成通常涉及以下几个步骤: - 引入必要的依赖库,如Spring和XFire的相关jar包。 - 创建一个Spring配置文件,定义Web服务的bean,包括服务接口、实现类和XFire相关的配置。 - 在Spring配置...

    使用XFire+Spring构建Web Service

    【使用XFire+Spring构建Web Service】是一种在Java平台上开发Web服务的高效方法。XFire作为新一代的Web服务框架,与Axis2并列,因其简洁的API和对Web服务标准的良好支持而受到开发者欢迎。XFire特别强调与Spring框架...

    Spring + Xfire + 注解方式

    描述中提到的博客链接虽然无法直接访问,但根据常规的博客内容,博主可能详细解释了如何将Spring与Xfire结合,以及如何通过注解的方式来替代传统的XML配置,以实现更加简洁、直观的代码结构。 在使用注解的方式时,...

    spring-xfire编写webservice

    4. **Spring与XFire结合**: - 如何将Spring容器中的Bean导出为Web Service,这涉及到Spring对Web Service的支持和配置,以及XFire如何整合Spring的IoC(Inversion of Control)容器。 - 编写客户端调用代码,包括...

    xfire开发所需jar包

    XFire适用于以下几种情况: 1. 快速构建SOAP Web服务:通过简洁的API,开发者可以迅速创建和发布SOAP服务。 2. 集成现有系统:由于JAX-RPC兼容性,XFire可以作为旧有JAX-RPC系统的升级选择。 3. 易于测试:XFire...

    spring1.2.6源码

    Spring框架是Java开发中不可或缺的一部分,它以其IoC(Inversion...在实际的学习过程中,建议先从主要的接口和类开始,逐步深入到具体的实现细节,结合实际项目中的使用情况,将理论与实践相结合,以获得更深刻的领悟。

    Xfire配置Web Service+Spring+Hibernate详细流程(转)

    Xfire提供了一种方式,可以将Spring的bean暴露为Web服务。通过定义一个服务接口和实现类,我们可以在实现类中注入需要的Spring bean。这样,Web服务调用的方法实际上是在调用Spring管理的bean,间接地访问到...

    XFire demo

    **XFire 与 Maven 结合** Maven 是一个项目管理工具,它简化了构建、依赖管理和项目信息管理。在本项目中,我们利用 Maven 的依赖管理和构建功能来集成 XFire 相关的库,确保项目能够顺利运行。在 `pom.xml` 文件中...

    xfire服务器端

    这种结合为开发人员提供了极大的便利,因为Spring的组件模型可以与Xfire的Web服务功能无缝对接。 首先,让我们深入了解一下Xfire的核心特性。Xfire基于Java语言,它支持SOAP 1.1和1.2规范,同时也支持WS-I基本...

    webservice-xfire相关(xfire&wsdl4j;&jaxrpc;&jdom;)

    XFire支持多种协议,如SOAP、RESTful HTTP、JMS等,并且与Spring框架集成良好。它提供了一种直观的方式来定义服务接口和实现,然后自动将它们转换为Web服务。 2. **WSDL4J**: WSDL(Web Services Description ...

    java webservice XFire技术文档,一个简单列子和一个稍微难的列子

    2. **XFire简介**:文档会介绍XFire框架,包括它的特点、优点以及如何与Spring框架集成,使Web服务的开发更加便捷。 3. **服务端创建**:文档会详细讲解如何使用XFire创建服务端。这通常包括定义服务接口、实现服务...

    CXF-Spring相关jar包

    CXF与Spring的结合,使得开发者可以充分利用Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)特性来管理服务的生命周期,简化服务的部署和调用。 CXF-Spring的...

    Spring4.x最新jar包

    5. **测试**:Spring提供了测试模块,支持单元测试和集成测试,可以方便地与JUnit等测试框架结合使用。 在Spring 4.x版本中,有以下关键改进和新特性: 1. **Java 8支持**:Spring 4.x全面支持Java 8,包括Lambda...

    cxf与spring集成

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而CXF和Spring都是Java领域中广泛使用的开源框架。CXF是一个强大的Web服务框架,它继承了早期的XFire项目,提供了更全面的功能和更好的性能。Spring则是...

    xfire验证签名加密详细

    总的来说,通过Spring和XFire的结合,我们可以轻松地创建和部署安全的Web服务,实现包括验证、签名和加密在内的高级安全特性。这不仅提高了服务的安全性,也为开发者提供了一种灵活且强大的Web服务开发框架。

Global site tag (gtag.js) - Google Analytics