WebSphere8.0.0.6上的JAX-RS实现

WebSphere8.0.0.6上的JAX-RS实现,websphere,jax-rs,websphere-8,Websphere,Jax Rs,Websphere 8,我知道WebSphere8.0.0.6使用ApacheWink实现实现JAX-RS1.1 我只是想知道它使用的是什么版本的ApacheWink 另外,如果我需要使用apachecxf,我是否只需要将cxfjar与war捆绑在一起 另外,WebSphere8.0.0.6对CDI(Weld 2.x??)、Bean验证(??)、JPA(??)、JAXB(??)等使用了哪些实现。您可以通过运行WAS_HOME/bin目录中的versionInfo脚本来获得有关组件版本的详细报告。例如,对于Linux:

我知道WebSphere8.0.0.6使用ApacheWink实现实现JAX-RS1.1

我只是想知道它使用的是什么版本的ApacheWink

另外,如果我需要使用apachecxf,我是否只需要将cxfjar与war捆绑在一起


另外,WebSphere8.0.0.6对CDI(Weld 2.x??)、Bean验证(??)、JPA(??)、JAXB(??)等使用了哪些实现。

您可以通过运行WAS_HOME/bin目录中的
versionInfo
脚本来获得有关组件版本的详细报告。例如,对于Linux:

./versionInfo.sh -file versionReport.txt -maintenancePackages -componentDetail

规格版本在WAS v8.0.0中列出。x使用其自己的Wink v1.1-Cubating修改版本。如果导航到{WAS_HOME}/plugins,您将看到一个名为com.ibm.ws.jaxrs.jar的.jar。如果您研究该工件中的清单,您将看到IBM修改了WinkV1.1-Cubiting并创建了自己的v1.1.1。您需要使用这个版本,因为它包含wink jcdi服务器。否则,您无法将EJB注入Wink资源,这会产生许多恼人的问题。我通常不喜欢将自己束缚在特定于供应商的解决方案上,但在这种情况下,您将希望使用IBM的Wink实现。我已经将wink jcdi服务器从v1.2-Cubating向后移植到v1.1-Cubating,并取得了暂时的成功(我使jcdi功能正常工作,但由于没有确定的根本原因,在几次部署后丢失了它)。所以,省去很多挫折,使用IMB的Wink实现。IBM的Wink实现将通过OSGi相关工件向您的应用程序公开,无论您将classloader策略设置为PARENT_FIRST还是PARENT_LAST。我怀疑这是一个错误。您还需要在项目中包括com.ibm.ws.prereq.jaxrs.jar工件

在web.xml中,使用以下配置:

<!-- Wink Servlet -->
<servlet>
    <description>JAX-RS Tools Generated - Do not modify</description>
    <servlet-name>JAX-RS Servlet</servlet-name>
    <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.company.webservices.config.WinkApplication</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <enabled>true</enabled>
    <async-supported>false</async-supported>
</servlet>

<!-- Wink Servlet Mapping -->
<servlet-mapping>
    <servlet-name>JAX-RS Servlet</servlet-name>
    <url-pattern>/resources/*</url-pattern>
</servlet-mapping>

生成JAX-RS工具-不修改
JAX-RSservlet
com.ibm.websphere.jaxrs.server.IBMRestServlet
javax.ws.rs.Application
com.company.webservices.config.wink应用程序
1.
真的
,您的应用程序子类将通过扩展应用程序类和ApplicationPath注释自动识别。事实并非如此。您需要在web.xml中指定应用程序子类。但是,您会注意到控制台会告诉您使用了默认的Wink应用程序。这是错误的。您的类将被拾取,您需要重写getClasses方法并注册您的提供者、资源等。从WAS v8.0.0.8开始,已经观察到并彻底测试了此行为

您可以在WAS8中尝试CXF作为替代方案


与Geronimo和TomEE一样,WAS是基于Apache产品构建的。我可能错了,但我记得最后一次,v8.0使用了ApacheOpenWebBeans v1.0、ApacheBVALv1.0、ApacheOpenJPA v2.1.2-SNAPSHOT。我不确定JAXB,但我认为他们使用自己的json4j框架。我使用MOXy取得了惊人的成功。

获得了版本报告,但没有提供任何有关JEE6实现或支持的规格的详细信息?我手头没有WAS 8.0。例如,WAS 7.0 JAXB版本反映为bundle.fp.JAXB组件。我用一个链接更新了答案,其中指定了WAS8.0Thanks的所有规范版本。可以通过
unzip-p/opt/IBM/WebSphere/AppServer/plugins/com.IBM.ws.prereq.jaxrs.jar META-INF/MANIFEST.MF查看所有版本,我从2017年开始在WAS 8上使用CXF,它很有效(因为您编写了“您可以在WAS 8中尝试CXF,但很可能会遇到问题”),但信息非常丰富posting@aliopi-谢谢。很高兴知道。我想我在8年前尝试将CXF用于was上的web应用时遇到了类加载器问题,但遇到了一些问题,这就是我写这篇文章的原因。我听说/读到您可以让CXF处理它。我将编辑我的答案。