在Java 11中,JAX-WS(Java API for XML Web Services)已被标记为不推荐使用,并从JRE(Java Runtime Environment)和JDK(Java Development Kit)中删除。Apache CXF是基于JAX-WS API实现的SOAP客户端和服务器库,因此在Java 11中使用Apache CXF创建SOAP客户端可能会出现错误。
为了解决这个问题,可以将Apache CXF升级到3.3.0或更高版本。这些版本对Java 11提供了全面的支持。
另外,还需要在maven项目中添加以下依赖项:
javax.xml.bind
jaxb-api
2.3.1
com.sun.xml.bind
jaxb-core
2.3.0.1
com.sun.xml.bind
jaxb-impl
2.3.1
这些依赖项将启用JAXB(Java Architecture for XML Binding)来处理SOAP消息。具体来说,jaxb-api依赖项提供了JAXB API,jaxb-core提供了JAXB的核心实现,jaxb-impl提供了JAXB的实际实现。
例如,对于创建一个简单的SOAP客户端,可以使用以下代码:
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(MyService.class);
factory.setAddress("http://localhost:8080/myapp/myservice");
MyService client = (MyService) factory.create();
// call a method on the client
client.sayHello("world");
这将创建一个指向http://localhost:8080/myapp/myservice终端的MyService客户端代