只需在 Java 中使用 Web 服务

2022-09-01 06:01:48

我有一个非常简单的 SOAP Web 服务,我需要从 Java 客户端使用它。在不使用任何第三方库的情况下实现此目的的最简单方法是什么?一个要求是,在每次调用 ws 之前,.xml从 Web 读取主机和端口。


答案 1

我可以向你推荐CXF库。使用它,您将有几个选项来调用Web服务:

  1. 使用动态代理进行调用(不需要使用 wsdl2java 制作 Java 存根)。

    DynamicClientFactory dcf = DynamicClientFactory.newInstance();
    Client client = dcf.createClient("http://admin:password@localhost:8080"+
                                     "/services/MyService?wsdl");
    Object[] a = client.invoke("test", "");
    System.out.println(a);
    
  2. 使用从 WSDL 生成的 Java 存根,使用 wsdl2java。

  3. 如果您的服务器是使用 CXF 创建的,则可以直接重用接口代码(而不是在从您的接口创建的 WSDL 上使用 wsdl2java!

对于 #2 和 #3,以下代码举例说明了 CXF 用法:

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setAddress("http://admin:password@localhost:8080/services/MyService");
factory.setServiceClass(ITest.class);
ITest client = (ITest) factory.create();
client.test();

答案 2

根据您使用的 JAVA 版本,一些 JAX-WS 被内置在其中。JDK 6 具有 Java 的 JAX-WS 标准实现,你可以使用它。

请参阅以下内容:


推荐