IBM Worklight 6.2 / Liberty 8.5.5.1
对于Webservice的自定义实现,
编写了Java代码,jaxrpc.jar包含在worklight项目的服务器lib文件夹中
在日食中测试时效果很好。
当构建移至Testing环境时,服务器抛出了以下错误。
Invocation of init method failed; nested exception is java.lang.LinkageError:
loaderconstraint violation: loader (instance of com/ibm/ws/classloading/internal
/ParentLastClassLoader) previously initiated loading for a different type with name
"javax/xml/namespace/QName"
我知道存在冲突。所以我从jaxrpc.jar中删除了QName.class,它位于server / lib文件夹中。但是我可以在测试环境中部署和运行它而不会出错。
因为,这不是解决方案,所以我尝试从server / lib中删除jaxrpc.jar,然后编译器在.java中抛出异常
The type javax.xml.rpc.Service cannot be resolved. It is indirectly referenced from required .class files
如果我仍在进行构建,那么在启动服务器时没有错误,但在运行时发生了类未找到异常。
如何使用Liberty库或任何其他解决方法。
答案 0 :(得分:1)
Liberty不支持JAX-RPC。仅支持JAX-RS。通过引用jaxrpc.jar文件,您可以运行类冲突,因为JAX-RS功能是Worklight所需的REST功能的依赖项。 最好的方法是使用JAX-RS来实现您的Web服务。其他解决方案是您已经测试过从jaxrpc.jar文件中删除冲突中的类。