关于java.lang.ClassNotFoundException: com/sun/tools/internal/xjc/api/XJC报错的问题所在:
调用时采用的是弱类型模式,即直接使用了我们提供的WebserviceUtil里面的invoke方法。cxf调用webservice时如果采用弱类型,需要强制依赖jdk里面的tools.jar,而我们的开发环境有jdk所以没有问题。但是正式运行环境只有jre,所以就出问题了。
解决方式:
①:服务器上面安装jdk,同时配置tomcat运行依赖指向jdk(不推荐)
②:修改调用方式为强类型调用模式(推荐)。
下载 apache-cxf-3.1.6 压缩包,解压到任意目录。cmd、cd到解压目录的bin目录下执行
wsdl2java -encoding utf-8 http://xxx.yyy.com:8080/xxxService?wsdl。
即可生成代理类。通过代理调用改service的方法即可。