我想使用我的REST客户端,使用CXF开发,使用TomEE / TomEE 1.0,但我对JAXB JSON编组/解组(使用Jackson库)有一点问题 . 我尝试了Jersey Client 1.1.13和CXF WebClient(Tomee 1.0中包含的版本),但是,我在部署时遇到了同样的错误:
org.apache.openejb.OpenEJBException:没有提供者可用于'localhost / mywebapp.Comp'的'javax.ws.rs.ext.Providers'类型的resource-ref'null'
我还尝试将'jackson-jaxrs-json-provieder-2.0.4.jar'jar复制到TomEE lib目录,但错误是一样的 . 我还尝试将系统属性'openejb.cxf.jax-rs.providers'设置为'com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider,com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider',但没有任何改变 .
以下是我用来与CXF进行REST调用的代码示例:
final List<Object> providers = new ArrayList<Object>();
providers.add(new JacksonJaxbJsonProvider());
WebClient wc = WebClient.create(url, providers);
无论如何,这段代码从未执行过,因为错误发生在部署时 . 我的webapp(使用Jersey Client开发的版本)适用于Glassfish 3.1.2 .
问题出在哪儿?
谢谢你,再见,戴米斯
2 回答
找到并修复了这个bug:
试试最新的TomEE snapshot .
我使用jacskon(需要添加jars并设置提供程序)并且它可以工作 .
我找到了一个很好的临时解决方案来使用CXF休息客户端和Jackson JSON编组与TomEE 1.0.0 . 我将这些库从webapp lib移动到TomEE lib目录:
jackson-annotations-2.0.4.jar
jackson-jaxrs-json-provider-2.0.4.jar
jackson-module-jaxb-annotations-2.0.4.jar
jackson-core-2.0.4.jar
jackson-databind-2.0.4.jar
这是我的休息电话代码:
我希望在TomEE的下一个版本中,我不需要将Jackson的库添加到容器中,而只需要添加到webapp .