为了账号安全,请及时绑定邮箱和手机立即绑定

从 weblogic 迁移到 tomcat

从 weblogic 迁移到 tomcat

开心每一天1111 2021-07-01 14:15:16
我的应用程序目前在 weblogic 上运行良好。但是由于升级应用程序,我想使用spring boot和嵌入式tomcat。我有一个JndiTemplate豆子,例如:<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.jndi.WLInitialContextFactory而 url 是t3://SERVER:PORT我们在 weblogic 上的时候。但是说到tomcat我不知道如何配置这个模板。
查看完整描述

2 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

Tomcat 不是像 Weblogic 那样的 Java EE 容器。如果您真的想继续使用 JNDI,请查看 TomEE。

就个人而言,我会让 Spring 管理数据库连接。使用像 Spring 这样的框架的优点是它从您的应用程序运行的容器中承担了很多责任,例如。数据库连接。

Spring Boot 通过查看以下内容自动配置数据源:

  • application.yml的 JDBC url 和用户名/密码

  • pom.xml可以查看它将使用哪个数据库驱动程序(Spring Boot 也可以从您的 JDBC url 派生该驱动程序,但您必须添加驱动程序库)

真的没什么可做的了。

您现在可以自动装配DataSource或使用 SpringJdbcTemplate来避免大量样板代码。


查看完整回答
反对 回复 2021-07-14
?
互换的青春

TA贡献1797条经验 获得超6个赞

这可以使用配置文件使用 @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);


        }

    };

}


查看完整回答
反对 回复 2021-07-14
  • 2 回答
  • 0 关注
  • 579 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信