用户操作
[即时聊天] [发私信] [加为好友]
曹翔ID:java_xiang
16155次访问,排名7285(2)好友1人,关注者2
阿翔编程学
java_xiang的文章
原创 43 篇
翻译 0 篇
转载 7 篇
评论 8 篇
曹翔的公告
WebService,Java,J2EE 任何个人和单位均可免费复制,拷贝,复制时请注明出处。但如需商业用途或者使用,修改其中的全部或者部分代码,图片。请先和作者联系.
最近评论
asdf:很好,谢谢分享
xiang:恩,好吧,那句话怎么说的,反正就是帮人帮到底的意思吧。
丫头:这个多代码,别人找都难找,想想起他改良的办法啦,帮人帮到底么。。。。
xunmenglin:义愤填庸了~~~~
xunmenglin:我顶阿
楼主说得好啊
文章分类
收藏
    相册
    阿翔的相册
    Blog链接
    傻丫头的Blog
    冰冻小子的Blog
    大中华办公软件在线
    我的CSDN博客
    我的新浪Blog
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 阿翔编程学-XFire收藏

    新一篇: 阿翔编程学-Axis | 旧一篇: 阿翔编程学-Web Service详细解析及使用方法(完整版)包括XFire Axis CXF 安全 性能测试

     
    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特性
        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加入到工程的类库引用中。创建一个简单的Java文件,这个文件只有一个名为sayHello的成员方法。

        //包名
    package net.ruixin.webservicedemo;
    /**
         * 服务实现类的实现
         * @author caoxiang
     */
    public class HelloWorldServiceImpl implements IHelloWorldService {
         /**
             * 返回名称的方法
             * @param name 名称
             */
        public String sayHello(String name){
            return "您好,"+name;
        }
    }
     
     

       

    //包名
     
    package net.ruixin.webservicedemo;
    /**
         * 服务接口类的创建
         * @author caoxiang
     */
    public interface IHelloWorldService {
            /**
             * 返回名称的方法
             * @param name 名称
             * @return 返回值
             */
            public String sayHello(String name);
    }

    <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>
     
    配置services.xml
     
        标签说明:

    WebService的服务名
    <name>HelloWorldService</name>
    WebService的服务接口类<serviceClass>net.ruixin.webservicedemo.IHelloWorldService
    </serviceClass>
    WebService的服务接口实现类<implementationClass>net.ruixin.webservicedemo.HelloWorldServiceImpl</implementationClass>
    WebService的服务有效范围
    <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;
    /**
         * 测试服务类的创建
         * @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();
                 }
    }
    }

        XFire、Axis以及其他的一些商业产品都提供了wsdl文档创建客户端代码的工具。这里用XFire提供的wsgen工具来创建客户端的访问代码。
        Wsgen是XFire提供的一个ant task,task的申明如下:

    <target name="Wsgen">
    <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="build.classpath" />
        <wsgen outputDirectory="build.classpath" wsdl="http://localhost:portno/xfire_sample/services/HelloWorldService?wsdl" package="client" />
    </target>
     
      

    outputDirectory属性定义了创建代码的存放路径,wsdl是web服务的wsdl文件,package代表创建的代码的package。还可以通过binding属性指定bind类型,jaxb或者是xmlbeans。
    这样就会在outputDirectory属性指定的目录下创建多个Java文件,这些文件提供了访问web服务的方法。
    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>
     

    XFire总结
        XFire做为Java SOAP的开发框架,具备一定的优越性,比如他能够快速的开发,能够比较容易的部署到服务器上,做为soap4j的下一代开源框架,XFire不但拥有了上一代的优势,而且在其优势的基础上也进行了一定的扩展,增加了许多的扩展,对于webservice的开发,XFire做到了可以快速开发,快速部署,在服务器方面,XFire的性能比较优越,相比其他的web service框架,XFire的性能也是比较优越的。XFire在发布之后,如果客户端需要使用已经发布的web service,那么他就必须通过服务端程序生成客户端代码或者将服务端的接口类写入到客户端,在这方面Axis做得比XFire要好,因为Axis是面向wsdl的,针对的是服务的描叙,而并非是服务的本质(类和接口),对于使用者来说XFire开发简单,部署方便,性能优越这些都是XFire作为web service的优势所在,正如敏捷式一书的作者,这么说过,作为开发效率和速度是最重要的。
     

    发表于 @ 2007年06月08日 14:05:00|评论(loading...)|编辑

    新一篇: 阿翔编程学-Axis | 旧一篇: 阿翔编程学-Web Service详细解析及使用方法(完整版)包括XFire Axis CXF 安全 性能测试

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 曹翔