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集成在一起了,何必再引入其他的呢?以后的维护是不是也要有问题呢?
分享到:
相关推荐
spring xfire spring 集成xfire 比较好的一种方式
xFire与Spring集成xFire与Spring集成xFire与Spring集成xFire与Spring集成xFire与Spring集成
XFire与Spring组合发布webservices的几种方式实例,可以直接导入到环境运行
自己写给同事培训的xfire整合spring的小项目 步骤清晰 简单易懂 适合刚刚接触xfire的同事们
xfire+spring+webservice+client xfire+spring+webservice+client xfire+spring+webservice+client
xfire+spring+安全认证,包含服务端和客户端,xfire jar包可以从我的资源下面下或网上很多。
xfire-spring,学习WebService,Xfire和Spring集成的好资料。
xfire+spring开发webservice 很不错的文档
xfire集成了spring的jar包,放到工程中引用即可用xfire集成spring的方式进行webservice接口开发
XFire与Spring集成WebService客户端的两种开发方式.pdfXFire与Spring集成WebService客户端的两种开发方式.pdfXFire与Spring集成WebService客户端的两种开发方式.pdfXFire与Spring集成WebService客户端的两种开发方式...
源代码 博文链接:https://callan.iteye.com/blog/135438
XFire 是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,帮助你方便快速地开发Web Service应用。 相对于Axis来说,目前XFire相对受欢迎,加上其提供了和Spring集成的支持,在...
webservice中用到的jar,xfire-spring-1.2.6.jar,xfire-spring-1.2.6.jar,xfire-spring-1.2.6.jar,xfire-spring-1.2.6.jar
Xfire1.2.6和Spring2整合 访问时提供了三种不同的方法
xfire+Spring整合发布webservice,详细解释配置过程,及是替代码,帮助一部分需要这方面开发的人员。
xfire与 spring整合框架。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
XFire采用Woodstox 作Stax实现; 3 容易上手,可以方便快速地从pojo发布服务; 4 支持Spring、Pico、Plexus、Loom等容器; 5 灵活的Binding机制,包括默认的Aegis,xmlbeans,jaxb2,castor; 6 高性能的SOAP 栈...
xfire-spring-1.2.6.jar
webservice xfire1.2.6 spring2.0完整的代码,包含客户端两种方式(1 接口 2 url)