java - tomcat中PostgreSQL数据库的JNDI查找

标签 java spring jndi

在现有应用程序中,我使用 jndi 连接到数据库,如下所示。请指导我如何在基于 Spring 的应用程序中编写有效的代码。

我当前的 jndi 查找代码是

InitialContext context = null;
String welcomeMessage = null;
Integer maxSessionCount = null;

try{
    context = new InitialContext();

    welcomeMessage = (String)context.lookup(
            "java:comp/env/welcomeMessage");
    maxSessionCount = (Integer)context.lookup(
            "java:comp/env/maxSessionCount");
}
catch (NamingException exception){
    exception.printStackTrace();
}

最佳答案

<jee:jndi-lookup id="dbDataSource"
   jndi-name="jdbc/DatabaseName"
   expected-type="javax.sql.DataSource" />

使用如下内容在 tomcat 的 server.xml 中声明 JNDI 资源:

<GlobalNamingResources>
  <Resource name="jdbc/DatabaseName" auth="Container" type="javax.sql.DataSource"
              username="dbUsername" password="dbPasswd"
              url="jdbc:postgresql://localhost/dbname"
              driverClassName="org.postgresql.Driver"
              initialSize="5" maxWait="5000"
              maxActive="120" maxIdle="5"
              validationQuery="select 1"
              poolPreparedStatements="true"/>
</GlobalNamingResources/>

并从 Tomcat 的 Web context.xml 引用 JNDI 资源,如下所示:

 <ResourceLink name="jdbc/DatabaseName"
   global="jdbc/DatabaseName"
   type="javax.sql.DataSource"/>

在您的应用程序中使用 dbDatasource Bean。

关于java - tomcat中PostgreSQL数据库的JNDI查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19462400/

相关文章:

java - 如何在 Java LDAP 连接上指定 SSL/TLS 版本?

java - 连接两个数组 Stream 时出现 ArrayStoreException

java - 成功打印康威生命游戏的初始游戏板时出现编译器错误

java - 移动数组中的数字

java - == 运算符的编译错误

java - 运行 Jersey 测试时初始化 Spring beans

java - Eclipse:添加 javadoc

java - 在没有 java :comp/env prefix 的情况下访问 JNDI 数据源

java - 通过 Spring Boot 应用程序访问 mongodb 时的身份验证错误

java - JNDI 目录服务