2010-01-26 42 views
3

我正在開發一個應用程序,它使用七個數據源(ds)作爲MySql數據庫。在工作時我對結果非常滿意。不過,當我重新部署我的應用程序時,我遇到了與數據源相關的問題。重新部署後無效的Jboss數據源

下面是我在我的我的應用程序 - ds.xml中配置的七個DS之一:

<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警告[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

那麼讓我看看我是否正確地得到這個?在重新部署* -ds.xml文件並重新部署應用程序之前,您是NOK,而不是其他方式? – Adam 2010-02-06 05:33:03

回答

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 2010-01-27 15:27:45

0

一個答案。我們有時會發現我們需要關閉服務器;從你的部署中刪除測試,數據和工作(如果你不想老的話,也要記錄日誌);並將服務器備份。當我們運行不穩定的代碼時,通常會發生這種情況,這些代碼會導致部分事務完成和其他混亂。這些文件夾將在JBoss重新啓動時重新生成。請參閱this webpage以瞭解這些文件夾的功能。

相關問題