从weblogic迁移到tomcat

时间:2018-08-12 06:06:48

标签: java spring spring-boot tomcat weblogic

我的应用程序当前在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,我不知道该如何配置此模板。

2 个答案:

答案 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来避免大量样板代码。