只需在 Java 中使用 Web 服务
2022-09-01 06:01:48
我有一个非常简单的 SOAP Web 服务,我需要从 Java 客户端使用它。在不使用任何第三方库的情况下实现此目的的最简单方法是什么?一个要求是,在每次调用 ws 之前,.xml从 Web 读取主机和端口。
我有一个非常简单的 SOAP Web 服务,我需要从 Java 客户端使用它。在不使用任何第三方库的情况下实现此目的的最简单方法是什么?一个要求是,在每次调用 ws 之前,.xml从 Web 读取主机和端口。
我可以向你推荐CXF库。使用它,您将有几个选项来调用Web服务:
使用动态代理进行调用(不需要使用 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);
使用从 WSDL 生成的 Java 存根,使用 wsdl2java。
如果您的服务器是使用 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();
根据您使用的 JAVA 版本,一些 JAX-WS 被内置在其中。JDK 6 具有 Java 的 JAX-WS 标准实现,你可以使用它。
请参阅以下内容:
JAX-WS Web 服务入门(使用 JDK 内置 JAX-WS 部署和使用 Web 服务的教程)