java - Eclipse RCP 和 Apache CXF

标签 java eclipse-rcp jax-ws cxf manifest.mf

我正在尝试在 Eclipse RCP 应用程序中使用 Apache CXF。一个插件 (X) 将提供使用 CXF 的 OSGI 服务。另一个插件 (Y) 将调用此服务。

“X”插件使用我下载的 CXF JAR (CXF 2.7.11),我将其添加到 MANIFEST.MF。当我从内部插件 X 运行我的测试用例时,一切正常,即我可以调用网络服务并获得响应。

当我尝试运行插件“Y”时,它会看到我可以调用的 OSGI 服务。 OSGI 服务从内部项目“X”调用与上述情况相同的代码,但现在它不起作用。我得到的异常(exception)是:

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 和依赖项等有关,但我不确定。我搜索了这个异常,当一些 JAR 从 CXF 中丢失时,就会出现这个异常,但是将 ALL JAR 添加到我在 CXF 分发中找到的 MANIFEST.MF。

我什至不确定我真正需要什么类的 CXF,但测试用例似乎运行得很好。

知道哪里出了问题吗?

最佳答案

我这样设置客户端:

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(YourClass.class);
factory.setAddress(endpoint);
YourClass port = (YourClass) factory.create(); 
Client client = ClientProxy.getClient(port);

如果您已自动生成 javas,您将拥有带有 name_name_client.java 和 name_name12_client.java 的客户端类,并且 YourClass 是 name.java(此 java 定义了 WebMethods),因此更改此设置并设置您的端点。 尝试一下,让我们知道它是否适合您。

关于java - Eclipse RCP 和 Apache CXF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289151/

相关文章:

java - 当对话框中的操作失败时,Primefaces 对话框背景不透明度加倍

Eclipse RCP 定义一种新的项目

java - 在插件 View 中将非同类节点添加到树

java - JAX-WS 无法在 OSGI 环境中解码

描述给定库/包的 Java 基本术语

java - 如何在另一个线程中在 Canvas 上绘图?

java - 如何在 JTextField 中显示淡灰色 "ghost text"?

java - 如何使用命令在帮助中添加备忘单菜单项

java - 具有多个属性的 Jax-ws Enum

java - jax-ws 服务返回数组列表