spring - Tomcat 与 Jetty JNDI 查找

标签 spring tomcat jetty tomcat6 jndi

我使用 Spring 配置我的 Java Web 应用程序,在我的 Spring 配置中,我通过 JNDI 为 Jetty 获取数据源,如下所示:

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/myDataSource" />

但这不适用于 Tomcat。对于 Tomcat,我必须这样做:

<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/myDataSource" />

解决这个问题的最佳方法是什么?我已经在使用 JNDI 作为外部化配置的方式,所以我无法外部化我的外部化配置!同时,我绝对讨厌拥有两个独立的 Spring 配置文件的想法。帮助!!!

最佳答案

我找到了答案 here , 但我认为它有点复杂,但它确实给了我使用非常酷的 ServerDetector 的想法。博主找到的类。

一旦我可以动态确定我正在运行的服务器类型,我就可以使用 Spring 表达式语言来完成其余的工作:

<jee:jndi-lookup id="myAppDataSource" 
    jndi-name="#{ (AppServerType == 'Jetty' ? 'jdbc/' : 'java:comp/env/jdbc/') + 
                  'myAppDataSource' }" />

简单!

关于spring - Tomcat 与 Jetty JNDI 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4310187/

相关文章:

java - Spring 后处理器,顺序,@Required

java - 如何通过 SparkJava 更改 Jetty 设置?/Form too Large Exception/org.eclipse.jetty.server.Request.maxFormContentSize

java - NO_SECURITY 在 Jetty 的 ServletContextHandler 中起什么作用?

java - 静态 HashMap 初始化

java - 使用 JDBC JobStore 进行 Quartz 持久作业失火恢复

java - Spring 数据 : Order by nested property

java - 如何在Tomcat中更改应用程序部署路径

java - centos 5 上的队列计量学

tomcat - SSL fatal error ,握手失败 40

java - SpringBoot 1.2 在关机时抛出 NoClassDefFoundError