我们正在尝试在我们的一台带有 IBM WAS 应用程序服务器的 Linux 机器上设置 JackRabbit Oak,并且在 WAS 上启动服务器时遇到了一些问题。
Apache JackRabbit 是一个内容存储库,它是一个分层内容存储,支持结构化和非结构化内容、全文搜索、版本控制、事务、观察等。根据我们的要求,我们正在使用它以结构化形式(特别是作为树)存储数字资产。
我们有一个 REST 应用程序和另一个应用程序 DAM(数字资产管理),它处理存储库的创建,在请求时提供与存储库的连接(单例),在存储库上创建节点等。在我们的本地开发设置中,我们将此 DAM 导出为 JAR,例如 dam.jar,并将其放入 REST 应用程序的类路径中。我们有 JackRabbit Oak 的 JAR (oak-run-1.4.11.jar),我们将它放在 DAM 应用程序的类路径中。
在 WAS 应用服务器上的 Linux 机器上进行类似设置时,我们使用的是相同的 dam.jar,它是通过在 Windows 机器上的 eclipse 中将项目导出为 JAR 来创建的。我们通过在部署了 REST 应用程序的服务器中配置它,将它放在 WAS 上的 REST 应用程序的类路径中。
在调试时,我们发现应用程序能够从 dam.jar 访问类,但是当 DAM 的类尝试调用 JackRabbit 的类时,它会抛出 java.lang.NoClassDefFoundError 失败。我们尝试将 JackRabbit 的 JAR (oak-run-1.4.11.jar) 放在 WAS 上的类路径中,方法是为 REST 应用程序的服务器配置它,但随后服务器无法启动。
附件是日志文件:/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/servers/RESTAPP/configuration/1489493294429.log /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs 的服务器日志内部没有太多内容/RESTAPP(RESTAPP 是我们 REST 应用程序的服务器名称),下面是代码片段:
[3/14/17 17:38:04:872 IST] 00000001 ModelMgr I WSVR0801I:初始化所有服务器配置模型 [3/14/17 17:38:08:564 IST] 00000001 WorkSpaceMana A WKSP0500I:工作区配置一致性检查是禁用。[3/14/17 17:38:08:834 IST] 00000001 AdminTool A ADMU3200I:服务器已启动。等待初始化状态。[3/14/17 17:38:18:241 IST] 00000001 AdminTool A ADMU3011E: 服务器已启动但初始化失败。/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/RESTAPP 下的服务器日志、startServer.log 和其他日志文件应包含故障信息。
我们在这里怀疑 dam.jar,因为它是通过将其导出为 JAR 文件从我们的 eclipse 工作区创建的,这可能需要一些额外的信息才能将这个 JackRabbit Oak 库包含在其中。
我们将类路径条目放在应用程序服务器 > RESTAPP > 流程定义 > WAS 的 Java 虚拟机中。
谢谢