5

我了解 Websphere 8.0.0.6 使用 JAX-RS 1.1 的 Apache Wink 实现。

我只是想知道它使用的是哪个版本的 Apache Wink?

另外,如果我需要使用 Apache CXF,我是否只需将 CXF jar 与我的战争捆绑在一起?

此外,Websphere 8.0.0.6 对 CDI (Weld 2.x ??)、Bean Validation (??)、JPA (??)、JAXB (??) 等使用了哪些实现。

4

2 回答 2

6

WAS v8.0.0.x 使用它自己的 Wink v1.1-incubating 的修改版本。如果导航到 {WAS_HOME}/plugins,您将看到一个名为 com.ibm.ws.jaxrs.jar 的 .jar。如果您探索该工件中的 MANIFEST,您将看到 IBM 修改了 Wink v1.1-incubating 并创建了自己的 v1.1.1。你会想要使用这个版本,因为它包含了 wink-jcdi-server。否则,您无法将 EJB 注入您的 Wink 资源中,这会产生许多烦人的问题。我通常不喜欢将自己束缚在特定于供应商的解决方案中,但在这种情况下,您将希望使用 IBM 的 Wink 实现。我已经将 wink-jcdi-server 从 v1.2-incubating 反向移植到 v1.1-incubating 并取得了暂时的成功(我让 jcdi 功能正常工作,但是,没有确定的根本原因,几次部署后丢失了它)。因此,省去大量的挫败感,并使用 IMB 的 Wink 实现。无论您将类加载器策略设置为 PARENT_FIRST 还是 PARENT_LAST,IBM 的 Wink 实现都将通过与 OSGi 相关的工件暴露给您的应用程序。我怀疑这是一个错误。您还需要在项目中包含 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>

根据IBM 自己在 JAX-RS 上的 WAS v8.0 视频,您的 Application 子类将通过扩展 Application 类和 ApplicationPath 注释来自动识别。不是这种情况。您需要在 web.xml 中指定您的应用程序子类。但是,您会注意到控制台会告诉您使用了默认的 Wink 应用程序。这是错误的。您的课程将被选中,您需要重写 getClasses 方法并注册您的提供者、资源等。从 WAS v8.0.0.8 开始,已经观察到并彻底测试了这种行为。

您可以在 WAS 8 中尝试使用 CXF 作为替代方案。

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

于 2014-02-22T21:19:22.503 回答
1

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

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

规范版本在规范和 API 文档中列出

于 2013-08-14T18:32:41.967 回答