2016-07-22 3 views
0

я получаю приложение должно обеспечивать исключение соединения JDBC при попытке выполнить запрос на Mysql БД с использованием Spring + зимуютПолучение приложение должно поставить JDBC соединения исключения

контекст приложения имеет следующие записи

<bean id="jdbc" class="org.springframework.jdbc.core.JdbcTemplate"> 
      <property name="dataSource" ref="appDataSource" />  
</bean> 

<bean id="appDataSource" class="org.apache.commons.dbcp.BasicDataSource" 
     destroy-method="close"> 
     <property name="driverClassName" value="org.mariadb.jdbc.Driver" /> 
     <property name="url" value="jdbc:mariadb://localhost:3306/appdb" /> 
     <property name="username" value="username" /> 
     <property name="password" value="password" /> 
</bean> 

И JNDI имя, как

<jee:jndi-lookup id="appDataSource" jndi-name="java:comp/env/jdbc/Modeling"/> 

Полный трассировки стека

java.lang.UnsupportedOperationException: The application must supply JDBC connections 
at org.hibernate.engine.jdbc.connections.internal.UserSuppliedConnectionProviderImpl.getConnection(UserSuppliedConnectionProviderImpl.java:44) 
at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:386) 
at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:84) 
at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java: ) 
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.connection(StatementPreparerImpl.java:47) 
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:146) 
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:172) 
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:148) 
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1927) 
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1896) 
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1874) 
at org.hibernate.loader.Loader.doQuery(Loader.java:919) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336) 
at org.hibernate.loader.Loader.doList(Loader.java:2610) 
at org.hibernate.loader.Loader.doList(Loader.java:2593) 
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2422) 
at org.hibernate.loader.Loader.list(Loader.java:2417) 
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:501) 
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:371) 
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216) 
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1339) 
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:87) 
at org.hibernate.internal.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:964) 

Hibernate конфигурации

<hibernate-configuration> 
    <session-factory> 
     <mapping resource="service.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 

файл Service.hbm.xml

<hibernate-mapping> 
    <class name="service.repository.Account" 
     table="ACCOUNTS" discriminator-value="null"> 
     <id name="id" column="id" type="java.lang.Long"> 
     //all other entry 
    </class> 
</hibernate-mapping> 
+1

Пожалуйста, поделитесь своими конфигурациями спящего режима –

+0

Опубликуйте конфигурацию весны в спящем режиме ... Не файлы hibernate xml. Я также не вижу, как настройка источника данных на «JdbcTemplate» имеет значение для вашего вопроса, так как это относится к спящему. –

ответ

0

Я полагаю, ваш "Java: комп/ENV/JDBC/Modeling" Имя JNDI не указывает на действительный источник данных объект.

+0

Вы имеете в виду, что это JNDI-имя должно быть таким же, как упомянутое в отдельном файле jboss? –

+0

Я предполагаю, что один из автономных xml JBoss является значением по умолчанию, которое вы можете переопределить где-то. Извините, не могу предоставить более подробную информацию, так как я никогда не работал с JBoss. Но с точки зрения Spring/Hibernate тот факт, что UserSuppliedConnectionProviderImpl используется, означает, что ваш источник данных не возвращается jndi-name «java: comp/env/jdbc/Modeling» – Alexander

+0

Я никогда не работал с Spring. Я знаю EJB + Hibernate. Работала с persistence.xml раньше. Все это для меня совершенно новое. Вилка проекта с небольшим количеством документов очень сложна для отладки –

1

ли ниже -

1) Проверьте hibernate.cgf.xml (или ваш конфигурационный файл спящего режима) & подтвердить, если ниже правильны -

hibernate.connection.url 
hibernate.connection.username 
hibernate.connection.password 
hibernate.dialect 
hibernate.connection.driver_class 

2) Проверьте имя источника данных у вас есть определить в вашем standalone.xml (конфигурационный файл JBoss) .Он должен совпадать с JNDI-именем вашего = «Java: datasource_name»

0

Проблема решена после удаления JRebel плагина от настроек сервера. Некоторые, как jrebel возился с конфигурацией.

Модернизированная конфигурация мятежников и все в порядке.