CKi*_*ing 9 java web-services cxf jaxb
我已经读过,跨多个线程共享一个JAXBContext对象可以大大降低使用JAXB的应用程序的CPU使用率.这方面的一个证明就是这里.我们目前正在使用Apache CXF来开发Web服务.Apache CXF默认使用JAXB.
鉴于以上信息,如何在不使用基于Spring的配置文件的情况下将Apache CXF配置为使用单个JAXBContext,因为我正在查看使用没有Spring的servlet传输的代码库?是否可以为JAXBContext添加任何其他配置参数以进一步提高性能?
您可以尝试此处提出的基于 Global JAXBContext 定义的解决方案,但我不确定它是否能与 jax-rs 配合良好。
一个没有 spring 的更简单的解决方案是定义您自己的@Provider、扩展的org.apache.cxf.jaxrs.provider.JAXBElementProvider,并在 cxf 中注册它,openejb-jar.xml例如,如果您正在使用tomee ,则使用该文件。
您的提供商将如下所示:
@Provider
public class MyJAXBElementProvider<T> extends JAXBElementProvider<T> {
public MyJAXBElementProvider() {
super();
setSingleJaxbContext(true);
setExtraClass(...);
}
}
Run Code Online (Sandbox Code Playgroud)
它需要在WEB-INF/openejb-jar.xml您的网络应用程序的文件中注册,例如:
<?xml version="1.0"?>
<openejb-jar>
<pojo-deployment class-name="jaxrs-application">
<properties>
cxf.jaxrs.providers = mypackage.MyJAXBElementProvider
</properties>
</pojo-deployment>
</openejb-jar>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2769 次 |
| 最近记录: |