Bluemix-jaxb 罐子

Bluemix - jaxb jar

我的应用程序使用来自 apache wink 的 jaxb jar (jaxb-impl-2.2.1.1.jar)。 我在 bluemix 上部署了我的应用程序。

当它访问 com.sun.xml.bind.marshaller.CharacterEscapeHandler 时,它在 bluemix 上失败并显示 NoClassDefFoundError。

bluemix 是否使用此 jar 的其他版本但没有此 class? 我该如何检查?

启用 jaxb-2.2 功能:

cf set-env <appname> JBP_CONFIG_LIBERTY "app_archive: {features: ["jsf-2.0", "jsp-2.2", "servlet-3.0", "ejbLite-3.1", "cdi-1.0", "jpa-2.0", "jdbc-4.0", "jndi-1.0", "managedBeans-1.0", "jaxrs-1.1", "jaxb-2.2"]}"

您也可以尝试使用 OpenJDK

cf set-env myapp JVM 'openjdk'

当你 运行 在 Liberty 上时,你不能在你的应用程序中包含 wink jaxb jar,你的代码应该只依赖于 类 包含在 jaxb 规范中(主要在javax.xml.bind 包)而不是任何 wink-specific 类.

然后您只需要在 server.xml 中包含 jaxb-2.2 功能。

有一个 tutorial for developing jaxb applications on liberty 介绍了配置开发环境和 Liberty 服务器所需的步骤。