阿翔编程学-WebService介绍及使用
Web Service详细解析及使用方法 XFire篇XFire简介?????? XFire 是 codehaus推出的下一代的 java SOAP框架,它构建了 POJO 和 SOA 之间的桥梁,主要特性就是支持将 POJO 通过非常简单的方式发布成 Web 服务,这种处理方式不仅充分发挥了 POJO 的作用,简化了 Java 应用转化为 Web 服务的步骤和过程,也直接降低了 SOA 的实现难度,为企业转向 SOA 架构提供了一种简单可行的方式。通过提供简单的API和支持标准协议,可以很方便的开发面向服务的程序。内建在STAX基于流的XML解析引擎的基础上,XFire拥有很高的性能。 XFire拥有以下的特性?????? 1)、 支持重要的web服务标准,如SOAP、WSDL、WS-I、WS-Addressing、WS-Security基本概要等 ?????? 2)、 高性能的SOAP栈设计 ?????? 3)、 可插拔的绑定,支持POJO、XMLBeans、JAXB1.1、JAXB2及castor ?????? 4)、 jsr181规范 ?????? 5)、 支持多种传输协议:HTTP、JMS、XMPP、In-JVM等 ?????? 6)、 可嵌入式的API ?????? 7)、 JBI支持 ?????? 8)、 客户端和服务器端的存根创建工具 ?????? 9)、 JAX-WS的早期支持 XFire简单使用?????? 首先先打开IDE,创建一个普通的java工程,将xfire所需要的jar和xifre的jar加入到工程所需要的类库引用中。创建一个简单但的java文件,这个文件只有一个名为add的成员方法。 提供服务类package net.ruixin.webservicedemo; public class HelloWorldServiceImpl implements IHelloWorldService { ??? ??? /** ???? ?? * 返回名称的方法 ???? ?? * @param name 名称 ???? ?? */ ??? ??? public String sayHello(String name){ ??????? ???? return "您好,"+name; ??? ??? } } 服务类的接口类package net.ruixin.webservicedemo; public interface IHelloWorldService { ??? ??? /** ??? ??? ?* 返回名称的方法 ??? ??? ?* @param name 名称 ??? ??? ?* @return 返回值 ??? ??? ?*/ ??? ??? public String sayHello(String name); } 配置services.xml<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> ??????? ???? ??<scope>application</scope> ??? ??? ?</service> </beans> 服务名 <name>HelloWorldService</name> 服务类 <serviceClass>net.ruixin.webservicedemo.IHelloWorldService </serviceClass> 服务接口<implementationClass>net.ruixin.webservicedemo.HelloWorldServiceImpl</implementationClass> 服务范围 <scope>application</scope> 测试服务类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; public class HelloWorldClient { ??? ??? public static void main(String args[]) { ??????? ???? Service srvcModel = new ObjectServiceFactory() ??????????????? ? .create(IHelloWorldService.class); 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(); ??????? ???? } } } 客户端访问代码
发布服务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> ??????? <scope>application</scope> </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> 完整的开发过程首先打开Eclipse,创建一个普通的java工程,将xfire所需的jar和xfire的jar加入到工程所需的类库引用中。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |