我有一个使用嵌入式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"/>
任何关于如何解决这个问题的建议都将不胜感激。
暂无答案!
目前还没有任何答案,快来回答吧!