博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XFire 最新生火指南(上)
阅读量:2359 次
发布时间:2019-05-10

本文共 2228 字,大约阅读时间需要 7 分钟。

 

,请留意。

基于发布在JavaEye的敬畏心情,本文又修改了一遍,与前两天发在blogjava和csdn的版本稍有不同。

   是全球众多牛人在与axis系列对比后一致投票的选择。我比较欣赏的特性有:

  1. ,无须生成一堆文件,无须打包独立war,直接将应用中的Pojo导出为Web服务。
  2. --超简约的默认Java XML 绑定机制,且可以Plugin其他绑定机制。
  3. 的POJO WebService配置。
  4. 脱离Web服务器的单元测试能力。

   网上的文档与例子总是不新,请大家抛开所有的文档,所有的Axis习惯,单看这份代表XFire1.2.2最简约做法的指南。

   注意XFire有了自己的Servlet,不再依赖Spring MVC的DispatchServlet,也就远离了大家不熟悉的Spring MVC URL Mapping,与Spring达致完美的整合。

   这里指定了路径为/service/* ,即WebService的URL会被默认生成为

 
 

   从已有的BookManager.java中,抽取出一个窄接口,仅暴露需要导出为Web Service的方法。而BookManger.java是POJO,不需要任何WebService相关代码。

  窄接口一方面满足了安全要求,不用整个BookManager所有方法导出为Web Service;另一方面,XFire暂时也只支持基于接口的Proxy。

public interface BookService {   List
findBooksByCategory(String cateoryId);}

   XFire默认的Aegis Binding语法非常简单,在SpringSide的例子里几乎一行配置都不用写,是我见过最简单的binding定义,大大优于其他以设计复杂为终极目标的方案。

   对象的属性、函数的参数和返回值如果为int、String、Date等普通类型以及由普通类型组成的复杂对象都无需定义。我见到只有两种情况需要定义:

无法使用泛型定义Collection中元素的类型时--如List findBooks()。如果能写成List<book></book> findBooks()就也不需要了。 需要为属性定义不同的名字,或者定义复杂对象里的某些属性不要输出。

     如果实在需要aegis配置, XFire以约定俗成代替配置(CoC),所有Service和Entity Bean的binding文件要求命名为xxx.aegis.xml,而且要和原来的类sit together在同一目录里。

<property class="code-quote" name="&amp;lt;span">
<
mapping
>           
           
<
method 
name=
"findBooksByName"
>               
<
return-type 
componentType=
"org.springside.bookstore.domain.Book"
/>           
method>          
          
<
property 
name=
"products" 
ignore=
"true"
/>  
mapping>  
</property>

   其他语法详见 参考。

    为了节约配置代码,先配置一个基类。注意导出Web服务的Bean不能lazy-init:

xml 代码
  
<
import 
resource=
"classpath:org/codehaus/xfire/spring/xfire.xml"
/>    
<
bean 
id=
"baseWebService" 
class=
"org.codehaus.xfire.spring.remoting.XFireExporter" 
lazy-init=
"false" 
abstract=
"true"
>    
<
property 
name=
"serviceFactory" 
ref=
"xfire.serviceFactory"
/>    
<
property 
name=
"xfire" 
ref=
"xfire"
/>   
bean>  
 </property></property>

 每个Web服务的定义:parent为前面定义的基类,serviceClass 为Web Service的接口,serviceBean为Web Service的接口实现类。

<property class="code-quote" name="&amp;lt;span"> <property class="code-quote" name="&amp;lt;span">
xml 代码
<
bean 
id=
"bookService" 
parent=
"baseWebService"
>     
<
property 
name=
"serviceBean" 
ref=
"bookManager"
/>     
<
property 
name=
"serviceClass" 
value=
"org.springside.bookstore.components.xfire.server.simple.BookService"
/>    
bean>  

 

Web服务导出完毕,用户可在查看自动生成的WSDL。 

上半章完,关于JSR181,Client API与测试部分请看

</property> </property>

转载地址:http://vintb.baihongyu.com/

你可能感兴趣的文章
Squid中文权威指南-第11章 重定向器
查看>>
Squid中文权威指南-第12章 验证辅助器
查看>>
samba配置
查看>>
不要在linux上启用net.ipv4.tcp_tw_recycle参数
查看>>
UML建模——使用EA工具开发时序图实践及经验
查看>>
centos 7源码编译安装qemu-kvm和spice
查看>>
Gobject 学习总结
查看>>
git - 简明指南
查看>>
CentOS 6&7 安装使用多个GCC版本(GCC4.9,GCC5.3,GCC6.2)
查看>>
LD_PRELOAD作用
查看>>
mysql 5.7忘记密码及重新更改目录,无相关文件
查看>>
spice 0.14.0添加新功能
查看>>
ubuntu下安装tcpdump
查看>>
Linux 问题故障定位,看这一篇就够了
查看>>
Linux线程学习总结
查看>>
计算机网络时间同步技术原理介绍
查看>>
CentOS 6.x 如何升级 glibc 2.17
查看>>
Reed-Solomon 编码算法
查看>>
freenom免费域名申请
查看>>
Linux下段错误调试技巧
查看>>