您的位置:首页 > 其它

XFire实现WebService服务端及客户端

2013-05-21 11:06 232 查看
创建Web Service

1.新建Web Project项目

2.右击项目->Myeclipse->Add XFire Web Service,弹窗详细设置如图:









3.创建Web Service,弹窗详细设置如图:





4.系统自动增加文件分析:

service.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">

    <service>
        <name>HelloWorld</name>
        <serviceClass>hellows.IHelloWorld</serviceClass>
        <implementationClass>
            hellows.HelloWorldImpl
        </implementationClass>
        <style>wrapped</style>
        <use>literal</use>
        <scope>application</scope>
    </service></beans>


IHelloWorld.java

package hellows;
//Generated by MyEclipse

public interface IHelloWorld {
    
    public String example(String message);
    
}


HelloWorldImpl.java

package hellows;
//Generated by MyEclipse

public class HelloWorldImpl implements IHelloWorld {
    
    public String example(String message) {
        System.out.println(this);
        return "你好,这是我的第一个Web Service,你输入的消息是:"+message;
    }
    
}


5.发布运行项目,显示WSDL

这个 Web 服务监听 的地址 是在:
http://localhost:8080/HelloWorldService/services/HelloWorld ,当我们企图直接访问时,将

会得到一段报错信息:

Invalid SOAP request.

即:无效的SOAP请求。然而, 按照Web 服务的规范,所有的Web 服务都必须提供WSDL描述,那么这里的Web服务也支持,只需要加入?wsdl参数就可以了。访问如下地址:
http://localhost:8080/HelloWorldService/services/HelloWorld?wsdl

得到的输出如下(可以看出WSDL 的确不是给人看的):



创建Java测试客户端

我们需要在 HelloWorldService 这个项目中创建一个类。首先要做的一步就是将类库 XFire HTTP Client Libraries 添加到项目的构造路径中去。首先在Package Explore 视图中,右键点击项目根节点,然后选中菜单 Build Path > Add Library,接着在弹出的 Add Library对话框中,选中列表项中的 MyEclipse Libraries,然后点击Next按钮进入下一页,选中此页列表中的XFire 1.2 HTTP Client Libraries,如图15.15

所示。最后点击 Finish 按钮结束添加类库的过程。 如图:



随后我们就可以新建客户端类来进行测试了,创建一个类 client.HelloWSClient,源代码清单如下:

package wsclient;
import java.net.MalformedURLException;
 
import hellows.IHelloWorld;
 
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.*;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
 
public class HelloWSClient {
 
  public static void main(String[] args) {
    Service srvcModel = new ObjectServiceFactory()
        .create(IHelloWorld.class);
    XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
        .newInstance().getXFire());
    String helloWorldURL =
"http://127.0.0.1:8080/HelloWorldXFire/services/HelloWorld";
    try {
      IHelloWorld srvc = (IHelloWorld) factory.create(
          srvcModel, helloWorldURL);
      String result = srvc.example("hello world Java 客户端测试");
      System.out.print(result);
    } catch (MalformedURLException e) {
      e.printStackTrace();
    }
  }
}


OK,现在运行这个类,可以得到预期的结果:

你好, 这是我的第一个 Web Service, 你输入的消息是:hello world Java 客户端测试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: