gpt4 book ai didi

websphere - Websphere 8.0.0.6 上的 JAX-RS 实现

转载 作者:行者123 更新时间:2023-12-04 18:09:27 26 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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 注入(inject)您的 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's own WAS v8.0 video on JAX-RS ,您的 Application 子类将通过扩展 Application 类和 ApplicationPath 注释来自动识别。不是这种情况。您需要在 web.xml 中指定您的应用程序子类。但是,您会注意到控制台会告诉您使用了默认的 Wink 应用程序。这是错误的。您的类(class)将被选中,您需要重写 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 取得了惊人的成功。

关于websphere - Websphere 8.0.0.6 上的 JAX-RS 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com