2010-01-26 2 views
3

Я разрабатываю приложение, которое использует семь источников данных (ds) для баз данных MySql. Я очень доволен результатом, когда он работает. Однако я получаю проблемы с источником данных, когда я перераспределяю свои приложения.Недопустимые исходные данные Jboss после повторного развертывания

Вот один из семь йза я настроил в My My-прикладной ds.xml:

<xa-datasource> 
      <jndi-name>jdbc/my_db_name</jndi-name> 
      <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class> 
      <xa-datasource-property name="URL">jdbc:mysql://192.168.26.2:3306/my_db_name</xa-datasource-property> 
      <xa-datasource-property name="User">user</xa-datasource-property> 
      <xa-datasource-property name="Password">password</xa-datasource-property> 
      <min-pool-size>0</min-pool-size> 
      <max-pool-size>5</max-pool-size> 
      <idle-timeout-minutes>5</idle-timeout-minutes> 
      <exception-sorter-class-name> 
      com.mysql.jdbc.integration.jboss.ExtendedMysqlExceptionSorter 
      </exception-sorter-class-name> 
      <valid-connection-checker-class-name> 
      com.mysql.jdbc.integration.jboss.MysqlValidConnectionChecker 
      </valid-connection-checker-class-name> 
      <track-connection-by-tx/> 
</xa-datasource> 

Я думаю, что я настроен должным образом в соответствии со всем я нашел в Интернете о это.

1. Развернутое приложение запускает тест OK

2. Передаются приложение, запустить тест NOK

10: 07: 23865 WARN [JBossManagedConnectionPool] Throwable при попытке получить новое соединение: нулевой

org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (java.lang.NullPointerException) 
at org.jboss.resource.adapter.jdbc.xa.XAManagedConnectionFactory.createManagedConnection(XAManagedConnectionFactory.java:144) 
at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.createConnectionEventListener(InternalManagedConnectionPool.java:577) 
at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.getConnection(InternalManagedConnectionPool.java:262) 
at org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BasePool.getConnection(JBossManagedConnectionPool.java:500) 
at org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection(BaseConnectionManager2.java:341) 
at org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.java:315) 
at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:396) 
at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:842) 
at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:88) 
at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69) 
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84) 
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2073) 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1298) 
at net.saphety.billing_core.dblayer.datasource.HibernateSession.configure(HibernateSession.java:58) 
at net.saphety.billing_core.dblayer.datasource.HibernateSessionFactory.getHibernateSession(HibernateSessionFactory.java:25) 
at net.saphety.billing_core.dblayer.datasource.HibDaoCRUD.<init>(HibDaoCRUD.java:35) 
at net.saphety.billingcorewebapp.web.FilterHibernateControlSession.doFilter(FilterHibernateControlSession.java:43) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) 
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 
at java.lang.Thread.run(Thread.java:619) 
Caused by: java.lang.NullPointerException 
at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:426) 
at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:137) 
at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:107) 
at com.mysql.jdbc.jdbc2.optional.MysqlXADataSource.getXAConnection(MysqlXADataSource.java:47) 
at org.jboss.resource.adapter.jdbc.xa.XAManagedConnectionFactory.createManagedConnection(XAManagedConnectionFactory.java:136) 
... 34 more 

После этого спящего режима жалуется на диалекте ...

org.hibernate.HibernateException: Hibernate Dialect must be explicitly set 
at net.saphety.billing_core.dblayer.datasource.HibernateSession.configure(HibernateSession.java:62) 
at net.saphety.billing_core.dblayer.datasource.HibernateSessionFactory.getHibernateSession(HibernateSessionFactory.java:25) 
at net.saphety.billing_core.dblayer.datasource.HibDaoCRUD.<init>(HibDaoCRUD.java:35) 
at net.saphety.billingcorewebapp.web.FilterHibernateControlSession.doFilter(FilterHibernateControlSession.java:43) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) 
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 
at java.lang.Thread.run(Thread.java:619) 

3. Обновите файл * -ds.xml и запустите тестовый NOK, ничего не происходит ... В моем браузере я получаю пустой ответ.

4. Обновите приложение, все снова отлично работает. : S

У сервера MySql достаточно соединений.

У меня есть другой проект с источниками данных, но с сервером oracle, и никаких проблем нет. Так что это имеет какое-то отношение к MySql, но я не могу понять, что.

+0

Так что давайте посмотрим, правильно ли я понял? Вы NOK, пока не перераспределите свой файл * -ds.xml И ТОГДА передислоцируйте приложение, но не наоборот? – Adam

ответ

2

Эти проблемы выглядят как проблемы MySql, поэтому вам, вероятно, следует проверять журналы там.

Caused by: java.lang.NullPointerException 
    at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:426) 

указывает на сбой в глубине связи с MySql. Учитывая количество подключений к экземпляру MySql. Возможно, соединение неверно, но JBoss пытается его повторно использовать.

Попробуйте изменить ваши соединения с базой данных для использования:

<min-pool-size>1</min-pool-size> 

Или даже ноль, чтобы не просто захватить соединения бассейн на старте. Также проверьте, можете ли вы настроить MySql для обеспечения более одновременных соединений. В настоящее время только ваше развертывание JBoss займет 35 подключений при запуске и достигнет максимума 140. Вам действительно нужно столько подключений и является экземпляром MySql, сконфигурированным для работы с этим множеством. Если нет, добавьте эти параметры в соответствие, и ваши проблемы должны улучшиться.

+0

Нет, мне не нужно столько подключений :), изменено на 0 начальных соединений и 5 максимум. Тот же результат. Отредактировал мой первоначальный вопрос. – rsilva4

0

A ответ на вопрос. Мы иногда находим, что нам нужно сбить сервер; удалите тестовые данные, данные и работу (также журнал, если вы не станете старыми), из вашего развертывания; и вернуть сервер обратно. Чаще всего это происходит, когда мы запускаем нестабильный код, который разбивается с частичными транзакциями и другими беспорядками. Эти папки будут восстановлены, когда JBoss снова запустится. См. this webpage для обзора того, что делают эти папки.

Смежные вопросы