使用Java创建SOAP Web服务客户端应用程序

时间:2013-04-16 11:15:00

标签: java web-services soap client cxf

我在eclipse中使用 Apache CXF 在Java中创建了Web服务,现在我必须创建一个WebService客户端应用程序来使用和调用它。 我一直在寻找一种方法,我发现Client始终依赖于服务器的Java类。

问题是我必须在其他Java环境中开发客户端类。我的问题是:有没有办法开发一个独立于webservice服务器包的客户端类,只使用 WSDL 文件?

谢谢:)

2 个答案:

答案 0 :(得分:0)

您可以将Apache CXF Link wsdl的帮助带到java工具中。 wsdl2java - 获取WSDL文档并生成完全带注释的Java代码,从中实现服务。

您也可以获得eclipse插件的帮助。

Eclipse plugin to generate java class

答案 1 :(得分:0)

您可以将请求作为XML请求发送到Web服务API。您只需要使用正确的标题和正文来构建SOAP投诉请求。通过使用SoapUI,您可以生成XML请求结构,然后在您的应用程序中重用它。

如果您使用的是Jax-RS(REST API),即使http方法也可以使用

<强> [更新]

如果您不知道如何创建客户端类,那么您将遵循此

  1. 使用wsimport

    >  http : //hostname :port/wsdl.url on command line to create proxy classes
    
  2. 创建jar文件生成的代理类

  3. 将jar文件添加到类路径
  4. 使用Service API构建端点,然后调用服务。
  5. 下面给出了示例测试客户端。

    try {
    
        URL wsdlURL = new URL("http://localhost:8082/cxf/services/yourservice?wsdl");
    
        QName SERVICE_NAME = new QName("http://package.name/","PORTNAme");
    
        Service service = Service.create(wsdlURL, SERVICE_NAME);
    
        client = service.getPort(PORTInterface.class);
    
        client.executeYourMethod()
    
    } catch (Exception e) {
    
        // TODO Auto-generated catch block
    
        e.printStackTrace();
    
    }
    
  6.   

    1. URL是WSDL网址
    2. 要创建QName,需要提供服务接口的命名空间(通常是包的名称)和PORT名称,您可以在绑定部分的WSDL中找到它。
    3. 还需要识别Proxy类(名称与端口名称类似)
    4. 干杯 Satheesh