XFire简介
它拥有一个轻量级的信息处理模块,通过STAX来与SOAP信息相结合。提供了一个工作在web services下的简单API,支持POJO和schema开发。
XFire
是 CodeHaus 推出的下一代的 Java SOAP框架,
它构建了 POJO 和 SOA 之间的桥梁,主要特性就是支持将 POJO 通过非常简单的方式发布成 Web 服务,这种处理方式不仅充分发挥了 POJO 的作用,简化了 Java 应用转化为 Web 服务的步骤和过程,也直接降低了 SOA 的实现难度,为企业转向 SOA 架构提供了一种简单可行的方式。
通过提供简单的API和支持标准协议,可以很方便的开发面向服务的程序。内建在STAX基于流的XML解析引擎的基础上,XFire拥有很高的性能。
XFire特性
3)
、可插拔的绑定,支持POJO、XMLBeans、JAXB1.1、JAXB2及castor
4)
、 jsr181规范
5)
、支持多种传输协议:HTTP、JMS、XMPP、In-JVM
6)
、可嵌入式的API
7)
、 JBI支持
8)
、客户端和服务器端的存根创建工具
9)
、 JAX-WS的早期支持
XFire使用
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>HelloWorldService</name>
<serviceClass>
net.ruixin.webservicedemo.IHelloWorldService
</serviceClass>
<implementationClass>
net.ruixin.webservicedemo.HelloWorldServiceImpl
</implementationClass>
</service>
</beans>
|
标签说明:
//
包名
package
net.ruixin.webservicedemo;
import
java.net.MalformedURLException;
import
org.codehaus.xfire.XFireFactory;
import
org.codehaus.xfire.client.XFireProxyFactory;
import
org.codehaus.xfire.service.Service;
import
org.codehaus.xfire.service.binding.ObjectServiceFactory;
/**
*
测试服务类的创建
* @author caoxiang
*/
public
class HelloWorldClient {
/**
*
测试主程序
* @param args
* @throws Exception
*/
public static void main(String args[]) {
//
通过接口类创建Service对象
Service srvcModel = new ObjectServiceFactory()
.create(IHelloWorldService.class);
//
通过XFire的工厂类创建工厂对象
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
//
访问的地址
String helloWorldURL="http://localhost:5200/xfire_sample/services/HelloWorldService";
//
异常处理
try {
//
创建服务对象
IHelloWorldService srvc = (IHelloWorldService) factory.create(srvcModel,helloWorldURL);
System.out.print(srvc.sayHello("dennis"));
//
异常处理
} catch (MalformedURLException e) {
e.printstacktrace();
}
}
}
|
Wsgen
是XFire提供的一个ant task,task的申明如下:
outputDirectory
属性定义了创建代码的存放路径,wsdl是web服务的wsdl文件,package代表创建的代码的package。还可以通过binding属性指定bind类型,jaxb或者是xmlbeans。
XFire
框架中,我们有两种方式将 POJO 发布成 Web 服务:
方式1:直接使用 Web 服务接口和 Web 服务实现类(POJO)来发布
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>HelloWorldService</name>
<serviceClass>
net.rubyeye.webservicedemo.IHelloWorldService
</serviceClass>
<implementationClass>
net.rubyeye.webservicedemo.HelloWorldServiceImpl
</implementationClass>
<style>wrapped</style>
<use>literal</use>
</service>
</beans>
|
方式2:基于 JSR181 标准和注释技术将被注释的 POJO 发布成 Web 服务;
package
com.test;
import
javax.jws.WebMethod;
import
javax.jws.WebParam;
import
javax.jws.WebResult;
import
javax.jws.WebService;
@WebService(name="Hello",serviceName="Hello",
targetNamespace="http://www.oksonic.cn/xfire")
public
class Hello {
@WebMethod
@WebResult
public String getName(@WebParam String name){
return "Hello world " + name;
}
}
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<serviceClass>com.test.Hello</serviceClass>
<serviceFactory>jsr181</serviceFactory>
</service>
</beans>
|
XFire总结
XFire
做为Java SOAP的开发框架,具备一定的优越性,比如他能够快速的开发,能够比较容易的部署到服务器上,做为soap4j的下一代开源框架,XFire不但拥有了上一代的优势,而且在其优势的基础上也进行了一定的扩展,增加了许多的扩展,对于webservice的开发,XFire做到了可以快速开发,快速部署,在服务器方面,XFire的性能比较优越,相比其他的web service框架,XFire的性能也是比较优越的。XFire在发布之后,如果客户端需要使用已经发布的web service,那么他就必须通过服务端程序生成客户端代码或者将服务端的接口类写入到客户端,在这方面Axis做得比XFire要好,因为Axis是面向wsdl的,针对的是服务的描叙,而并非是服务的本质(类和接口),对于使用者来说XFire开发简单,部署方便,性能优越这些都是XFire作为web service的优势所在,正如敏捷式一书的作者,这么说过,作为开发效率和速度是最重要的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。