美文网首页
9.1WebService-Xfire

9.1WebService-Xfire

作者: 孔垂云 | 来源:发表于2017-05-25 01:01 被阅读0次

Xfire在2007年就不在更新了,最后版本是1.2.6,为什么不更新了呢,因为被CXF合并了,CXF里面的X就是指Xfire。

这个WebService发布和调用框架相对简单一些,主要原因就是依赖的jar包不多。在企业开发中,涉及的jar包会非常非常多,如果WebService的依赖jar包也很多,两个混合到一起,就会产生致命的影响,jar包冲突,这是多数人的噩梦,经常搞几天也搞不定。

现在有一些项目如果必须用到WebService,我也是推荐xfire,主要原因就是简单无影响。

下面来看一下具体实现

添加依赖pom.xml

 <dependency>
     <groupId>org.codehaus.xfire</groupId>
     <artifactId>xfire-all</artifactId>
     <version>1.2.6</version>
</dependency>

这里面简单引入xfire-all,实际应用中,应该把不相关的都去掉,比如xfire-spring等等。

配置web.xml

<!--Xfire配置 -->
    <servlet>
        <servlet-name>XFireServlet</servlet-name>
        <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/servlet/XFireServlet/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

xfire的服务发布本质上还是一个servlet,在服务发布后,通过http://localhost:8080/service可以查看服务的发布情况。

定义服务配置META-INF/xfire/services.xml

<beans>
    <service xmlns="http://xfire.codehaus.org/config/1.0">
        <name>FirstService</name>
        <namespace>http://smallnest.googlepages.com/FirstService</namespace>
        <serviceClass>com.critc.xfire.FirstService</serviceClass>
        <implementationClass>com.critc.xfire.FirstServiceImpl</implementationClass>
    </service>
</beans>

这个文件的路径一定要准确。

这是一个服务的配置,里面需要定义namenamespace,对应的class,即接口类 serviceClass,接口的具体实现implementationClass

服务接口定义FirstService

public interface FirstService {
    public String sayHello(String name);
}

服务接口实现FirstServiceImpl

public class FirstServiceImpl implements FirstService {
    public String sayHello(String name) {
        return "hello:" + name;
    }
}

上面都比较简单。

启动整个工程,在地址栏输入:http://localhost:8080/services

查看service定义

点击services链接:

查看对应的wsdl

客户端调用代码

public class TestXfire {

    public static void main(String[] args) {
        try {
            Client client = new Client(new URL("http://localhost:8080/services/FirstService?wsdl"));
            Object[] results = client.invoke("sayHello", new Object[] { "张三" });
            System.out.println((String) results[0]);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

客户端调用还是非常容易的,定义url,指定方法名sayHello,指定参数,传入Object[]数组,通过invoke调用就可以获取返回值了。

当然xfire的功能远不止于此,比如和spring整合,调用的权限校验,客户端通过逆向工程生成对应的方法和类型等等。但是简单的基于xfire的WebService的发布及调用就这么多。

源码下载

本工程详细源码

相关文章

  • 9.1WebService-Xfire

    Xfire在2007年就不在更新了,最后版本是1.2.6,为什么不更新了呢,因为被CXF合并了,CXF里面的X就是...

网友评论

      本文标题:9.1WebService-Xfire

      本文链接:https://www.haomeiwen.com/subject/oilaxxtx.html