简体   繁体   English

重新部署后无效的Jboss数据源

[英]Invalid Jboss Datasources after redeploy

I'm developing an application tha uses seven datasources (ds) for MySql databases. 我正在开发一个应用程序,它为MySql数据库使用七个数据源(ds)。 I'm pretty satisfied with the result when it is working. 当它工作时,我对结果非常满意。 However i'm getting are datasource related problems when I redeploy my aplication. 但是当我重新部署我的应用程序时,我得到的是与数据源相关的问题。

Here is one of the seven ds I've configured in my my-application-ds.xml: 这是我在my-application-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>

I think I've configured properly according with all i've found on the web about this. 我想我已经根据我在网上发现的所有内容正确配置了这个。

1 . 1。 Deployed the application run a test OK 部署应用程序运行测试OK

2 . 2。 Redeployed the application, run a test NOK 重新部署应用程序,运行测试NOK

10:07:23,865 WARN [JBossManagedConnectionPool] Throwable while attempting to get a new connection: null 10:07:23,865 WARN [JBossManagedConnectionPool]尝试获取新连接时可抛出:null

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

After that hibernate complains about dialect... 之后,休眠抱怨方言......

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 . 3。 Redeploy the *-ds.xml file and run a test NOK, nothing happens... In my browser I receive a blank response. 重新部署* -ds.xml文件并运行测试NOK,没有任何反应...在我的浏览器中,我收到一个空白的响应。

4 . 4。 Redeploy the application, all works fine again. 重新部署应用程序,一切正常。 :S :S

MySql server have enough connections available. MySql服务器有足够的连接可用。

I have other project with data sources but with an oracle server and no problem there. 我有其他项目与数据源,但有一个oracle服务器,没有问题。 So it has something to do with MySql but I can't figure out what. 所以它与MySql有关,但我无法弄清楚是什么。

These problems look like MySql problems, so you should probably be checking the logs there. 这些问题看起来像MySql问题,所以你应该检查那里的日志。

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

indicates a failure deep in the connection with MySql. 表示与MySql连接的深层故障。 Given the amount of connections you have to the MySql instance. 给定您与MySql实例的连接数量。 It could be that the connection is invalid, but JBoss is trying to reuse it. 可能是连接无效,但JBoss正在尝试重用它。

Try changing your database connections to use: 尝试更改要使用的数据库连接:

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

Or even zero, to not just grab pool connections on startup. 甚至零,不仅仅是在启动时获取池连接。 Also see if you can configure MySql to allow more simultaneous connections. 另请参阅是否可以配置MySql以允许更多同时连接。 As it stands now just your JBoss deployment will take 35 connections on startup, and go to a maximum of 140. Do you really need so many connections and is the MySql instance configured to handle that many. 现在只是你的JBoss部署将在启动时占用35个连接,并且最多需要140个连接。你真的需要这么多的连接,并且MySql实例被配置为处理那么多。 If not, get these parameters more in line and your problems should get better. 如果没有,请更加符合这些参数,您的问题应该会变得更好。

A side answer. 一个答案。 We sometimes find we need to bring down the server; 我们有时会发现我们需要关闭服务器; delete the test, data, and work (log too if you don't wan't old ones clouding up) directories from your deployment; 从部署中删除测试,数据和工作(如果你不是旧的那些,那就是记录下来)。 and bring the server back up. 并重新启动服务器。 Most often this happens when we are running unstable code that crash with partial transactions completed and other messiness. 大多数情况下,当我们运行不稳定的代码时,就会发生这种情 These folders will be regenerated when JBoss starts up again. 当JBoss再次启动时,将重新生成这些文件夹。 See this webpage for an overview of what these folders do. 请参阅此网页 ,了解这些文件夹的功能。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM