Estoy tratando de configurar una aplicación web Spring + Hibernate usando JNDI en lugar de un archivo de propiedades. Todo funciona bien por URL de base de datos, contraseña, inicio de sesión, etc., pero no puedo obtener el dialecto del contexto JNDI.Configurar el dialecto de hibernación usando JNDI (con Spring)
estoy usando esto en mi datatabase-context.xml:
<bean id="databaseUrl" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/url"/>
</bean>
<bean id="databaseDriver" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/driver"/>
</bean>
<bean id="databaseUsername" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/username"/>
</bean>
<bean id="databasePassword" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/password"/>
</bean>
<bean id="databaseDialect" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/dialect"/>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" ref="databaseDriver"/>
<property name="url" ref="databaseUrl"/>
<property name="username" ref=databaseUsername"/>
<property name="password" ref="databasePassword"/>
<property name="maxWait" value="30000"/>
<property name="validationQuery" value="select 1"/>
<property name="maxActive" value="100"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan">...</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
<!--<prop key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop>-->
<!--<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>-->
</props>
</property>
</bean>
El problema es que no sé cómo utilizar el valor JNDI para databaseDialect dentro de la propiedad <prop name="hibernate.dialect">blabla</prop>
.
¿Alguna idea?
funciona perfecto! ¡Gracias! – infinito