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与Spring进行整合时,我们可以利用Spring的强大功能来管理Web服务的生命周期,并且更容易地集成到现有的Spring应用中。 XFire与Spring的整合主要涉及以下几个关键知识点: 1. **Spring的Bean管理**:...
现在我们来深入探讨Spring 2.0与XFire 1.2.6的整合案例。 Spring 2.0是Spring框架的一个重要版本,引入了许多增强的功能,例如支持JSR-250注解、更强大的数据访问抽象以及对AspectJ的全面集成。这些改进使得Spring...
将XFire与Spring整合可以充分利用Spring的优秀特性,提高Web服务的开发效率和可维护性。本教程主要针对初学者,旨在通过一个清晰、简单的项目,介绍如何将XFire与Spring进行整合。 1. **环境准备** 在开始整合前,...
在提供的文件名“XFireWsClient”和“XFireWsMe”中,我们可以推测它们可能包含了XFire与Spring整合的客户端和服务端示例代码。通过分析这些代码,我们可以更深入地理解如何在实际项目中应用上述知识点。 总之,...
本篇文章将深入探讨"xfirespring整合使用HELLOworld原代码"的相关知识点。 首先,我们需要理解XFire的基本概念。XFire是Apache CXF项目的一部分,它提供了一种快速、简单的构建和部署SOAP Web服务的方式。XFire通过...
Spring整合XFire是一个常见的服务导向架构(SOA)实现,它允许你在Spring应用程序中轻松地创建和消费Web服务。XFire是Apache CXF的一部分,它是一个全面的服务开发框架,支持多种协议,如SOAP、REST、WS-*等。下面将...
spring与xfire整合正确演示例子
1. **XFire与Spring的整合**: - Spring通过`org.springframework.remoting.jaxws`包中的类与XFire进行集成,例如`LocalXFireWebServiceProxyFactoryBean`和`XFireWebServiceExporter`。前者用于创建Web服务客户端...
标题中的“XFire+Spring整合的依赖包”意味着这是一个集合,包含了将XFire集成到Spring应用中所需的所有依赖库。这样的整合使得开发者可以利用Spring的强大功能来管理服务的生命周期,并结合XFire的高效Web服务处理...
在提供的压缩包文件"xfire+spring"中,可能包含了相关的示例代码、配置文件或者教程文档,帮助开发者理解并实践这一整合过程。通过学习这些资源,你可以深入理解如何将这两个强大的工具结合起来,构建出既高效又安全...
在压缩包文件"xfirespring"中,可能包含了示例项目的源代码、配置文件、以及运行和测试示例的说明。为了进一步学习,你可以解压文件,查看代码结构,了解如何在实际项目中集成XFire和Spring,以及如何编写和使用Web...
这里我们关注的是一个整合了Spring 2.0、Hibernate 3.0、Struts 1.1以及XFire 1.2的项目。这些技术都是Java Web开发中的重要组件,各自在应用程序的不同层面提供服务。 Spring 2.0是Java企业级应用中的一个核心框架...
Spring 和 XFire 的整合是构建基于Java的Web服务的一个高效方案。Spring是一个广泛使用的开源框架,它提供了全面的依赖注入、面向切...对这些文件进行研究和实践,将有助于深入理解如何在实际项目中运用这种整合方式。
【描述】提到这是一个演示示例,包括了xfire和spring整合的所有必要元素:配置文件、客户端代码、服务端代码以及相关的jar包。这意味着我们可以通过这个demo来学习如何在Spring环境中设置和使用基于注解的Web服务。 ...
将XFire与Spring结合使用,可以实现以下几种发布Web服务的方式: 1. **基于Spring Bean的配置**:通过在Spring配置文件中定义Bean,可以将Web服务的实现类声明为一个Bean。Spring会自动检测该Bean上的JAX-WS注解...
在"xfireSpring集成需要的Jar包"中,我们需要一些关键的库文件来确保两个框架的无缝协作。以下是一些核心的Jar包及其在集成过程中的作用: 1. **Spring Framework** - 包括`spring-core`, `spring-context`, `...
【Xfire整合Spring发布...这种整合模式在过去的Web服务开发中被广泛应用,虽然现在更多的人可能转向了更现代的框架如Apache CXF或Spring Boot,但理解这种早期的整合方式对于了解Web服务的历史和技术演进仍然很有价值。
在本文中,我们将深入探讨如何将Spring框架与XFire整合,以便轻松地创建和发布Web服务,以及如何利用JavaScript调用这些Web服务。XFire是一个轻量级的Java Web服务框架,它允许开发者以简单的方式构建和部署SOAP服务...
当XFire与Spring整合时,可以利用Spring的强大管理功能来管理和配置XFire的Web服务,简化开发流程。 XFire的核心特性包括XML绑定、协议支持(如SOAP、REST)、WS-*标准实现以及强大的异常处理机制。它使用StAX...