在Spring中集成XFire

XFire发布WebService  
Java代码   收藏代码
  1. public interface BookService {  
  2.   Book[] search(String keyword);  
  3. }  
  4.   
  5. public class BookServiceImpl implements BookService {  
  6.   public Book[] search(String keyword) {  
  7.     if ("j2ee".equalsIgnoreCase(keyword)) {  
  8.       return new Book[] { new Book("Core J2EE Patterns""Dan Malks"),  
  9.           new Book("The J2EE Tutorial""Bode Carson"),  
  10.           new Book("J2EE Design Patterns""William Crawford"),  
  11.           new Book("J2EE Platform Web Services""Ray Lai") };  
  12.     }  
  13.     return new Book[0];  
  14.   }  
  15. }  
  16.   
  17. public class Book {  
  18.   private String name;  
  19.   private String author;  
  20.   public Book() {  
  21.   }  
  22.   public Book(String name, String author) {  
  23.     this.name = name;  
  24.     this.author = author;  
  25.   }  
  26.   public String getName() {  
  27.     return name;  
  28.   }  
  29.   public void setName(String name) {  
  30.     this.name = name;  
  31.   }  
  32.   public String getAuthor() {  
  33.     return author;  
  34.   }  
  35.   public void setAuthor(String author) {  
  36.     this.author = author;  
  37.   }  
  38. }  

编写XFire必须的Web服务描述文件services.xml 
该文件必须放到META-INF/xfire/ 目录下 
Xml代码   收藏代码
  1. <beans>  
  2.   <service xmlns="http://xfire.codehaus.org/config/1.0">  
  3.     <name>BookService</name>  
  4.     <namespace>http://www.livebookstore.net/BookService</namespace>  
  5.     <serviceClass>example.chapter8.BookService</serviceClass>  
  6.     <implementationClass>example.chapter8.BookServiceImpl</implementationClass>  
  7.   </service>  
  8. </beans>  


最后,在web.xml中加入 
Xml代码   收藏代码
  1. <web-app>  
  2.   <servlet>  
  3.     <servlet-name>XFireServlet</servlet-name>  
  4.     <servlet-class>  
  5.       org.codehaus.xfire.transport.http.XFireConfigurableServlet  
  6.         </servlet-class>  
  7.     <load-on-startup>0</load-on-startup>  
  8.   </servlet>  
  9.   
  10.   <servlet-mapping>  
  11.     <servlet-name>XFireServlet</servlet-name>  
  12.     <url-pattern>/servlet/XFireServlet/*</url-pattern>  
  13.   </servlet-mapping>  
  14.   
  15.   <servlet-mapping>  
  16.     <servlet-name>XFireServlet</servlet-name>  
  17.     <url-pattern>/services/*</url-pattern>  
  18.   </servlet-mapping>  
  19. </web-app>  


启动服务器,浏览器中输入 http://localhost:8080/services/BookService?wsdl 
就能看到BookService Web服务的WSDL描述文档 




在Spring中集成XFire  
删除META-INF/xfire/ 目录,相关信息在Spring的 dispatcher-servlet.xml中定义 

使用JSR 181 Web服务注解来标注Web服务 
Java代码   收藏代码
  1. @WebService(  
  2.     name="BookService",  
  3.     serviceName="BookService",  
  4.     targetNamespace="http://www.livebookstore.net/BookService"  
  5. )  
  6. public class BookServiceImpl implements BookService {  
  7.   @WebMethod  
  8.   @WebResult  
  9.   public Book[] search(@WebParam String keyword) {  
  10.     if("j2ee".equalsIgnoreCase(keyword)) {  
  11.       return new Book[] {  
  12.         new Book("Core J2EE Patterns""Dan Malks"),  
  13.         new Book("The J2EE Tutorial""Bode Carson"),  
  14.         new Book("J2EE Design Patterns""William Crawford"),  
  15.         new Book("J2EE Platform Web Services""Ray Lai")  
  16.       };  
  17.     }  
  18.     return new Book[0];  
  19.   }  
  20. }  


和普通Spring Web程序一样,在web.xml中声明Dispatcher Servlet 
Xml代码   收藏代码
  1. <web-app>  
  2.   <servlet>  
  3.     <servlet-name>dispatcher</servlet-name>  
  4.     <servlet-class>  
  5.       org.springframework.web.servlet.DispatcherServlet  
  6.         </servlet-class>  
  7.     <load-on-startup>0</load-on-startup>  
  8.   </servlet>  
  9.   <servlet-mapping>  
  10.     <servlet-name>dispatcher</servlet-name>  
  11.     <url-pattern>/*</url-pattern>  
  12.   </servlet-mapping>  
  13. </web-app>  


在dispatcher-servlet.xml中 

Xml代码   收藏代码
  1. <!-- 引用XFire预定义的Bean配置 -->  
  2. <import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />  
  3. <!-- Web服务实现类 -->  
  4. <bean id="bookService" class="example.chapter8.BookServiceImpl" />  
  5. <!-- 定义URL映射 -->  
  6. <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
  7.   <property name="urlMap">  
  8.     <map>  
  9.       <entry key="/BookService" value="bookExporter" />  
  10.     </map>  
  11.   </property>  
  12. </bean>  
  13. <!-- bookExporter将处理来自客户端的调用 -->  
  14. <bean id="bookExporter"   
  15.   class="org.codehaus.xfire.spring.remoting.XFireExporter">  
  16.   <!-- 对外提供的Web服务的接口 -->  
  17.   <property name="serviceClass" value="example.chapter8.BookService" />  
  18.   <!-- 实现Web服务的Bean -->  
  19.   <property name="serviceBean" ref="bookService" />  
  20.   <!-- 下面引用的Bean都已被import引入了 -->  
  21.   <property name="serviceFactory" ref="xfire.serviceFactory" />  
  22.   <property name="xfire" ref="xfire" />  
  23. </bean>  


注意,这个XML配置文件必须首先通过<import>引入XFire的一些预定义的Bean, 
这样就可以直接使用XFireExporter来处理Web服务请求。 

此时我们访问WSDL文件的路径为 http://localhost:8080/BookService?wsdl
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.xfire.core.client; import java.net.MalformedURLException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.service.binding.ObjectServiceFactory; import com.xfire.core.entity.UserInfo; import com.xfire.core.service.IUserInfoService; /** *@author jilongliang *@Date 2012-3-5 * */ public class UserInfoClient { public static void main(String[] args) { getServiceList(); setServiceList(); } static String url = "http://localhost:8081/xfire/services/UserInfo"; /** * */ public static void getServiceList() { Service service = new ObjectServiceFactory() .create(IUserInfoService.class); try { IUserInfoService iAddressService = (IUserInfoService) new XFireProxyFactory() .create(service, url); List list = (ArrayList) iAddressService .getAddressList(); System.out.println("一共多少条数据:" + list.size()); for (Iterator iter = list.iterator(); iter.hasNext();) { UserInfo a = iter.next(); System.out.println(a); } } catch (MalformedURLException e) { e.printStackTrace(); } } public static void setServiceList() { Service service = new ObjectServiceFactory() .create(IUserInfoService.class); try { IUserInfoService iAddressService = (IUserInfoService) new XFireProxyFactory() .create(service, url); List listAdd = new ArrayList(); UserInfo address = new UserInfo(); address.setIdentifier(1); address.setCountry("國"); address.setProivice("廣東省"); address.setCity("陽江"); address.setAddress("廣東陽春"); address.setPostCode("1111111"); address.setExist(false); address.setArrary(new String[] { "22", "23", "24" }); listAdd.add(address); address.setIdentifier(2); address.setCountry("國"); address.setProivice("廣東省"); address.setCity("陽江"); address.setAddress(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值