我们有spring boot项目,我们可以通过为 TomcatEmbeddedServletContainerFactory 类创建bean来通过java代码配置JNDI。在我们的项目中使用以下代码片段并使用spring boot embedded server正常工作。 / p>
但是如何从Java代码本身进行类似的JNDI配置来运行外部tomcat服务器,而不是在Tomcat中使用server.xml。
@Bean
public TomcatEmbeddedServletContainerFactory tomcatFactory() {
return new TomcatEmbeddedServletContainerFactory() {
@Override
protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(
Tomcat tomcat) {
tomcat.enableNaming();
return super.getTomcatEmbeddedServletContainer(tomcat);
}
@Override
protected void postProcessContext(Context context) {
ContextResource resource = new ContextResource();
resource.setName(connectionJndiName);
resource.setType(DataSource.class.getName());
resource.setProperty("driverClassName",
connectionDriverClassName);
resource.setProperty("url", connectionURL);
resource.setProperty("password", connectionPassword);
resource.setProperty("username", connectionUserName);
context.getNamingResources().addResource(resource);
}
};
}