我的应用程序当前在weblogic上运行良好。但是由于要升级应用程序,我想使用spring boot和嵌入式tomcat。我有一个JndiTemplate
bean,例如:
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">${java.naming.factory.initial}</prop>
<prop key="java.naming.provider.url">${java.naming.provider.url}</prop>
</props>
</property>
</bean>
此模板是查找jndi对象(如数据源和jms)的助手。
如您所知,当我们使用weblogic时,工厂为weblogic.jndi.WLInitialContextFactory
,URL为t3://SERVER:PORT
。但谈到tomcat,我不知道该如何配置此模板。
答案 0 :(得分:1)
这可以使用Config文件进行配置,该文件使用@Bean批注来初始化TomcatEmbeddedServletContainerFactory。请参阅下面的代码片段,这可能会有所帮助。以下是需要根据您的需要进行更新的一种格式。
@Bean
public TomcatEmbeddedServletContainerFactory tomcatFactory() {
return new TomcatEmbeddedServletContainerFactory() {
@Override
protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(Tomcat tomcat) {
tomcat.enableNaming();
return super.getTomcatEmbeddedServletContainer(tomcat);
}
/* (non-Javadoc)
* @see org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory#postProcessContext(org.apache.catalina.Context)
*/
@Override
protected void postProcessContext(Context context) {
ContextResource resource = new ContextResource();
resource.setName("your_app_DS_name");
resource.setType("your_app_property");
resource.setProperty("driverClassName", "your_app_Drive");
resource.setProperty("factory", "your_app_factory_property_details");
//similarly configure other needed and dependent properties.
context.getNamingResources().addResource(resource);
}
};
}
答案 1 :(得分:1)
Tomcat不是Weblogic之类的Java EE容器。如果您真的想继续使用JNDI,请看一下TomEE。
就我个人而言,我将让Spring管理数据库连接。使用像Spring这样的框架的优点是,它可以减轻应用程序运行于其中的容器的很多责任,例如。数据库连接。
Spring Boot通过查看以下内容来自动配置数据源:
application.yml
用于JDBC URL和用户名/密码pom.xml
来查看它将使用哪个数据库驱动程序(Spring Boot也可以从您的JDBC URL派生该数据库驱动程序,但是您必须添加驱动程序库)真的没什么可做的了。
您现在可以自动连接DataSource
或使用Spring的JdbcTemplate
来避免大量样板代码。