我在我的spring配置中使用tomcat中定义的数据源,如下面的xml所示。
有时可能无法在tomcat的context.xml中定义此数据源。 在这种情况下,由于找不到myDS,因此上下文初始化失败。
是否可以将数据源配置为可选,以便不影响应用程序初始化? 访问此数据源时可能会出现运行时错误,这是可以接受的
<bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/myDS"/>
</bean>
<bean id="myEntityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="myDataSource" />
<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />
<property name="packagesToScan" value="com..XX.XX" />
<property name="persistenceUnitName" value="myPU" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="#{systemProperties['showSql'] == null ? 'true' : systemProperties['showSql'] }" />
</bean>
</property>
<property name="persistenceUnitPostProcessors">
<list>
<ref bean="wrkflw-punitpostprocessor" />
</list>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">#{systemProperties['dbDialect']}</prop>
</props>
</property>
</bean>
由于 Muhad
答案 0 :(得分:0)
您可以检查DelegatingDataSource
,您可以封装逻辑以在其实例化中从JNDI
加载数据源。对于您的应用程序,总会有DataSource
,但在某些情况下(无论何时无法从DataSource
加载JNDI
),都没有委派。