使用JaxWsDynamicClientFactory动态调用CXF问题备忘

本文记录了在使用JaxWsDynamicClientFactory动态调用CXF服务时遇到的问题及解决方法。首先,传统的CXF客户端配置方式需要与服务端接口类匹配,不够灵活。通过JaxWsDynamicClientFactory,可以实现更便捷的调用,但过程中遇到了ClassNotFoundException和Compiler NullPoint异常。解决这些问题分别需要将tools.jar添加到类路径,以及确保运行环境使用的是JDK而非JRE,确保与服务端Tomcat的JDK版本一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原来调用CXF接口的方式都使用spring直接配置客户端,这种方式下,客户端需要与服务端有相同的接口类。

这种方式在某些场景下,一个服务需要对应配置一个客户端,极不方便。

改用如下方式代码:

// JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
// Client client = dcf.createClient("http://localhost:8090/demoService?wsdl");
//  
// Object[] res;
// try {
// res = client.invoke("sayHi", "test echo");
// System.out.println("Echo response: " + res[0]);
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();

// }


    报错:Caused by: java.lang.ClassNotFoundException: com.sun.tools.internal.xjc.api.XJC

    解决: 添加jdk下的tools.jar到类路径中  

    报错:Complier NullPoint  (在3.0+版本貌似是No compiler detected, make sure you are running on top of a JDK..)

    解决: 在Run Configurations 的jre标签页中直接选择使用jdk,(与服务端tomcat的jdk一致),

               tools.jar不需要再添加到类路径中


     

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值