tomcat和jndi

pwuypxnk  于 2021-10-10  发布在  Java
关注(0)|答案(0)|浏览(234)

我有一个使用嵌入式tomcat服务器运行良好的web应用程序。我需要做的是有一个tomcat服务器(不是嵌入式的),它拥有关于db连接的所有信息,这样我的应用程序就可以通过jndi连接这个db。我遵循了本教程(除了hibernate部分,因为我不使用它):https://www.baeldung.com/spring-persistence-jpa-jndi-datasource 但由于noinitialcontextexception(需要在环境或系统属性中,或在应用程序资源文件中指定类名:java.naming.factory.initial),我无法运行我的应用程序。我的代码:

@Configuration
@EnableTransactionManagement
@PropertySource("classpath:persistence-jndi.properties")
public class PersistenceJNDIConfig {
    @Autowired
    private Environment env;
    @Bean
    public DataSource dataSource() throws NamingException {
        return (DataSource) new JndiTemplate().lookup(env.getProperty("jdbc.url"));
    }
}

.properties文件:

jdbc.url=java:comp/env/jdbc/postgres

tomcat目录中的server.xml:

<Resource name="jdbc/postgres" 
  auth="Container"
  type="javax.sql.DataSource" 
  driverClassName="org.postgresql.Driver"
  url="jdbc:postgresql://localhost:5432/university"
  username="admin" 
  password="admin" 
  maxTotal="20" 
  maxIdle="10" 
  maxWaitMillis="-1"/>

context.xml

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

任何关于如何解决这个问题的建议都将不胜感激。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题