У меня есть приложение, которое работает на JBoss 4.2.3 и подключается к БД Oracle 10g. Мы переработали приложение для использования Spring Roo. До того, как пытаться настроить для jndi, мы использовали обычные строки подключения БД, и это было нормально. Но теперь мы пытаемся использовать jndi, и хотя JBoss регистрирует jndi и создает компонент источника данных, когда hibernate фактически должен открыть соединение, он не может открыть.
Это конфигурация для постоянного устройства
<persistence-unit name="persistenceUnitDev" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
<!-- value="create" to build a new database on each run; value="update" to modify an existing database; value="create-drop" means the same as "create" but also drops tables when Hibernate closes; value="validate" makes no changes to the database -->
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>
<property name="hibernate.connection.charSet" value="UTF-8"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.connection.datasource" value="java:jdbc.DataSourceDev"/>
<property name="hibernate.validator.apply_to_ddl" value="false" />
<property name="hibernate.validator.autoregister_listeners" value="false" />
<property name="jboss.entity.manager.jndi.name" value="java:jdbc.DataSourceDev"/>
<property name="jboss.entity.manager.factory.jndi.name" value="java:/Manager1Factory"/>
</properties>
</persistence-unit>
hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="connection.datasource">java:jdbc.DataSourceDev</property>
<property name="connection.autocommit">true</property>
<property name="connection.release_mode">after_transaction</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
<!--DB schema will be updated if needed -->
<property name="hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>
контекст приложения определяет компоненты db:
<jee:jndi-lookup id="jndiDataSource2" jndi-name="${database.jndiName}"/>
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory">
<property name="persistenceUnitName" value="${hibernate.persistenceunit}"/>
<property name="dataSource" ref="jndiDataSource2"/>
</bean>
Я в недоумении, почему hibernate не может открыть соединение.
Редактировать: это журнал:
2011-12-05 12: 34: 51,577 WARN [org.jboss.resource.connectionmanager.JBossManagedConnectionPool] Бросок при попытке установить новое соединение: null
org.jboss.resource.JBossResourceException: не удалось создать соединение; - вложенный throwable: (java.sql.SQLException: Io исключение: сетевой адаптер не смог установить соединение)
в org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.createManagedConnection (LocalManagedConnectionFactory.java:190)
в org.jboss.resource.connectionmanager.InternalManagedConnectionPool.createConnectionEventListener (InternalManagedConnectionPool.java:619)
в org.jboss.resource.connectionmanager.InternalManagedConnectionPool.getConnection (InternalManagedConnectionPool.java:264)
в org.jboss.resource.connectionmanager.JBossManagedConnectionPool $ BasePool.getConnection (JBossManagedConnectionPool.java:575)
в org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection (BaseConnectionManager2.java:347)
в org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection (TxConnectionManager.java:330)
в org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection (BaseConnectionManager2.java:402)
в org.jboss.resource.connectionmanager.BaseConnectionManager2 $ ConnectionManagerProxy.allocateConnection (BaseConnectionManager2.java:849)
<- вырезать ->
Причина: java.sql.SQLException: Io исключение: сетевой адаптер не может установить соединение
в oracle.jdbc.driver.DatabaseError.throwSqlException (DatabaseError.java:112)
в oracle.jdbc.driver.DatabaseError.throwSqlException (DatabaseError.java:146)
в oracle.jdbc.driver.DatabaseError.throwSqlException (DatabaseError.java:255)
в oracle.jdbc.driver.T4CConnection.logon (T4CConnection.java:387)
в oracle.jdbc.driver.PhysicalConnection. (PhysicalConnection.java:441)
в oracle.jdbc.driver.T4CConnection. (T4CConnection.java:165)
в oracle.jdbc.driver.T4CDriverExtension.getConnection (T4CDriverExtension.java:35)
в oracle.jdbc.driver.OracleDriver.connect (OracleDriver.java:801)
в org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.createManagedConnection (LocalManagedConnectionFactory.java:172)