我正在寻找有关 JNDI 领域与资源的一些说明。
我的应用程序中有一个 LDAP 领域和一个数据库资源。他们目前居住在META_INF/contex.tml
,带有 <resource-ref>
在web.xml
指向资源。
我正在尝试将这两个项目移入 tomcat 并移出我的应用程序。
在 Linux 上,我放置了 <Realm className="org.apache.catalina.realm.JNDIRealm"....
和 <Resource name="UserDatabase"....
在 $CATALINA_HOME/conf/context.xml
一切“似乎”工作正常,但是,我不确定这是正确的方法。
当我在 Mac 上尝试类似的设置时,tomcat 似乎崩溃了,并进入了一种模式,它不断提示我在管理器 GUI 上输入密码,这意味着可能发生了非常糟糕的事情。
将这些资源移出我的本地应用程序的最佳实践和最佳“位置”是什么 - 我需要在 web.xml
中执行任何操作吗?告诉它从服务器“查找”这些资源。
最佳答案
Tomcat 的配置文件是通用的并且对所有应用程序都有效(当然,除非您基于别名限制某些条目)。因此,如果您计划在同一实例上运行多个应用程序,那么每个应用程序将其本地资源作为其自己的文件的一部分提供实际上并不是一个坏主意。如果它只是一个应用程序,则主要取决于您,并且在引入更改时更容易 - 修改应用程序并重新部署或修改服务器并重新启动。
查看this pretty old post有关优先读取哪些文件的详细信息。在您的情况下,您应该可以在 Tomcat 内使用/conf/context.xml 或在应用程序内使用/META-INF/context.xml 。
至于稍后查找资源 - 不,您不必做任何额外的事情。直接在代码中执行此操作或注入(inject)它们应该可以正常工作。
你在 Mac 上描述的内容听起来很有趣,特别是如果它在 Linux 上运行的话。也许 context.xml 文件有一行结尾问题?如果尚未检查 Tomcat 日志文件,它们可能会告诉您问题所在。
关于java - tomcat中的Realm资源和context.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32183581/