我知道如何使用Apache CXF生成客户端存根.但是,当我尝试运行生成的类时,它使用JAXWS.另外,我注意到生成的类的导入类来自javax包.如何使用set生成的类来使用Apache CXF库而不是JAXWS库?
wsdl2java -frontend jaxws21 -wsdlLocation "Meta-INF/wsdl/WSCustom.wsdl" -client -d C:\Workspace\WSClient\Meta-INF\wsdl\ "C:\Workspace\WSClient\Meta-INF\wsdl\WSCustom.wsdl"
最佳答案
存根是正确的,其中不应存在任何特定于CXF的导入,因为可以使用JAX-WS标准注释来表示CXF所需的所有信息.在运行时,如果它们位于类路径上,则将使用CXF客户端库,或者如果CXF不可用,将使用内置于JDK的RI.生成的存根将使用其中任何一个.
原文链接:https://www.f2er.com/java/438336.html您在评论中询问了如果您只是运行客户端需要哪些CXF JAR – 据我所知,它只是cxf-rt-frontend-jaxws和cxf-rt-transports-http以及它们的传递依赖项.如果您的项目是使用maven构建的,那么只需声明这两个依赖项,其他所有内容都应自动进入,如果没有,则下载Apache Ivy main JAR然后运行
java -jar ivy-2.3.0.jar -dependency org.apache.cxf cxf-rt-frontend-jaxws 2.7.3 -retrieve "[artifact]-[revision](-[classifier]).jar"
java -jar ivy-2.3.0.jar -dependency org.apache.cxf cxf-rt-transports-http 2.7.3 -retrieve "[artifact]-[revision](-[classifier]).jar"
这应解决传递依赖关系并将相关JAR从Maven Central下载到当前目录中.