【发布时间】:2014-08-08 23:04:38
【问题描述】:
我正在尝试在 Eclipse RCP 应用程序中使用 Apache CXF。一个插件 (X) 将提供使用 CXF 的 OSGI 服务。另一个插件 (Y) 将调用此服务。
“X”插件使用我下载的 CXF JAR (CXF 2.7.11),它是我添加到 MANIFEST.MF 中的。当我从内部插件 X 运行我的测试用例时,一切正常,即我可以调用 Web 服务并获得响应。
当我尝试运行插件“Y”时,它会看到我可以调用的 OSGI 服务。 OSGI 服务从内部项目“X”调用与上述情况相同的代码,但现在它不起作用。我得到的例外是:
com.sun.xml.internal.ws.client.sei.SEIStub cannot be cast to org.apache.cxf.frontend.ClientProxy
在这部分:
org.apache.cxf.endpoint.Client client = ClientProxy.getClient(myServicePort);
现在,当我在这个插件(插件 X)中运行 SAME CODE 时,它运行良好。
所以我怀疑它与 JAR 和依赖项等有关,但我不确定。我搜索了这个异常,当 CXF 中缺少一些 JAR 时会出现这种情况,但是将 ALL JAR 添加到我在 CXF 发行版中找到的 MANIFEST.MF 中。
我什至不确定我真正需要哪些类的 CXF,但测试用例似乎运行得很好。
任何想法出了什么问题?
【问题讨论】:
-
检查您的 ClientProxy 导入。
-
我导入了所有的 CXF lib JAR。它在没有 Eclipse 的情况下运行,所以我不确定当我尝试将它作为插件运行时发生了什么
-
粘贴你初始化或设置ClientProxy的通道。
-
这是我发布的那一行。 myServicePort 是 cxf-codegen-plugin 通过 Java 生成的类。喜欢这里:stackoverflow.com/questions/10543306/…
标签: java eclipse-rcp jax-ws cxf manifest.mf