0

在我的公司,我们正在开发一个应用程序,它使用半自定义持久层将其数据存储在 Neo4j 数据库中。使用该持久层,我们使用经典类声明我们的安全层:User、、Group等等Privilege

这些元素自然而然地保存在我们的 Neo4J DB 中。

不幸的是,我们现在想要声明我们的自定义 JAAS 领域,使用 Neo4J DB 作为后端。为了以尽可能快的方式编写该领域,我们决定在该领域中使用我们的应用程序代码(在 maven 的帮助下<dependency/>)。

不幸的是,我们发现,当我们部署 JAAS 领域时,应用程序代码无法加载各种

java.lang.RuntimeException: EJB Container initialization error 
Exception while loading the app : EJB Container initialization error 

也许这与我们在 JAAS 领域部署的事实有关${domaindir}/lib

无论如何,有没有一种解决方案让一个 glassfish JAAS 领域与部署在域中的一个应用程序共享一些代码?

4

1 回答 1

0

您说 JAAS 类已部署到 /domain/lib (这对我来说似乎是正确的)。我假设您的应用程序类部署为 WAR 或 EAR。

如果您的 JAAS 领域的实现依赖于 WAR/EAR 中的类,那么由于类加载器层次结构,您会遇到类加载问题。/domain/lib 类加载器无法访问 WAR/EAR 中的类。

您应该将依赖的类提取到一个单独的 jar 中,并将它们也放入 /domain/lib 中。

有关类加载器层次结构的更多信息,请参见此处:http: //docs.oracle.com/cd/E18930_01/html/821-2418/beadf.html

于 2012-09-18T08:21:22.810 回答