Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 带有Tomcat和JNDI占位符的自包含JAR_Spring_Tomcat7_Jndi_Self Contained_Tomcat7 Maven Plugin - Fatal编程技术网

Spring 带有Tomcat和JNDI占位符的自包含JAR

Spring 带有Tomcat和JNDI占位符的自包含JAR,spring,tomcat7,jndi,self-contained,tomcat7-maven-plugin,Spring,Tomcat7,Jndi,Self Contained,Tomcat7 Maven Plugin,我正在将遗留的Spring3.2.8应用程序从WAR部署过渡到自包含的JAR。我正在使用tomcat7 maven插件创建一个可执行JAR: mvn安装tomcat7:exec-war 由于应用程序使用JNDI占位符,因此在没有定义占位符的情况下显然无法运行。在Tomcat安装中定义了以下占位符:(conf/Catalina/localhost/myapp.xml): 最后,这些占位符在applicationContext.xml中的使用方式如下: <bean id="dataSource

我正在将遗留的Spring3.2.8应用程序从WAR部署过渡到自包含的JAR。我正在使用tomcat7 maven插件创建一个可执行JAR:

mvn安装tomcat7:exec-war

由于应用程序使用JNDI占位符,因此在没有定义占位符的情况下显然无法运行。在Tomcat安装中定义了以下占位符:(
conf/Catalina/localhost/myapp.xml
):

最后,这些占位符在applicationContext.xml中的使用方式如下:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="java:comp/env/jdbc/mediaagent"/>
</bean>



    <bean id="dataSourceProperties"
              class="org.springframework.beans.factory.config.PropertiesFactoryBean">
            <property name="properties">
                <props>
                ...
                    <prop key="hibernate.dialect">org.hibernate.dialect.${dialect}Dialect</prop>
                ...
                </props>
            </property>
        </bean>

...
org.hibernate.dialogue.${dialogue}dialogue
...

我的目标是将这些设置提取到单独的配置文件中,该文件应该放在自给自足的JAR旁边,最好是像springboot中那样的属性文件。还应该可以像使用WAR文件一样使用JNDI注入它们。实现这一目标最优雅的方式是什么?

像boot还是with boot@玛吉德:就像弹簧靴。我们使用Spring 3.2.8,所以我不能使用Spring Boot。为什么不简单地升级Spring,通常它是一个一次性的替代品,这将为您提供Spring Boot,从而节省您重新发明轮子的时间。我建议不要使用JNDI,只使用属性文件,让Spring配置数据源。
${dialent}
也可以设置为系统变量,而不是JNDI
-Ddialect=Oracle
。数据源替换为配置的spring,而不是JNDI数据源。
<ResourceLink name="jdbc/mediaagent" global="jdbc/mediaagent" type="javax.sql.DataSource"/>
<ResourceLink name="hibernate/dialect" global="hibernate/dialect" type="java.lang.String"/>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="java:comp/env/jdbc/mediaagent"/>
</bean>



    <bean id="dataSourceProperties"
              class="org.springframework.beans.factory.config.PropertiesFactoryBean">
            <property name="properties">
                <props>
                ...
                    <prop key="hibernate.dialect">org.hibernate.dialect.${dialect}Dialect</prop>
                ...
                </props>
            </property>
        </bean>