XFire 使用入门

 

一.  介绍

XFire是下一代的java SOAP框架。XFire提供了非常方便的API,使用

这些API可以开发面向服务(SOA)的程序。

支持多个重要的Web Service标准,包括SOAPWSDLWS-I Basic ProfileWSAddressing

WS-Security

• 高性能的SOAP

• 可选的绑定(binding)方式,如POJOXMLBeansJAXB1.1JAXB2.0CastorJiBX

• 支持JSR181 API

• 多种传输方式,如HTTPJMSXMPPInJVM

• 灵活的接口

• 支持多个容器,如SpringPicoPlexusLoom

• 支持JBI,参看servicemix项目(http://servicemix.org)

• 客户端和服务器代码生成

二.简单例子

A.发布web service

1.新建一个web 工程,加入xfire所依赖的lib,配置web.xml:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"

    xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<servlet>

<servlet-name>XFireServlet</servlet-name>

<display-name>XFire Servlet</display-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>

</web-app>

在这个web.xml文件中定义了一个 XfireServlet,它负责提供Web Services,并提供每个Web ServiceWSDL。通过网址http://<server_url[:port]>/<context>/services/XXXXService?WSDL得到这个Web ServiceWSDL信息。

2.编写要发布的接口和实现,与普通的POJO没有任何区别。

package cn.cares;

 

public interface HelloService {

    public String hello(String name);

}

package cn.cares;

 

public class HelloServiceImpl implements HelloService {

 

    public String hello(String name) {

       // TODO Auto-generated method stub

       return "HI,"+name!=null? name:"Guest";

    }

 

}

3.在源文件src目录下新建  META-INF/xfire/services.xml,编译发布时会复制到WEB-INF/classes/META-INF/xfire.

services.xml: (写法有很多,要多研究下)

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://xfire.codehaus.org/config/1.0">

  <service>

    <name>HelloService</name>

<namespace>http://cn.cares/HelloService</namespace>

<serviceClass>cn.cares.HelloService</serviceClass>

<implementationClass>cn.cares.HelloServiceImpl</implementationClass>

  </service>

</beans>

4.发布到web server 上,访问: http://localhost:8080/web_project_name/services

就可看到所发布的web service, 后面的蓝色的链接,就会得到这个Web Service

WSDL信息。

B 客户端访问

方法一:

1.如果web service发布成功了,就要看如何使用这web service

根据WSDL生成客户端代码,我们采用eclipse plugin 这样更简单,也可采用ant

具体xfire插件安装: Help ->Software Updates->Find and Install->Search for new features to install->Create New Remote Site,并输入"XFire" 名字和http://dist.codehaus.org/xfire/update/ eclipse 更新站点。

 

2.File->new ->Other->XFire->Code generation from WSDL document

输入WSDL URLPATH,以及要生成的客户端代码目录。

 

3.测试:

import cares.cn.helloservice.HelloServiceClient;

import cares.cn.helloservice.HelloServicePortType;

 

public class Test {

    public static void main(String[] args) {

       HelloServiceClient client = new HelloServiceClient();

       HelloServicePortType helloService = client.getHelloServiceHttpPort();

//     调用服务

       String result = helloService.hello("Tome");

       System.out.println("结果:" + result);

    }

 

}

注意: 当运行时可能失败,是因为提示缺少jar包,因此,要将commons-codec-1.3.jarcommons-httpclient-3.0.jar只放到lib中并在工程中引用

如果输出:HI,Tome  说明客户端调用web service 成功。整个过程就完成了。

 

方法二:

直接动态访问web service测试代码如下:

import java.net.MalformedURLException;

import java.net.URL;

 

import org.codehaus.xfire.client.Client;

 

public class Test2 {

    public static void main(String[] args) throws MalformedURLException,Exception {

       Client client = new Client(

              new URL(

                     "http://localhost:8080/ws/services/HelloService?wsdl"));

       Object[] results = client.invoke("hello", new Object[] { "Tome" });

       //invoke的第一个参数你要调用的方法,第二参数表示调用方法传递的参数

       System.out.println((String) results[0]);

    }

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值