Menu

Configure HA-JDBC to use/replace Tomcat 7.0.35 JDBC pooling

2013-02-10
2013-11-06
  • Howard Smith

    Howard Smith - 2013-02-10

    I currently have a web application in production, configured as follows:

    TomEE 1.5.2-SNAPSHOT (running on or bundled with Tomcat 7.0.35)
    Apache Derby 10.9.0
    EclipseLink 2.3.2

    tomee.xml

    <Resource id="jdbc/mcmsJta" type="javax.sql.DataSource">
      JdbcDriver org.apache.derby.jdbc.EmbeddedDriver
      JdbcUrl jdbc:derby:C:/javadb/databases/mcmsdev;create=true
      UserName mcms
      Password mcms
      JtaManaged true
      jmxEnabled true
      LogSql false
      InitialSize 10
      MaxActive 100
      MaxIdle 30
      MaxWait 10000
      minIdle 10
      suspectTimeout 60
      removeAbandoned true
      removeAbandonedTimeout 180
      timeBetweenEvictionRunsMillis 30000
      jdbcInterceptors=StatementCache(max=128)
    </Resource>
    
    <Resource id="jdbc/mcmsNonJta" type="javax.sql.DataSource">
      JdbcDriver org.apache.derby.jdbc.EmbeddedDriver
      JdbcUrl jdbc:derby:C:/javadb/databases/mcmsdev;create=true
      UserName mcms
      Password mcms
      JtaManaged false
      jmxEnabled false
      LogSql false
      InitialSize 10
      MaxActive 100
      MaxIdle 30
      MaxWait 10000
      removeAbandoned true
      removeAbandonedTimeout 18000
    </Resource>
    

    persistence.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.0"
                 xmlns="http://java.sun.com/xml/ns/persistence"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
        <persistence-unit name="mcmsPU" transaction-type="JTA">
            <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
            <jta-data-source>jdbc/mcmsJta</jta-data-source>
            <non-jta-data-source>jdbc/mcmsNonJta</non-jta-data-source>
            <exclude-unlisted-classes>false</exclude-unlisted-classes>
            <properties>
            <property name="eclipselink.target-database" 
                      value="org.eclipse.persistence.platform.database.DerbyPlatform"/>
            <property name="eclipselink.jdbc.cache-statements" value="true" />
            <property name="eclipselink.jdbc.cache-statements.size" value="100" />
            <property name="eclipselink.logging.parameters" value="false" />
            </properties>
        </persistence-unit>
    </persistence>
    

    I downloaded and attempting to use ha-jdbc-2.1.0-beta-3.jar.

    Last night, I spent many hours reading topics in this forum and trying to configure HA-JDBC, which resulted in many different errors before having success starting the cluster. Also, I had difficulty getting Embeddy Derby JAR to load. Below is the configuration I currently have to get the cluster started.

    tomee.xml (the non-jta jdbc config 'must be' first to load embedded derby)

    <Resource id="jdbc/mcmsNonJta" type="javax.sql.DataSource">
      JdbcDriver org.apache.derby.jdbc.EmbeddedDriver
      JdbcUrl jdbc:derby:C:/javadb/databases/mcmsdev;create=true
      UserName mcms
      Password mcms
      JtaManaged false
      jmxEnabled false
      LogSql false
      InitialSize 10
      MaxActive 100
      MaxIdle 30
      MaxWait 10000
      removeAbandoned true
      removeAbandonedTimeout 18000
    </Resource>
    
    <Resource id="jdbc/mcmsJta" type="javax.sql.DataSource">
      factory="net.sf.hajdbc.sql.DataSourceFactory"
      cluster="cluster"
      UserName mcms
      Password mcms
      JtaManaged true
      jmxEnabled true
      LogSql false
      InitialSize 10
      MaxActive 100
      MaxIdle 30
      MaxWait 10000
      minIdle 10
      suspectTimeout 60
      removeAbandoned true
      removeAbandonedTimeout 180
      timeBetweenEvictionRunsMillis 30000
    </Resource>
    

    ha-jdbc-cluster.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <ha-jdbc xmlns="urn:ha-jdbc:cluster:2.1">
        <sync id="full">
           <property name="fetchSize">1000</property>
        </sync>
        <sync id="diff">
           <property name="fetchSize">1000</property>
           <property name="versionPattern">version</property>
        </sync>
        <state id="simple"/>
        <cluster dialect="derby" balancer="simple" default-sync="full" meta-data-cache="lazy" transaction-mode="parallel">
            <database id="db1" weight="1" location="javax.sql.DataSource">
                <user>mcms</user>
                <password>mcms</password>
                <property name="serverName">mcms</property>
                <property name="databaseName">mcms</property>
                <property name="driver">org.apache.derby.jdbc.EmbeddedDriver</property>
                <property name="url">jdbc:derby:c:/javadb/databases/mcms;create=true</property>
            </database>
            <database id="db2" weight="2" location="javax.sql.DataSource">
                <user>mcms</user>
                <password>mcms</password>
                <property name="serverName">mcms</property>
                <property name="databaseName">mcms</property>
                <property name="driver">org.apache.derby.jdbc.EmbeddedDriver</property>
                <property name="url">jdbc:derby:c:/javadb/databases/mcmsdev;create=true</property>
            </database>
        </cluster>
    </ha-jdbc>
    

    The ha-jdbc configuration above, finally, allowed TomEE to start with no exceptions related to ha-jdbc.

    I really would like to configure ha-jdbc to replace the JDBC configuration that I currently have in production, so I can have a cluster of at least 2 databases, and make use of Tomcat's JDBC pooling, or if better, ha-jdbc's pooling capabilities.

    FYI, currently, in production, tomee/derby/eclipselink is performing very very well without ha-jdbc. Please advise and let me know how I should configure ha-jdbc for the highest availability and to perform better than my current single-database configuration.

    In my next post, I will send you the exceptions that I am experiencing when testing my web app with ha-jdbc configured (as mentioned above).

     
    • Howard Smith

      Howard Smith - 2013-02-10

      Immediately after starting TomEE (with ha-jdbc configured), I logged into the web application, successfully, but there were exceptions (only in catalina log), and then I logged out of the web application, successfully (with exceptions in catalina log).

      Below is the stacktrace and catalina log from the point I logged in, until the point that I logged out of the web application.

      Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
      Error Code: -5501
      Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
      bind => [3 parameters bound]
      Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
      Feb 10, 2013 12:12:08 AM jsf.users.pf_UsersController log
      INFO: pf_UsersController.updateAfterLogin(): Error updating USER(administrator) last login date/time: Sun Feb 10 00:12:08 EST 2013
      javax.ejb.EJBException: The bean encountered a non-application exception; nested exception is:
      javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
      Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
      Error Code: -5501
      Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
      bind => [3 parameters bound]
      Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
      at org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:363)
      at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:283)
      at jpa.session.UsersFacade$LocalBeanProxy.edit(jpa/session/UsersFacade.java)
      at jsf.users.pf_UsersController.updateAfterLogin(pf_UsersController.java:998)
      at jsf.users.pf_UsersController.loginUser(pf_UsersController.java:578)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.apache.webbeans.intercept.InterceptorHandler.invoke(InterceptorHandler.java:322)
      at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:117)
      at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:108)
      at jsf.users.pf_UsersController_$$javassist_3.loginUser(pf_UsersController$$_javassist_3.java)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at javax.el.BeanELResolver.invoke(BeanELResolver.java:450)
      at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:225)
      at de.odysseus.el.tree.impl.ast.AstMethod.eval(AstMethod.java:91)
      at de.odysseus.el.tree.impl.ast.AstMethod.invoke(AstMethod.java:104)
      at de.odysseus.el.tree.impl.ast.AstEval.invoke(AstEval.java:71)
      at de.odysseus.el.TreeMethodExpression.invoke(TreeMethodExpression.java:132)
      at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96)
      at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:68)
      at javax.faces.component.UICommand.broadcast(UICommand.java:120)
      at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1028)
      at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:286)
      at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1375)
      at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
      at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:38)
      at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
      at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:148)
      at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:75)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at pf.LoginFilter.doFilter(LoginFilter.java:209)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
      at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
      at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
      at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1680)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      at java.lang.Thread.run(Thread.java:722)
      Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
      Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
      Error Code: -5501
      Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
      bind => [3 parameters bound]
      Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
      at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:786)
      at org.apache.openejb.persistence.JtaEntityManager.flush(JtaEntityManager.java:184)
      at jpa.session.AbstractFacade.edit(AbstractFacade.java:37)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:181)
      at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:163)
      at org.apache.openejb.cdi.CdiInterceptor.invoke(CdiInterceptor.java:130)
      at org.apache.openejb.cdi.CdiInterceptor.access$000(CdiInterceptor.java:43)
      at org.apache.openejb.cdi.CdiInterceptor$1.call(CdiInterceptor.java:67)
      at org.apache.openejb.cdi.CdiInterceptor.aroundInvoke(CdiInterceptor.java:73)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:181)
      at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:163)
      at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:180)
      at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:99)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:181)
      at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:163)
      at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:138)
      at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:239)
      at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:191)
      at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:256)
      at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:251)
      at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:85)
      at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:279)
      ... 59 more
      Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
      Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
      Error Code: -5501
      Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
      bind => [3 parameters bound]
      Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
      at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:333)
      at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:644)
      at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:535)
      at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:1717)
      at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:253)
      at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:207)
      at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:193)
      at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.updateObject(DatasourceCallQueryMechanism.java:749)
      at org.eclipse.persistence.internal.queries.StatementQueryMechanism.updateObject(StatementQueryMechanism.java:432)
      at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.updateObjectForWriteWithChangeSet(DatabaseQueryMechanism.java:1042)
      at org.eclipse.persistence.queries.UpdateObjectQuery.executeCommitWithChangeSet(UpdateObjectQuery.java:84)
      at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:287)
      at org.eclipse.persistence.queries.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:58)
      at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:844)
      at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:743)
      at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:108)
      at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:85)
      at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2871)
      at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1516)
      at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1498)
      at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1449)
      at org.eclipse.persistence.internal.sessions.CommitManager.commitChangedObjectsForClassWithChangeSet(CommitManager.java:265)
      at org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:128)
      at org.eclipse.persistence.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:3799)
      at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1415)
      at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitToDatabase(RepeatableWriteUnitOfWork.java:636)
      at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithPreBuiltChangeSet(UnitOfWorkImpl.java:1561)
      at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.writeChanges(RepeatableWriteUnitOfWork.java:447)
      at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:780)
      ... 92 more
      Caused by: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
      at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
      at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
      at org.hsqldb.jdbc.JDBCPreparedStatement.<init>(Unknown Source)
      at org.hsqldb.jdbc.JDBCConnection.prepareStatement(Unknown Source)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:126)
      at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:109)
      at org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:80)
      at sun.proxy.$Proxy124.prepareStatement(Unknown Source)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.apache.tomee.jdbc.TomEEDataSourceCreator$ContantHashCodeHandler.invoke(TomEEDataSourceCreator.java:332)
      at sun.proxy.$Proxy125.prepareStatement(Unknown Source)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.apache.openejb.resource.jdbc.managed.local.ManagedConnection.invokeUnderTransaction(ManagedConnection.java:152)
      at org.apache.openejb.resource.jdbc.managed.local.ManagedConnection.invoke(ManagedConnection.java:120)
      at sun.proxy.$Proxy125.prepareStatement(Unknown Source)
      at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1474)
      at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1423)
      at org.eclipse.persistence.internal.databaseaccess.DatabaseCall.prepareStatement(DatabaseCall.java:697)
      at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:585)
      ... 119 more
      Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: USERS
      at org.hsqldb.error.Error.error(Unknown Source)
      at org.hsqldb.error.Error.error(Unknown Source)
      at org.hsqldb.SchemaManager.getTable(Unknown Source)
      at org.hsqldb.ParserDQL.readTableName(Unknown Source)
      at org.hsqldb.ParserDQL.readSimpleRangeVariable(Unknown Source)
      at org.hsqldb.ParserDML.compileUpdateStatement(Unknown Source)
      at org.hsqldb.ParserCommand.compilePart(Unknown Source)
      at org.hsqldb.ParserCommand.compileStatement(Unknown Source)
      at org.hsqldb.Session.compileStatement(Unknown Source)
      at org.hsqldb.StatementManager.compile(Unknown Source)
      at org.hsqldb.Session.execute(Unknown Source)
      ... 146 more
      Feb 10, 2013 12:12:09 AM jsf.users.pf_UsersController log
      INFO: pf_UsersController.loginUser(): administrator logged in at Sun Feb 10 00:12:08 EST 2013
      Feb 10, 2013 12:12:09 AM jsf.users.pf_UsersController log
      INFO: pf_UsersController.updateLastLogoutDt(): javax.ejb.EJBException: Attempt to invoke when container is in STOPPED
      [EL Warning]: 2013-02-10 00:12:09.05--UnitOfWork(964129786)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
      Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
      Error Code: -5501
      Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
      bind => [3 parameters bound]
      Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
      Feb 10, 2013 12:16:34 AM jsf.users.pf_UsersController log
      INFO: pf_UsersController.updateLastLogoutDt(): javax.ejb.EJBException: Attempt to invoke when container is in STOPPED
      Feb 10, 2013 12:16:34 AM jsf.users.pf_UsersController log
      INFO: pf_UsersController.updateLastLogoutDt(): javax.ejb.EJBException: Attempt to invoke when container is in STOPPED
      Feb 10, 2013 12:16:34 AM jsf.users.pf_UsersController log
      INFO: pf_UsersController.logout(): administrator logged out at Sun Feb 10 00:16:34 EST 2013
      [EL Warning]: 2013-02-10 00:16:34.527--UnitOfWork(1080376028)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
      Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
      Error Code: -5501
      Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
      bind => [3 parameters bound]
      Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
      [EL Warning]: 2013-02-10 00:16:34.578--UnitOfWork(1829704959)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
      Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
      Error Code: -5501
      Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
      bind => [3 parameters bound]
      Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])

       
  • Howard Smith

    Howard Smith - 2013-02-10

    Also, I will attach the catalina log file(s), so you can see all that I experienced from beginning to end. :)

    Attached to this response, is the first catalina log.

     
  • Howard Smith

    Howard Smith - 2013-02-10

    Attached to this response, is the 2nd catalina log, where you should see the stacktrace that I shared in my 2nd response above.

     
  • Howard Smith

    Howard Smith - 2013-02-10

    I just finished testing the web application (with ha-jdbc configured), and while accessing different xhtml pages in the web application, I am successfully SELECTing data with no errors reported to the enduser (myself) on the pages, but the catalina log is filling up with the following:

    Error Code: -5501
    Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
    bind => [3 parameters bound]
    Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
    [EL Warning]: 2013-02-10 06:47:36.768--UnitOfWork(523557107)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
    Error Code: -5501
    Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
    bind => [3 parameters bound]
    Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
    Feb 10, 2013 6:47:36 AM jsf.users.pf_UsersController log
    INFO: pf_UsersController.updateLastLogoutDt(): javax.ejb.EJBException: Attempt to invoke when container is in STOPPED
    [EL Warning]: 2013-02-10 06:47:44.114--UnitOfWork(1744757324)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
    Error Code: -5501
    Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
    bind => [3 parameters bound]
    Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
    Feb 10, 2013 6:47:44 AM jsf.users.pf_UsersController log
    INFO: pf_UsersController.updateLastLogoutDt(): javax.ejb.EJBException: Attempt to invoke when container is in STOPPED
    [EL Warning]: 2013-02-10 06:47:46.549--UnitOfWork(487056337)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
    Error Code: -5501
    Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
    bind => [3 parameters bound]
    Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
    Feb 10, 2013 6:47:46 AM jsf.users.pf_UsersController log
    INFO: pf_UsersController.updateLastLogoutDt(): javax.ejb.EJBException: Attempt to invoke when container is in STOPPED
    [EL Warning]: 2013-02-10 06:47:48.717--UnitOfWork(2116596080)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
    Error Code: -5501
    Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
    bind => [3 parameters bound]
    Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
    Feb 10, 2013 6:47:48 AM jsf.users.pf_UsersController log
    INFO: pf_UsersController.updateLastLogoutDt(): javax.ejb.EJBException: Attempt to invoke when container is in STOPPED
    [EL Warning]: 2013-02-10 06:47:51.817--UnitOfWork(759855060)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
    Error Code: -5501
    Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
    bind => [3 parameters bound]
    Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
    Feb 10, 2013 6:47:51 AM jsf.users.pf_UsersController log
    INFO: pf_UsersController.updateLastLogoutDt(): javax.ejb.EJBException: Attempt to invoke when container is in STOPPED
    [EL Warning]: 2013-02-10 06:48:56.381--UnitOfWork(940047674)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
    Error Code: -5501
    Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
    bind => [3 parameters bound]
    Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
    Feb 10, 2013 6:48:56 AM jsf.users.pf_UsersController log
    INFO: pf_UsersController.updateLastLogoutDt(): javax.ejb.EJBException: Attempt to invoke when container is in STOPPED
    [EL Warning]: 2013-02-10 06:49:02.606--UnitOfWork(723873147)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
    Error Code: -5501
    Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
    bind => [3 parameters bound]
    Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
    Feb 10, 2013 6:49:02 AM jsf.users.pf_UsersController log
    INFO: pf_UsersController.updateLastLogoutDt(): javax.ejb.EJBException: Attempt to invoke when container is in STOPPED
    Feb 10, 2013 6:49:50 AM jsf.users.pf_UsersController log
    INFO: pf_UsersController.updateLastLogoutDt(): javax.ejb.EJBException: Attempt to invoke when container is in STOPPED
    [EL Warning]: 2013-02-10 06:49:50.237--UnitOfWork(1202459563)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
    Error Code: -5501
    Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
    bind => [3 parameters bound]
    Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
    [EL Warning]: 2013-02-10 06:50:06.67--UnitOfWork(339146480)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
    Error Code: -5501
    Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
    bind => [3 parameters bound]
    Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
    Feb 10, 2013 6:50:06 AM jsf.users.pf_UsersController log
    INFO: pf_UsersController.updateLastLogoutDt(): javax.ejb.EJBException: Attempt to invoke when container is in STOPPED
    [EL Warning]: 2013-02-10 06:50:08.962--UnitOfWork(375239606)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
    Error Code: -5501
    Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
    bind => [3 parameters bound]
    Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
    [EL Warning]: 2013-02-10 06:50:08.985--UnitOfWork(877889793)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USERS
    Error Code: -5501
    Call: UPDATE USERS SET LAST_LOGIN_DT = ?, LAST_LOGOUT_DT = ? WHERE (USER_NAME = ?)
    bind => [3 parameters bound]
    Query: UpdateObjectQuery(jpa.entities.Users[ userName=administrator ])
    Feb 10, 2013 6:50:08 AM jsf.users.pf_UsersController log
    INFO: pf_UsersController.updateLastLogoutDt(): javax.ejb.EJBException: Attempt to invoke when container is in STOPPED
    Feb 10, 2013 6:50:08 AM jsf.users.pf_UsersController log
    INFO: pf_UsersController.updateLastLogoutDt(): javax.ejb.EJBException: Attempt to invoke when container is in STOPPED
    Feb 10, 2013 6:50:08 AM jsf.users.pf_UsersController log
    INFO: pf_UsersController.logout(): administrator logged out at Sun Feb 10 06:50:08 EST 2013

     
  • Paul Ferraro

    Paul Ferraro - 2013-02-11

    I see that you only have HA-JDBC configured as your JTA datasource, but not your non-JTA datasource. Is that intentional? I ask because I don't see HA-JDBC getting invoked at in your logs.

    Also, your HA-JDBC config is not quite right. When configuring HA-JDBC to proxy a DataSource, the location attribute is interpreted as either a jndi name (of a DataSource) or as a DataSource implementation class.

    Your HA-JDBC config should look more like this:

    <database id="db1" location="org.apache.tomcat.jdbc.pool.DataSource">
        <property name="url">jdbc:derby:C:/javadb/databases/mcmsdev;create=true</property>
        <property name="username">...</property>
        <property name="password">...</property>
        <!-- connection pooling properties -->
    </database>
    

    For details, see:
    http://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/tomcat/jdbc/pool/DataSource.html

    Also, your JPA configuration (persistence.xml) needs to define a username/password for use by your application. The credentials defined in HA-JDBC are not used by connections obtained via JPA, but only for connections made by HA-JDBC for its own purposes (e.g. synchronization, failure detection, etc).

     
  • Howard Smith

    Howard Smith - 2013-11-02

    Thank you for the response and my apologies for the delayed/late response; I finally had some bandwidth to revisit this.

    Just to update details about my environment, I am using the following:

    TomEE 1.6.0-SNAPSHOT (running on or bundled with Tomcat 7.0.47)
    Apache Derby 10.9.0
    EclipseLink 2.3.2

    For TomEE, it is recommended to specify database resource in tomee.xml, so I have the following:

    tomee.xml

    <Resource id="jdbc/mcmsJta" type="javax.sql.DataSource">
      factory="net.sf.hajdbc.sql.DataSourceFactory"
      cluster="cluster"
      UserName mcms
      Password mcms
      JtaManaged true
      jmxEnabled true
      LogSql false
    </Resource>
    

    NOTE: http://tomee.apache.org/datasource-config.html lists 'supported' properties

    and per your response, I now have the following:

    ha-jdbc-cluster.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <ha-jdbc xmlns="urn:ha-jdbc:cluster:2.1">
        <sync id="full">
           <property name="fetchSize">1000</property>
        </sync>
        <sync id="diff">
           <property name="fetchSize">1000</property>
           <property name="versionPattern">version</property>
        </sync>
        <state id="simple"/>
        <cluster dialect="derby" balancer="simple" default-sync="full" meta-data-cache="lazy" transaction-mode="parallel">
            <database id="db1" weight="1" location="org.apache.tomcat.jdbc.pool.DataSource">
                <user>mcms</user>
                <password>mcms</password>
                <property name="serverName">mcms</property>
                <property name="databaseName">mcms</property>
                <property name="driver">org.apache.derby.jdbc.EmbeddedDriver</property>
                <property name="url">jdbc:derby:c:/javadb/databases/mcms;create=true</property>
                <property name="InitialSize">10</property>
                <property name="MaxActive">100</property>
                <property name="MaxIdle">30</property>
                <property name="MaxWait">10000</property>
                <property name="minIdle">10</property>
                <property name="suspectTimeout">60</property>
                <property name="removeAbandoned">true</property>
                <property name="removeAbandonedTimeout">180</property>
                <property name="timeBetweenEvictionRunsMillis">30000</property>
                <property name="jdbcInterceptors">StatementCache(max=128)</property>
            </database>
            <database id="db2" weight="2" location="org.apache.tomcat.jdbc.pool.DataSource">
                <user>mcms</user>
                <password>mcms</password>
                <property name="serverName">mcms</property>
                <property name="databaseName">mcms</property>
                <property name="driver">org.apache.derby.jdbc.EmbeddedDriver</property>
                <property name="url">jdbc:derby:c:/javadb/databases/mcmsdev;create=true</property>
                <property name="InitialSize">10</property>
                <property name="MaxActive">100</property>
                <property name="MaxIdle">30</property>
                <property name="MaxWait">10000</property>
                <property name="minIdle">10</property>
                <property name="suspectTimeout">60</property>
                <property name="removeAbandoned">true</property>
                <property name="removeAbandonedTimeout">180</property>
                <property name="timeBetweenEvictionRunsMillis">30000</property>
                <property name="jdbcInterceptors">StatementCache(max=128)</property>
            </database>
        </cluster>
    </ha-jdbc>
    

    Per the (out-dated) JTA example at this URL, http://wiki.eclipse.org/EclipseLink/Examples/JPA/Tomcat_Web_Tutorial, it says that username and password is not specified (or need to be specified), so I have not modified the persistence.xml for JPA/JTA yet.

    I tested everything above, and I wanted to share the errors/warnings that I am getting in the server log after starting TomEE and after accessing web app via browser.

    when TomEE started, I noticed the following in the server log:

    INFO: Creating Resource(id=jdbc/mcmsJta)
    Nov 02, 2013 9:15:03 AM org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource readOnly
    INFO: Disabling testOnBorrow since no validation query is provided
    Nov 02, 2013 9:15:03 AM org.apache.openejb.assembler.classic.Assembler logUnusedProperties
    WARNING: Property "factory" not supported by "jdbc/mcmsJta"
    Nov 02, 2013 9:15:03 AM org.apache.openejb.assembler.classic.Assembler logUnusedProperties
    WARNING: Property "cluster" not supported by "jdbc/mcmsJta"
    Nov 02, 2013 9:15:03 AM org.apache.openejb.assembler.classic.Assembler createRecipe
    
    Nov 02, 2013 9:19:04 AM org.hsqldb.persist.Logger logInfoEvent
    INFO: Checkpoint start
    Nov 02, 2013 9:19:04 AM org.hsqldb.persist.Logger logInfoEvent
    INFO: checkpointClose start
    Nov 02, 2013 9:19:04 AM org.hsqldb.persist.Logger logInfoEvent
    INFO: checkpointClose end
    Nov 02, 2013 9:19:04 AM org.hsqldb.persist.Logger logInfoEvent
    INFO: Checkpoint end - txts: 1
    [EL Severe]: 2013-11-02 09:19:04.435--ServerSession(1052490787)--Local Exception Stack: 
    Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLInvalidAuthorizationSpecException: invalid authorization specification - not found: mcms
    Error Code: -4001
        at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:309)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:135)
        at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:330)
        at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:293)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java:418)
        at org.eclipse.persistence.sessions.server.ConnectionPool.buildConnection(ConnectionPool.java:216)
        at org.eclipse.persistence.sessions.server.ExternalConnectionPool.startUp(ExternalConnectionPool.java:146)
        at org.eclipse.persistence.sessions.server.ServerSession.connect(ServerSession.java:489)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:633)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:208)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:488)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:294)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:279)
        at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createEntityManager(ReloadableEntityManagerFactory.java:159)
        at org.apache.openejb.persistence.JtaEntityManagerRegistry.getEntityManager(JtaEntityManagerRegistry.java:115)
        at org.apache.openejb.persistence.JtaEntityManager.getEntityManager(JtaEntityManager.java:91)
        at org.apache.openejb.persistence.JtaEntityManager.proxyIfNoTx(JtaEntityManager.java:319)
        at org.apache.openejb.persistence.JtaEntityManager.createQuery(JtaEntityManager.java:273)
        at jpa.session.UsersFacade.getUser(UsersFacade.java:89)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
        at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:180)
        at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:99)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
        at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:80)
        at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:212)
        at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:181)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:268)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:263)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:86)
        at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:303)
        at jpa.session.UsersFacade$$LocalBeanProxy.getUser(jpa/session/UsersFacade.java)
        at jsf.users.pf_UsersController.getUser(pf_UsersController.java:1453)
        at jsf.users.pf_UsersController.loginUser(pf_UsersController.java:616)
        at jsf.users.pf_UsersController$$OwbNormalScopeProxy0.loginUser(jsf/users/pf_UsersController.java)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at javax.el.BeanELResolver.invoke(BeanELResolver.java:450)
        at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:225)
        at de.odysseus.el.tree.impl.ast.AstMethod.eval(AstMethod.java:91)
        at de.odysseus.el.tree.impl.ast.AstMethod.invoke(AstMethod.java:104)
        at de.odysseus.el.tree.impl.ast.AstEval.invoke(AstEval.java:71)
        at de.odysseus.el.TreeMethodExpression.invoke(TreeMethodExpression.java:132)
        at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96)
        at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:68)
        at javax.faces.component.UICommand.broadcast(UICommand.java:120)
        at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1041)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:289)
        at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1415)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:765)
        at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:38)
        at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
        at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:149)
        at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:75)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at pf.LoginFilter.doFilter(LoginFilter.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1721)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1679)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
    Caused by: java.sql.SQLInvalidAuthorizationSpecException: invalid authorization specification - not found: mcms
        at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
        at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
        at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source)
        at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
        at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:278)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:188)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
        at org.apache.openejb.resource.jdbc.managed.local.ManagedDataSource.getConnection(ManagedDataSource.java:51)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:123)
        ... 97 more
    Caused by: org.hsqldb.HsqlException: invalid authorization specification - not found: mcms
        at org.hsqldb.error.Error.error(Unknown Source)
        at org.hsqldb.error.Error.error(Unknown Source)
        at org.hsqldb.rights.UserManager.get(Unknown Source)
        at org.hsqldb.rights.UserManager.getUser(Unknown Source)
        at org.hsqldb.Database.connect(Unknown Source)
        at org.hsqldb.DatabaseManager.newSession(Unknown Source)
        ... 108 more
    
    [EL Severe]: 2013-11-02 09:19:04.456--ServerSession(1052490787)--Local Exception Stack: 
    Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLInvalidAuthorizationSpecException: invalid authorization specification - not found: mcms
    Error Code: -4001
        at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:309)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:135)
        at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:330)
        at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:293)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java:418)
        at org.eclipse.persistence.sessions.server.ConnectionPool.buildConnection(ConnectionPool.java:216)
        at org.eclipse.persistence.sessions.server.ExternalConnectionPool.startUp(ExternalConnectionPool.java:146)
        at org.eclipse.persistence.sessions.server.ServerSession.connect(ServerSession.java:489)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:633)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:208)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:488)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:294)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:279)
        at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createEntityManager(ReloadableEntityManagerFactory.java:159)
        at org.apache.openejb.persistence.JtaEntityManagerRegistry.getEntityManager(JtaEntityManagerRegistry.java:115)
        at org.apache.openejb.persistence.JtaEntityManager.getEntityManager(JtaEntityManager.java:91)
        at org.apache.openejb.persistence.JtaEntityManager.proxyIfNoTx(JtaEntityManager.java:319)
        at org.apache.openejb.persistence.JtaEntityManager.createQuery(JtaEntityManager.java:273)
        at jpa.session.UsersFacade.getUser(UsersFacade.java:89)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
        at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:180)
        at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:99)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
        at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:80)
        at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:212)
        at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:181)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:268)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:263)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:86)
        at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:303)
        at jpa.session.UsersFacade$$LocalBeanProxy.getUser(jpa/session/UsersFacade.java)
        at jsf.users.pf_UsersController.getUser(pf_UsersController.java:1453)
        at jsf.users.pf_UsersController.loginUser(pf_UsersController.java:616)
        at jsf.users.pf_UsersController$$OwbNormalScopeProxy0.loginUser(jsf/users/pf_UsersController.java)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at javax.el.BeanELResolver.invoke(BeanELResolver.java:450)
        at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:225)
        at de.odysseus.el.tree.impl.ast.AstMethod.eval(AstMethod.java:91)
        at de.odysseus.el.tree.impl.ast.AstMethod.invoke(AstMethod.java:104)
        at de.odysseus.el.tree.impl.ast.AstEval.invoke(AstEval.java:71)
        at de.odysseus.el.TreeMethodExpression.invoke(TreeMethodExpression.java:132)
        at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96)
        at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:68)
        at javax.faces.component.UICommand.broadcast(UICommand.java:120)
        at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1041)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:289)
        at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1415)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:765)
        at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:38)
        at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
        at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:149)
        at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:75)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at pf.LoginFilter.doFilter(LoginFilter.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
    Nov 02, 2013 9:19:05 AM org.apache.openejb.core.transaction.EjbTransactionUtil handleSystemException
    SEVERE: EjbTransactionUtil.handleSystemException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLInvalidAuthorizationSpecException: invalid authorization specification - not found: mcms
    Error Code: -4001
    javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLInvalidAuthorizationSpecException: invalid authorization specification - not found: mcms
    Error Code: -4001
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:517)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:294)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:279)
        at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createEntityManager(ReloadableEntityManagerFactory.java:159)
        at org.apache.openejb.persistence.JtaEntityManagerRegistry.getEntityManager(JtaEntityManagerRegistry.java:115)
        at org.apache.openejb.persistence.JtaEntityManager.getEntityManager(JtaEntityManager.java:91)
        at org.apache.openejb.persistence.JtaEntityManager.proxyIfNoTx(JtaEntityManager.java:319)
        at org.apache.openejb.persistence.JtaEntityManager.createQuery(JtaEntityManager.java:273)
        at jpa.session.UsersFacade.getUser(UsersFacade.java:89)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
        at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:180)
        at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:99)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
        at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:80)
        at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:212)
        at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:181)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:268)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:263)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:86)
        at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:303)
        at jpa.session.UsersFacade$$LocalBeanProxy.getUser(jpa/session/UsersFacade.java)
        at jsf.users.pf_UsersController.getUser(pf_UsersController.java:1453)
        at jsf.users.pf_UsersController.loginUser(pf_UsersController.java:616)
        at jsf.users.pf_UsersController$$OwbNormalScopeProxy0.loginUser(jsf/users/pf_UsersController.java)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at javax.el.BeanELResolver.invoke(BeanELResolver.java:450)
        at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:225)
        at de.odysseus.el.tree.impl.ast.AstMethod.eval(AstMethod.java:91)
        at de.odysseus.el.tree.impl.ast.AstMethod.invoke(AstMethod.java:104)
        at de.odysseus.el.tree.impl.ast.AstEval.invoke(AstEval.java:71)
        at de.odysseus.el.TreeMethodExpression.invoke(TreeMethodExpression.java:132)
        at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96)
        at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:68)
        at javax.faces.component.UICommand.broadcast(UICommand.java:120)
        at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1041)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:289)
        at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1415)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:765)
        at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:38)
        at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
        at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:149)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:75)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1721)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1679)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at pf.LoginFilter.doFilter(LoginFilter.java:241)
        at java.lang.Thread.run(Thread.java:744)
    Caused by: java.sql.SQLInvalidAuthorizationSpecException: invalid authorization specification - not found: mcms
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source)
        at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
        at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
        at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:278)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:188)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
        at org.apache.openejb.resource.jdbc.managed.local.ManagedDataSource.getConnection(ManagedDataSource.java:51)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:123)
        ... 97 more
    Caused by: org.hsqldb.HsqlException: invalid authorization specification - not found: mcms
        at org.hsqldb.error.Error.error(Unknown Source)
        at org.hsqldb.error.Error.error(Unknown Source)
        at org.hsqldb.rights.UserManager.get(Unknown Source)
        at org.hsqldb.rights.UserManager.getUser(Unknown Source)
        at org.hsqldb.Database.connect(Unknown Source)
        at org.hsqldb.DatabaseManager.newSession(Unknown Source)
        ... 108 more
    
    UsersFacade.getUser() throwing Exception
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1721)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1679)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
    Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLInvalidAuthorizationSpecException: invalid authorization specification - not found: mcms
    Error Code: -4001
        at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:309)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:135)
        at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:330)
        at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:293)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java:418)
        at org.eclipse.persistence.sessions.server.ConnectionPool.buildConnection(ConnectionPool.java:216)
        at org.eclipse.persistence.sessions.server.ExternalConnectionPool.startUp(ExternalConnectionPool.java:146)
        at org.eclipse.persistence.sessions.server.ServerSession.connect(ServerSession.java:489)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:633)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:208)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:488)
        ... 87 more
    Caused by: java.sql.SQLInvalidAuthorizationSpecException: invalid authorization specification - not found: mcms
        at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
        at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
        at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source)
        at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
        at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:278)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:188)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
        at org.apache.openejb.resource.jdbc.managed.local.ManagedDataSource.getConnection(ManagedDataSource.java:51)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:123)
        ... 97 more
    Caused by: org.hsqldb.HsqlException: invalid authorization specification - not found: mcms
        at org.hsqldb.error.Error.error(Unknown Source)
        at org.hsqldb.error.Error.error(Unknown Source)
        at org.hsqldb.rights.UserManager.get(Unknown Source)
        at org.hsqldb.rights.UserManager.getUser(Unknown Source)
        at org.hsqldb.Database.connect(Unknown Source)
        at org.hsqldb.DatabaseManager.newSession(Unknown Source)
        ... 108 more
    
    Nov 02, 2013 9:19:05 AM jsf.users.pf_UsersController getUser
    INFO: throwing EJBException.getCausedByException()
    

    Since, http://tomee.apache.org/datasource-config.html lists supported properties of <Resource ...=""/>, which does not include 'factory' and 'cluster' as supported properties, can/should I specify hajdbc driver instead of using factory="..." and cluster="..."?

    Please advise.

     

    Last edit: Howard Smith 2013-11-02
  • Howard Smith

    Howard Smith - 2013-11-02

    Okay, I am getting somewhere, I think. I modified tomee.xml as follows:

    <Resource id="jdbc/mcmsJta" type="javax.sql.DataSource">
      JdbcDriver net.sf.hajdbc.sql.DataSource
      UserName mcms
      Password mcms
      JtaManaged true
      jmxEnabled true
      LogSql false
    </Resource>
    

    and now, I am seeing ha-jdbc being triggered in the log with the following errors:

    Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: Failed to locate database cluster configuration file: ha-jdbc-null.xml
    Error Code: 0
        at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:309)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:135)
        at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:330)
        at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:293)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java:418)
        at org.eclipse.persistence.sessions.server.ConnectionPool.buildConnection(ConnectionPool.java:216)
        at org.eclipse.persistence.sessions.server.ExternalConnectionPool.startUp(ExternalConnectionPool.java:146)
        at org.eclipse.persistence.sessions.server.ServerSession.connect(ServerSession.java:484)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:633)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:208)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:488)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:294)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:279)
        at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createEntityManager(ReloadableEntityManagerFactory.java:159)
        at org.apache.openejb.persistence.JtaEntityManagerRegistry.getEntityManager(JtaEntityManagerRegistry.java:115)
        at org.apache.openejb.persistence.JtaEntityManager.getEntityManager(JtaEntityManager.java:91)
        at org.apache.openejb.persistence.JtaEntityManager.proxyIfNoTx(JtaEntityManager.java:319)
        at org.apache.openejb.persistence.JtaEntityManager.createQuery(JtaEntityManager.java:273)
        at jpa.session.UsersFacade.getUser(UsersFacade.java:89)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
        at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:180)
        at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:99)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
        at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:80)
        at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:212)
        at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:181)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:268)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:263)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:86)
        at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:303)
        at jpa.session.UsersFacade$$LocalBeanProxy.getUser(jpa/session/UsersFacade.java)
        at jsf.users.pf_UsersController.getUser(pf_UsersController.java:1453)
        at jsf.users.pf_UsersController.loginUser(pf_UsersController.java:616)
        at jsf.users.pf_UsersController$$OwbNormalScopeProxy0.loginUser(jsf/users/pf_UsersController.java)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at javax.el.BeanELResolver.invoke(BeanELResolver.java:450)
        at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:225)
        at de.odysseus.el.tree.impl.ast.AstMethod.eval(AstMethod.java:91)
        at de.odysseus.el.tree.impl.ast.AstMethod.invoke(AstMethod.java:104)
        at de.odysseus.el.tree.impl.ast.AstEval.invoke(AstEval.java:71)
        at de.odysseus.el.TreeMethodExpression.invoke(TreeMethodExpression.java:132)
        at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96)
        at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:68)
        at javax.faces.component.UICommand.broadcast(UICommand.java:120)
        at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1041)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:289)
        at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1415)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:765)
        at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:38)
        at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
        at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:149)
        at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:75)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at pf.LoginFilter.doFilter(LoginFilter.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1721)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1679)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
    Caused by: java.sql.SQLException: Failed to locate database cluster configuration file: ha-jdbc-null.xml
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:724)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:188)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:123)
        ... 97 more
    Caused by: java.lang.IllegalArgumentException: Failed to locate database cluster configuration file: ha-jdbc-null.xml
        at net.sf.hajdbc.xml.XMLDatabaseClusterConfigurationFactory.findResource(XMLDatabaseClusterConfigurationFactory.java:105)
        at net.sf.hajdbc.xml.XMLDatabaseClusterConfigurationFactory.findResource(XMLDatabaseClusterConfigurationFactory.java:88)
        at net.sf.hajdbc.xml.XMLDatabaseClusterConfigurationFactory.<init>(XMLDatabaseClusterConfigurationFactory.java:115)
        at net.sf.hajdbc.xml.XMLDatabaseClusterConfigurationFactory.<init>(XMLDatabaseClusterConfigurationFactory.java:110)
        at net.sf.hajdbc.sql.CommonDataSource.create(CommonDataSource.java:76)
        at net.sf.hajdbc.sql.CommonDataSource.create(CommonDataSource.java:44)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:62)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:33)
        at net.sf.hajdbc.sql.CommonDataSource.getProxy(CommonDataSource.java:83)
        at net.sf.hajdbc.sql.DataSource.getConnection(DataSource.java:54)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDataSource(PooledConnection.java:224)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:180)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        ... 101 more
    
    [EL Severe]: 2013-11-02 10:36:16.253--ServerSession(2076512800)--Local Exception Stack: 
    Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: Failed to locate database cluster configuration file: ha-jdbc-null.xml
    Error Code: 0
        at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:309)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:135)
        at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:330)
        at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:293)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java:418)
        at org.eclipse.persistence.sessions.server.ConnectionPool.buildConnection(ConnectionPool.java:216)
        at org.eclipse.persistence.sessions.server.ExternalConnectionPool.startUp(ExternalConnectionPool.java:146)
        at org.eclipse.persistence.sessions.server.ServerSession.connect(ServerSession.java:484)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:633)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:208)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:488)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:294)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:279)
        at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createEntityManager(ReloadableEntityManagerFactory.java:159)
        at org.apache.openejb.persistence.JtaEntityManagerRegistry.getEntityManager(JtaEntityManagerRegistry.java:115)
        at org.apache.openejb.persistence.JtaEntityManager.getEntityManager(JtaEntityManager.java:91)
        at org.apache.openejb.persistence.JtaEntityManager.proxyIfNoTx(JtaEntityManager.java:319)
        at org.apache.openejb.persistence.JtaEntityManager.createQuery(JtaEntityManager.java:273)
        at jpa.session.UsersFacade.getUser(UsersFacade.java:89)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
        at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:180)
        at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:99)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
        at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:80)
        at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:212)
        at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:181)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:268)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:263)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:86)
        at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:303)
        at jpa.session.UsersFacade$$LocalBeanProxy.getUser(jpa/session/UsersFacade.java)
        at jsf.users.pf_UsersController.getUser(pf_UsersController.java:1453)
        at jsf.users.pf_UsersController.loginUser(pf_UsersController.java:616)
        at jsf.users.pf_UsersController$$OwbNormalScopeProxy0.loginUser(jsf/users/pf_UsersController.java)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at javax.el.BeanELResolver.invoke(BeanELResolver.java:450)
        at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:225)
        at de.odysseus.el.tree.impl.ast.AstMethod.eval(AstMethod.java:91)
        at de.odysseus.el.tree.impl.ast.AstMethod.invoke(AstMethod.java:104)
        at de.odysseus.el.tree.impl.ast.AstEval.invoke(AstEval.java:71)
        at de.odysseus.el.TreeMethodExpression.invoke(TreeMethodExpression.java:132)
        at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96)
        at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:68)
        at javax.faces.component.UICommand.broadcast(UICommand.java:120)
        at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1041)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:289)
        at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1415)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:765)
        at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:38)
        at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
        at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:149)
        at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:75)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at pf.LoginFilter.doFilter(LoginFilter.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1721)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1679)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
    Caused by: java.sql.SQLException: Failed to locate database cluster configuration file: ha-jdbc-null.xml
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:724)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:188)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:123)
        ... 97 more
    Caused by: java.lang.IllegalArgumentException: Failed to locate database cluster configuration file: ha-jdbc-null.xml
        at net.sf.hajdbc.xml.XMLDatabaseClusterConfigurationFactory.findResource(XMLDatabaseClusterConfigurationFactory.java:105)
        at net.sf.hajdbc.xml.XMLDatabaseClusterConfigurationFactory.findResource(XMLDatabaseClusterConfigurationFactory.java:88)
        at net.sf.hajdbc.xml.XMLDatabaseClusterConfigurationFactory.<init>(XMLDatabaseClusterConfigurationFactory.java:115)
    Nov 02, 2013 10:36:16 AM org.apache.openejb.core.transaction.EjbTransactionUtil handleSystemException
    SEVERE: EjbTransactionUtil.handleSystemException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
        at net.sf.hajdbc.xml.XMLDatabaseClusterConfigurationFactory.<init>(XMLDatabaseClusterConfigurationFactory.java:110)
    Internal Exception: java.sql.SQLException: Failed to locate database cluster configuration file: ha-jdbc-null.xml
    Error Code: 0
    javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: Failed to locate database cluster configuration file: ha-jdbc-null.xml
    Error Code: 0
        at net.sf.hajdbc.sql.CommonDataSource.create(CommonDataSource.java:76)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:517)
        at net.sf.hajdbc.sql.CommonDataSource.create(CommonDataSource.java:44)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:62)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:33)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:294)
        at net.sf.hajdbc.sql.CommonDataSource.getProxy(CommonDataSource.java:83)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:279)
        at net.sf.hajdbc.sql.DataSource.getConnection(DataSource.java:54)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDataSource(PooledConnection.java:224)
        at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createEntityManager(ReloadableEntityManagerFactory.java:159)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:180)
        at org.apache.openejb.persistence.JtaEntityManagerRegistry.getEntityManager(JtaEntityManagerRegistry.java:115)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        ... 101 more
    
    UsersFacade.getUser() throwing Exception
        at org.apache.openejb.persistence.JtaEntityManager.getEntityManager(JtaEntityManager.java:91)
        at org.apache.openejb.persistence.JtaEntityManager.proxyIfNoTx(JtaEntityManager.java:319)
        at org.apache.openejb.persistence.JtaEntityManager.createQuery(JtaEntityManager.java:273)
        at jpa.session.UsersFacade.getUser(UsersFacade.java:89)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
        at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:180)
        at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:99)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
        at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:80)
        at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:212)
        at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:181)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:268)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:263)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:86)
        at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:303)
        at jpa.session.UsersFacade$$LocalBeanProxy.getUser(jpa/session/UsersFacade.java)
        at jsf.users.pf_UsersController.getUser(pf_UsersController.java:1453)
        at jsf.users.pf_UsersController.loginUser(pf_UsersController.java:616)
        at jsf.users.pf_UsersController$$OwbNormalScopeProxy0.loginUser(jsf/users/pf_UsersController.java)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at javax.el.BeanELResolver.invoke(BeanELResolver.java:450)
        at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:225)
        at de.odysseus.el.tree.impl.ast.AstMethod.eval(AstMethod.java:91)
        at de.odysseus.el.tree.impl.ast.AstMethod.invoke(AstMethod.java:104)
        at de.odysseus.el.tree.impl.ast.AstEval.invoke(AstEval.java:71)
        at de.odysseus.el.TreeMethodExpression.invoke(TreeMethodExpression.java:132)
        at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96)
        at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:68)
        at javax.faces.component.UICommand.broadcast(UICommand.java:120)
        at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1041)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:289)
        at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1415)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:765)
        at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:38)
        at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
        at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:98)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:149)
        at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:75)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at pf.LoginFilter.doFilter(LoginFilter.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1721)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1679)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
    Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: Failed to locate database cluster configuration file: ha-jdbc-null.xml
    Error Code: 0
        at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:309)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:135)
        at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:330)
        at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:293)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java:418)
        at org.eclipse.persistence.sessions.server.ConnectionPool.buildConnection(ConnectionPool.java:216)
        at org.eclipse.persistence.sessions.server.ExternalConnectionPool.startUp(ExternalConnectionPool.java:146)
        at org.eclipse.persistence.sessions.server.ServerSession.connect(ServerSession.java:484)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:633)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:208)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:488)
        ... 87 more
    Caused by: java.sql.SQLException: Failed to locate database cluster configuration file: ha-jdbc-null.xml
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:724)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:188)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:123)
        ... 97 more
    Caused by: java.lang.IllegalArgumentException: Failed to locate database cluster configuration file: ha-jdbc-null.xml
        at net.sf.hajdbc.xml.XMLDatabaseClusterConfigurationFactory.findResource(XMLDatabaseClusterConfigurationFactory.java:105)
        at net.sf.hajdbc.xml.XMLDatabaseClusterConfigurationFactory.findResource(XMLDatabaseClusterConfigurationFactory.java:88)
        at net.sf.hajdbc.xml.XMLDatabaseClusterConfigurationFactory.<init>(XMLDatabaseClusterConfigurationFactory.java:115)
        at net.sf.hajdbc.xml.XMLDatabaseClusterConfigurationFactory.<init>(XMLDatabaseClusterConfigurationFactory.java:110)
        at net.sf.hajdbc.sql.CommonDataSource.create(CommonDataSource.java:76)
        at net.sf.hajdbc.sql.CommonDataSource.create(CommonDataSource.java:44)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:62)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:33)
        at net.sf.hajdbc.sql.CommonDataSource.getProxy(CommonDataSource.java:83)
        at net.sf.hajdbc.sql.DataSource.getConnection(DataSource.java:54)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDataSource(PooledConnection.java:224)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:180)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        ... 101 more
    
    Nov 02, 2013 10:36:16 AM jsf.users.pf_UsersController getUser
    INFO: throwing EJBException.getCausedByException()
    

    I'm about to rename filename from ha-jdbc-cluster.xml to ha-jdbc-null.xml, and test.

     
  • Howard Smith

    Howard Smith - 2013-11-02

    okay, after renaming filename from ha-jdbc-cluster.xml to ha-jdbc-null.xml, I am now getting the following errors in log (not able to login to webapp, yet:

    exceptions/stacktrace @ https://gist.github.com/smithh032772/7279765

    please advise, because I would really love to get this working, and I don't know how to check this site for updates; the only way I can check for updates is refresh this page in my browser. :(

    thanks!

     

    Last edit: Howard Smith 2013-11-02
  • Howard Smith

    Howard Smith - 2013-11-02

    per your earlier suggestion, I added username and password to JTA datasource in persistence.xml,

    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
      <persistence-unit name="mcmsPU" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>jdbc/mcmsJta</jta-data-source>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
          <property name="javax.persistence.jdbc.user" value="mcms"/>
          <property name="javax.persistence.jdbc.password" value="mcms"/>
          <property name="eclipselink.target-database" value="org.eclipse.persistence.platform.database.DerbyPlatform"/>
          <property name="eclipselink.jdbc.cache-statements" value="true"/>
          <property name="eclipselink.jdbc.cache-statements.size" value="128"/>
          <property name="eclipselink.logging.parameters" value="false"/>
        </properties>
      </persistence-unit>
    </persistence>
    

    and exceptions/stacktrace, on gist @ https://gist.github.com/smithh032772/7279765#file-log2-txt, seem to be the same.

     
  • Howard Smith

    Howard Smith - 2013-11-02

    Per Avoid properties conflict when configuring TomEE DataSource, I added ignoreDefaultValues=true to <Resource> in tomee.xml,

    <Resource id="jdbc/mcmsJta" type="javax.sql.DataSource">
      JdbcDriver net.sf.hajdbc.sql.DataSource
      IgnoreDefaultValues true
      JtaManaged true
      jmxEnabled true
      LogSql false
    </Resource>
    

    and exceptions in the log file still see the same, but they occur during startup of tomee; previously, exceptions occurred after accessing/opening webapp in browser and attempting to login on login.xhtml of the web app.

     
  • Howard Smith

    Howard Smith - 2013-11-02

    Previously, I was using beta-3, but now I'm using ha-jdbc-2.1.0-beta-4.jar, and I am getting the same exceptions as in my previous response.

    META-INF/context.xml and resources in web.xml is not recommended when using TomEE. It is recommended to use tomee.xml, but <Resource ...=""> in tomee.xml does not allow me to set ha-jdbc cluster="..." and factory="...".

    based on all of the config that I provided above, can you please tell me how i can configure my app to use ha-jdbc for a 2-node/database cluster (tomcat jdbc pooling is not necessary, unless you can recommend a way for me to use with tomee)?

    I have 1 tomee, which hosts webapp and database (currently, via tomcat jdbc), which works great, but I just would like to have a high availability database cluster in place, so that is why I am 'trying' to use HA-JDBC. thanks.

     
  • Howard Smith

    Howard Smith - 2013-11-03

    Did some more reading/researching, and found the following discussion/topic:

    HA-JDBC Configuration File Location

    So, I added the following to my tomee/tomcat/JVM startup options:

    -Dha-jdbc.configuration=file://C:\apache-tomee-plus-1.6.0-SNAPSHOT\lib\ha-jdbc-cluster.xml
    

    started tomee, and 'after' attempting to login to webapp, i got the following:

    Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: URI has an authority component
    Error Code: 0
        at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:309)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:135)
        at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:330)
        at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:293)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java:418)
        at org.eclipse.persistence.sessions.server.ConnectionPool.buildConnection(ConnectionPool.java:216)
        at org.eclipse.persistence.sessions.server.ExternalConnectionPool.startUp(ExternalConnectionPool.java:146)
        at org.eclipse.persistence.sessions.server.ServerSession.connect(ServerSession.java:484)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:633)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:208)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:488)
        ... 87 more
    Caused by: java.sql.SQLException: URI has an authority component
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:724)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:188)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:86)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:132)
        ... 97 more
    Caused by: java.lang.IllegalArgumentException: URI has an authority component
        at java.io.File.<init>(Unknown Source)
        at net.sf.hajdbc.xml.FileXMLStreamFactory.<init>(FileXMLStreamFactory.java:50)
        at net.sf.hajdbc.xml.XMLDatabaseClusterConfigurationFactory.<init>(XMLDatabaseClusterConfigurationFactory.java:120)
        at net.sf.hajdbc.xml.XMLDatabaseClusterConfigurationFactory.<init>(XMLDatabaseClusterConfigurationFactory.java:115)
        at net.sf.hajdbc.xml.XMLDatabaseClusterConfigurationFactory.<init>(XMLDatabaseClusterConfigurationFactory.java:110)
        at net.sf.hajdbc.sql.CommonDataSource.create(CommonDataSource.java:79)
        at net.sf.hajdbc.sql.CommonDataSource.create(CommonDataSource.java:48)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:63)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:34)
        at net.sf.hajdbc.sql.CommonDataSource.getProxy(CommonDataSource.java:86)
        at net.sf.hajdbc.sql.DataSource.getConnection(DataSource.java:60)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDataSource(PooledConnection.java:224)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:180)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        ... 102 more
    

    i think i'm getting closer with tomee. please advise, based on this and earlier responses. thanks.

     
  • Howard Smith

    Howard Smith - 2013-11-03

    okay, modified the JVM option to the following,

    -Dha-jdbc.configuration=file:/apache-tomee-plus-1.6.0-SNAPSHOT/lib/ha-jdbc-cluster.xml
    

    and added the following to ha-jdbc-cluster.xml:

    <ha-jdbc xmlns="urn:ha-jdbc:cluster:2.1"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ha-jdbc.github.io/xsd/ha-jdbc-2.1.0-beta-4.xsd">
    

    so, ha-jdbc-cluster.xml has the following:

    <?xml version="1.0" encoding="UTF-8"?>
    <ha-jdbc xmlns="urn:ha-jdbc:cluster:2.1"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ha-jdbc.github.io/xsd/ha-jdbc-2.1.0-beta-4.xsd">
        <sync id="full">
           <property name="fetchSize">1000</property>
        </sync>
        <sync id="diff">
           <property name="fetchSize">1000</property>
           <property name="versionPattern">version</property>
        </sync>
        <state id="simple"/>
        <cluster dialect="derby" balancer="simple" default-sync="full" meta-data-cache="lazy" transaction-mode="parallel">
            <database id="db1" weight="1" location="org.apache.tomcat.jdbc.pool.DataSource">
                <property name="username">mcms</property>
                <property name="password">mcms</property>
                <property name="serverName">mcms</property>
                <property name="databaseName">mcms</property>
                <property name="driver">org.apache.derby.jdbc.EmbeddedDriver</property>
                <property name="url">jdbc:derby:c:/javadb/databases/mcms;create=true</property>
                <property name="InitialSize">10</property>
                <property name="MaxActive">100</property>
                <property name="MaxIdle">30</property>
                <property name="MaxWait">10000</property>
                <property name="minIdle">10</property>
                <property name="suspectTimeout">60</property>
                <property name="removeAbandoned">true</property>
                <property name="removeAbandonedTimeout">180</property>
                <property name="timeBetweenEvictionRunsMillis">30000</property>
                <property name="jdbcInterceptors">StatementCache(max=128)</property>
            </database>
            <database id="db2" weight="2" location="org.apache.tomcat.jdbc.pool.DataSource">
                <property name="username">mcms</property>
                <property name="password">mcms</property>
                <property name="serverName">mcms</property>
                <property name="databaseName">mcms</property>
                <property name="driver">org.apache.derby.jdbc.EmbeddedDriver</property>
                <property name="url">jdbc:derby:c:/javadb/databases/mcmsdev;create=true</property>
                <property name="InitialSize">10</property>
                <property name="MaxActive">100</property>
                <property name="MaxIdle">30</property>
                <property name="MaxWait">10000</property>
                <property name="minIdle">10</property>
                <property name="suspectTimeout">60</property>
                <property name="removeAbandoned">true</property>
                <property name="removeAbandonedTimeout">180</property>
                <property name="timeBetweenEvictionRunsMillis">30000</property>
                <property name="jdbcInterceptors">StatementCache(max=128)</property>
            </database>
        </cluster>
    </ha-jdbc>
    

    and tomee.xml has the following:

    <Resource id="jdbc/mcmsJta" type="javax.sql.DataSource">
      JdbcDriver net.sf.hajdbc.sql.DataSource
      JdbcUrl jdbc:ha-jdbc:cluster
      JtaManaged true
      jmxEnabled true
      LogSql false
    </Resource>
    

    and now, i have the following exception in the log file 'after' attempting to login to the web app:

    INFO: Initializing HA-JDBC 2.1.0-beta-4 from \apache-tomee-plus-1.6.0-SNAPSHOT\lib\ha-jdbc-cluster.xml
    Nov 02, 2013 11:24:18 PM org.apache.tomcat.jdbc.pool.ConnectionPool init
    SEVERE: Unable to create initial connections of pool.
    java.sql.SQLException
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:127)
        at net.sf.hajdbc.sql.DataSourceDatabase.connect(DataSourceDatabase.java:51)
        at net.sf.hajdbc.sql.DataSourceDatabase.connect(DataSourceDatabase.java:34)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.isAlive(DatabaseClusterImpl.java:834)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.start(DatabaseClusterImpl.java:708)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:76)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:34)
        at net.sf.hajdbc.sql.CommonDataSource.getProxy(CommonDataSource.java:86)
        at net.sf.hajdbc.sql.DataSource.getConnection(DataSource.java:60)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDataSource(PooledConnection.java:224)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:180)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:188)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:86)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:132)
        at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:330)
        at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:293)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java:418)
        at org.eclipse.persistence.sessions.server.ConnectionPool.buildConnection(ConnectionPool.java:216)
        at org.eclipse.persistence.sessions.server.ExternalConnectionPool.startUp(ExternalConnectionPool.java:146)
        at org.eclipse.persistence.sessions.server.ServerSession.connect(ServerSession.java:484)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:633)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:208)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:488)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:294)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:279)
        at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createEntityManager(ReloadableEntityManagerFactory.java:159)
        at org.apache.openejb.persistence.JtaEntityManagerRegistry.getEntityManager(JtaEntityManagerRegistry.java:115)
        at org.apache.openejb.persistence.JtaEntityManager.getEntityManager(JtaEntityManager.java:91)
        at org.apache.openejb.persistence.JtaEntityManager.proxyIfNoTx(JtaEntityManager.java:319)
        at org.apache.openejb.persistence.JtaEntityManager.createQuery(JtaEntityManager.java:273)
        at jpa.session.UsersFacade.getUser(UsersFacade.java:89)
    
    ...
    
    Caused by: java.lang.NullPointerException
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:246)
        ... 121 more
    
    Nov 02, 2013 11:24:18 PM net.sf.hajdbc.logging.slf4j.SLF4JLogger log
    INFO: null
    java.lang.NullPointerException
        at java.util.Hashtable.put(Unknown Source)
        at net.sf.hajdbc.management.DefaultMBeanRegistrar.createAttributes(DefaultMBeanRegistrar.java:134)
        at net.sf.hajdbc.management.DefaultMBeanRegistrar.unregister(DefaultMBeanRegistrar.java:100)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.stop(DatabaseClusterImpl.java:796)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:86)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:34)
        at net.sf.hajdbc.sql.CommonDataSource.getProxy(CommonDataSource.java:86)
        at net.sf.hajdbc.sql.DataSource.getConnection(DataSource.java:60)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDataSource(PooledConnection.java:224)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:180)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:188)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:86)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:132)
        at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:330)
        at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:293)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java:418)
        at org.eclipse.persistence.sessions.server.ConnectionPool.buildConnection(ConnectionPool.java:216)
        at org.eclipse.persistence.sessions.server.ExternalConnectionPool.startUp(ExternalConnectionPool.java:146)
        at org.eclipse.persistence.sessions.server.ServerSession.connect(ServerSession.java:484)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:633)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:208)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:488)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:294)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:279)
        at org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createEntityManager(ReloadableEntityManagerFactory.java:159)
        at org.apache.openejb.persistence.JtaEntityManagerRegistry.getEntityManager(JtaEntityManagerRegistry.java:115)
        at org.apache.openejb.persistence.JtaEntityManager.getEntityManager(JtaEntityManager.java:91)
        at org.apache.openejb.persistence.JtaEntityManager.proxyIfNoTx(JtaEntityManager.java:319)
        at org.apache.openejb.persistence.JtaEntityManager.createQuery(JtaEntityManager.java:273)
        at jpa.session.UsersFacade.getUser(UsersFacade.java:89)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
        at org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:180)
        at org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:99)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
        at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
        at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:80)
        at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:212)
        at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:181)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:268)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:263)
        at org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:86)
        at org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:303)
        at jpa.session.UsersFacade$$LocalBeanProxy.getUser(jpa/session/UsersFacade.java)
        at jsf.users.pf_UsersController.getUser(pf_UsersController.java:1453)
        at jsf.users.pf_UsersController.loginUser(pf_UsersController.java:616)
        at jsf.users.pf_UsersController$$OwbNormalScopeProxy0.loginUser(jsf/users/pf_UsersController.java)
    
    ...
    
    Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException
    Error Code: 0
        at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:309)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:135)
        at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:330)
        at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:293)
        at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java:418)
        at org.eclipse.persistence.sessions.server.ConnectionPool.buildConnection(ConnectionPool.java:216)
        at org.eclipse.persistence.sessions.server.ExternalConnectionPool.startUp(ExternalConnectionPool.java:146)
        at org.eclipse.persistence.sessions.server.ServerSession.connect(ServerSession.java:484)
        at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:633)
        at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:208)
        at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:488)
        ... 87 more
    Caused by: java.sql.SQLException
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:51)
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:35)
        at net.sf.hajdbc.AbstractExceptionFactory.createException(AbstractExceptionFactory.java:62)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:95)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:34)
        at net.sf.hajdbc.sql.CommonDataSource.getProxy(CommonDataSource.java:86)
        at net.sf.hajdbc.sql.DataSource.getConnection(DataSource.java:60)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDataSource(PooledConnection.java:224)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:180)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:188)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
        at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:86)
        at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:132)
        ... 97 more
    Caused by: java.lang.NullPointerException
        at java.util.Hashtable.put(Unknown Source)
        at net.sf.hajdbc.management.DefaultMBeanRegistrar.createAttributes(DefaultMBeanRegistrar.java:134)
        at net.sf.hajdbc.management.DefaultMBeanRegistrar.register(DefaultMBeanRegistrar.java:73)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.start(DatabaseClusterImpl.java:755)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:76)
        ... 108 more
    

    please advise. thanks.

     
  • Howard Smith

    Howard Smith - 2013-11-03

    well, i attempted to configure tomcat's connection pool to
    access HA-JDBC's datasource (i.e. a pool of HA-JDBC connections), as you mentioned in another thread.

    tomee.xml

    <Resource id="jdbc/mcmsJta" type="javax.sql.DataSource">
      JdbcDriver net.sf.hajdbc.sql.DataSource
      JdbcUrl jdbc:ha-jdbc:cluster
      UserName mcms
      Password mcms
      JtaManaged true
      jmxEnabled false
      LogSql false
      InitialSize 10
      MaxActive 100
      MaxIdle 30
      MaxWait 10000
      minIdle 10
      suspectTimeout 60
      removeAbandoned true
      removeAbandonedTimeout 180
      timeBetweenEvictionRunsMillis 30000
      jdbcInterceptors=StatementCache(max=128)
    </Resource>
    

    ha-jdbc-cluster.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <ha-jdbc xmlns="urn:ha-jdbc:cluster:2.1"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ha-jdbc.github.io/xsd/ha-jdbc-2.1.0-beta-4.xsd">
        <sync id="full">
           <property name="fetchSize">1000</property>
        </sync>
        <sync id="diff">
           <property name="fetchSize">1000</property>
           <property name="versionPattern">version</property>
        </sync>
        <state id="simple"/>
        <cluster dialect="derby" balancer="simple" default-sync="full" meta-data-cache="lazy" transaction-mode="parallel">
            <database id="db1" weight="1" location="org.apache.derby.jdbc.EmbeddedDataSource">
                <user>mcms</user>
                <password>mcms</password>
                <property name="databaseName">mcms</property>
                <property name="dataSourceName">ds1</property>
                <property name="driver">org.apache.derby.jdbc.EmbeddedDriver</property>
                <property name="url">jdbc:derby:c:/javadb/databases/mcms;create=true</property>
            </database>
            <database id="db2" weight="2" location="org.apache.derby.jdbc.EmbeddedDataSource">
                <user>mcms</user>
                <password>mcms</password>
                <property name="databaseName">mcms</property>
                <property name="dataSourceName">ds2</property>
                <property name="driver">org.apache.derby.jdbc.EmbeddedDriver</property>
                <property name="url">jdbc:derby:c:/javadb/databases/mcmsdev;create=true</property>
            </database>
        </cluster>
    </ha-jdbc>
    

    immediately after starting tomee (and prior to login attempt), the following exception in the log:

    INFO: Creating Resource(id=jdbc/mcmsJta)
    Nov 03, 2013 1:52:00 AM net.sf.hajdbc.logging.slf4j.SLF4JLogger log
    INFO: Initializing HA-JDBC 2.1.0-beta-4 from \apache-tomee-plus-1.6.0-SNAPSHOT\lib\ha-jdbc-cluster.xml
    Nov 03, 2013 1:52:04 AM net.sf.hajdbc.logging.slf4j.SLF4JLogger log
    INFO: null
    java.lang.NullPointerException
        at java.util.Hashtable.put(Unknown Source)
        at net.sf.hajdbc.management.DefaultMBeanRegistrar.createAttributes(DefaultMBeanRegistrar.java:134)
        at net.sf.hajdbc.management.DefaultMBeanRegistrar.unregister(DefaultMBeanRegistrar.java:100)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.stop(DatabaseClusterImpl.java:796)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:86)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:34)
        at net.sf.hajdbc.sql.CommonDataSource.getProxy(CommonDataSource.java:86)
        at net.sf.hajdbc.sql.DataSource.getConnection(DataSource.java:60)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDataSource(PooledConnection.java:224)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:180)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator.pool(TomEEDataSourceCreator.java:65)
        at org.apache.openejb.resource.jdbc.pool.PoolDataSourceCreator.poolManaged(PoolDataSourceCreator.java:72)
        at org.apache.openejb.resource.jdbc.DataSourceFactory.create(DataSourceFactory.java:115)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.xbean.recipe.ReflectionUtil$StaticFactory.create(ReflectionUtil.java:998)
        at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:49)
        at org.apache.openejb.assembler.classic.Assembler.createResource(Assembler.java:2106)
        at org.apache.openejb.assembler.classic.Assembler.buildContainerSystem(Assembler.java:490)
        at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:409)
        at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:148)
        at org.apache.openejb.OpenEJB.init(OpenEJB.java:296)
        at org.apache.tomee.catalina.TomcatLoader.initialize(TomcatLoader.java:246)
        at org.apache.tomee.catalina.TomcatLoader.init(TomcatLoader.java:134)
        at org.apache.tomee.catalina.ServerListener.lifecycleEvent(ServerListener.java:122)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:110)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:640)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:665)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
    
    Nov 03, 2013 1:52:04 AM org.apache.tomcat.jdbc.pool.ConnectionPool init
    SEVERE: Unable to create initial connections of pool.
    java.sql.SQLException
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:51)
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:35)
        at net.sf.hajdbc.AbstractExceptionFactory.createException(AbstractExceptionFactory.java:62)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:95)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:34)
        at net.sf.hajdbc.sql.CommonDataSource.getProxy(CommonDataSource.java:86)
        at net.sf.hajdbc.sql.DataSource.getConnection(DataSource.java:60)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDataSource(PooledConnection.java:224)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:180)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator.pool(TomEEDataSourceCreator.java:65)
        at org.apache.openejb.resource.jdbc.pool.PoolDataSourceCreator.poolManaged(PoolDataSourceCreator.java:72)
        at org.apache.openejb.resource.jdbc.DataSourceFactory.create(DataSourceFactory.java:115)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.xbean.recipe.ReflectionUtil$StaticFactory.create(ReflectionUtil.java:998)
        at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:49)
        at org.apache.openejb.assembler.classic.Assembler.createResource(Assembler.java:2106)
        at org.apache.openejb.assembler.classic.Assembler.buildContainerSystem(Assembler.java:490)
        at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:409)
        at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:148)
        at org.apache.openejb.OpenEJB.init(OpenEJB.java:296)
        at org.apache.tomee.catalina.TomcatLoader.initialize(TomcatLoader.java:246)
        at org.apache.tomee.catalina.TomcatLoader.init(TomcatLoader.java:134)
        at org.apache.tomee.catalina.ServerListener.lifecycleEvent(ServerListener.java:122)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:110)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:640)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:665)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
    Caused by: java.lang.NullPointerException
        at java.util.Hashtable.put(Unknown Source)
        at net.sf.hajdbc.management.DefaultMBeanRegistrar.createAttributes(DefaultMBeanRegistrar.java:134)
        at net.sf.hajdbc.management.DefaultMBeanRegistrar.register(DefaultMBeanRegistrar.java:73)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.start(DatabaseClusterImpl.java:755)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:76)
        ... 41 more
    
    Nov 03, 2013 1:52:04 AM org.apache.openejb.util.OpenEJBErrorHandler handleUnknownError
    SEVERE: FATAL ERROR: Unknown error in Assembler.  Please send the following stack trace and this message to users@openejb.apache.org :
     org.apache.xbean.recipe.ConstructionException: Error invoking factory method: public static javax.sql.CommonDataSource org.apache.openejb.resource.jdbc.DataSourceFactory.create(java.lang.String,boolean,java.lang.Class,java.lang.String,org.apache.openejb.util.Duration,org.apache.openejb.util.Duration,org.apache.openejb.util.Duration) throws java.lang.IllegalAccessException,java.lang.InstantiationException,java.io.IOException
        at org.apache.xbean.recipe.ReflectionUtil$StaticFactory.create(ReflectionUtil.java:1008)
        at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:49)
        at org.apache.openejb.assembler.classic.Assembler.createResource(Assembler.java:2106)
        at org.apache.openejb.assembler.classic.Assembler.buildContainerSystem(Assembler.java:490)
        at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:409)
        at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:148)
        at org.apache.openejb.OpenEJB.init(OpenEJB.java:296)
        at org.apache.tomee.catalina.TomcatLoader.initialize(TomcatLoader.java:246)
        at org.apache.tomee.catalina.TomcatLoader.init(TomcatLoader.java:134)
        at org.apache.tomee.catalina.ServerListener.lifecycleEvent(ServerListener.java:122)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:110)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:640)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:665)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
    Caused by: java.lang.IllegalStateException: java.sql.SQLException
        at org.apache.tomee.jdbc.TomEEDataSourceCreator.pool(TomEEDataSourceCreator.java:67)
        at org.apache.openejb.resource.jdbc.pool.PoolDataSourceCreator.poolManaged(PoolDataSourceCreator.java:72)
        at org.apache.openejb.resource.jdbc.DataSourceFactory.create(DataSourceFactory.java:115)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.xbean.recipe.ReflectionUtil$StaticFactory.create(ReflectionUtil.java:998)
        ... 24 more
    Caused by: java.sql.SQLException
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:51)
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:35)
        at net.sf.hajdbc.AbstractExceptionFactory.createException(AbstractExceptionFactory.java:62)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:95)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:34)
        at net.sf.hajdbc.sql.CommonDataSource.getProxy(CommonDataSource.java:86)
        at net.sf.hajdbc.sql.DataSource.getConnection(DataSource.java:60)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDataSource(PooledConnection.java:224)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:180)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator.pool(TomEEDataSourceCreator.java:65)
        ... 31 more
    Caused by: java.lang.NullPointerException
        at java.util.Hashtable.put(Unknown Source)
        at net.sf.hajdbc.management.DefaultMBeanRegistrar.createAttributes(DefaultMBeanRegistrar.java:134)
        at net.sf.hajdbc.management.DefaultMBeanRegistrar.register(DefaultMBeanRegistrar.java:73)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.start(DatabaseClusterImpl.java:755)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:76)
        ... 41 more
    
    Nov 03, 2013 1:52:04 AM org.apache.openejb.OpenEJB$Instance <init>
    SEVERE: OpenEJB has encountered a fatal error and cannot be started: Assembler failed to build the container system.
    org.apache.openejb.OpenEJBException: org.apache.xbean.recipe.ConstructionException: Error invoking factory method: public static javax.sql.CommonDataSource org.apache.openejb.resource.jdbc.DataSourceFactory.create(java.lang.String,boolean,java.lang.Class,java.lang.String,org.apache.openejb.util.Duration,org.apache.openejb.util.Duration,org.apache.openejb.util.Duration) throws java.lang.IllegalAccessException,java.lang.InstantiationException,java.io.IOException: Error invoking factory method: public static javax.sql.CommonDataSource org.apache.openejb.resource.jdbc.DataSourceFactory.create(java.lang.String,boolean,java.lang.Class,java.lang.String,org.apache.openejb.util.Duration,org.apache.openejb.util.Duration,org.apache.openejb.util.Duration) throws java.lang.IllegalAccessException,java.lang.InstantiationException,java.io.IOException
        at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:422)
        at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:148)
        at org.apache.openejb.OpenEJB.init(OpenEJB.java:296)
        at org.apache.tomee.catalina.TomcatLoader.initialize(TomcatLoader.java:246)
        at org.apache.tomee.catalina.TomcatLoader.init(TomcatLoader.java:134)
        at org.apache.tomee.catalina.ServerListener.lifecycleEvent(ServerListener.java:122)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:110)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:640)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:665)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
    Caused by: org.apache.xbean.recipe.ConstructionException: Error invoking factory method: public static javax.sql.CommonDataSource org.apache.openejb.resource.jdbc.DataSourceFactory.create(java.lang.String,boolean,java.lang.Class,java.lang.String,org.apache.openejb.util.Duration,org.apache.openejb.util.Duration,org.apache.openejb.util.Duration) throws java.lang.IllegalAccessException,java.lang.InstantiationException,java.io.IOException
        at org.apache.xbean.recipe.ReflectionUtil$StaticFactory.create(ReflectionUtil.java:1008)
        at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:49)
        at org.apache.openejb.assembler.classic.Assembler.createResource(Assembler.java:2106)
        at org.apache.openejb.assembler.classic.Assembler.buildContainerSystem(Assembler.java:490)
        at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:409)
        ... 17 more
    Caused by: java.lang.IllegalStateException: java.sql.SQLException
        at org.apache.tomee.jdbc.TomEEDataSourceCreator.pool(TomEEDataSourceCreator.java:67)
        at org.apache.openejb.resource.jdbc.pool.PoolDataSourceCreator.poolManaged(PoolDataSourceCreator.java:72)
        at org.apache.openejb.resource.jdbc.DataSourceFactory.create(DataSourceFactory.java:115)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.xbean.recipe.ReflectionUtil$StaticFactory.create(ReflectionUtil.java:998)
        ... 24 more
    Caused by: java.sql.SQLException
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:51)
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:35)
        at net.sf.hajdbc.AbstractExceptionFactory.createException(AbstractExceptionFactory.java:62)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:95)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:34)
        at net.sf.hajdbc.sql.CommonDataSource.getProxy(CommonDataSource.java:86)
        at net.sf.hajdbc.sql.DataSource.getConnection(DataSource.java:60)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDataSource(PooledConnection.java:224)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:180)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator.pool(TomEEDataSourceCreator.java:65)
        ... 31 more
    Caused by: java.lang.NullPointerException
        at java.util.Hashtable.put(Unknown Source)
        at net.sf.hajdbc.management.DefaultMBeanRegistrar.createAttributes(DefaultMBeanRegistrar.java:134)
        at net.sf.hajdbc.management.DefaultMBeanRegistrar.register(DefaultMBeanRegistrar.java:73)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.start(DatabaseClusterImpl.java:755)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:76)
        ... 41 more
    
    Nov 03, 2013 1:52:04 AM org.apache.tomee.catalina.ServerListener lifecycleEvent
    SEVERE: TomEE Listener can't start OpenEJB
    org.apache.openejb.OpenEJBException: org.apache.xbean.recipe.ConstructionException: Error invoking factory method: public static javax.sql.CommonDataSource org.apache.openejb.resource.jdbc.DataSourceFactory.create(java.lang.String,boolean,java.lang.Class,java.lang.String,org.apache.openejb.util.Duration,org.apache.openejb.util.Duration,org.apache.openejb.util.Duration) throws java.lang.IllegalAccessException,java.lang.InstantiationException,java.io.IOException: Error invoking factory method: public static javax.sql.CommonDataSource org.apache.openejb.resource.jdbc.DataSourceFactory.create(java.lang.String,boolean,java.lang.Class,java.lang.String,org.apache.openejb.util.Duration,org.apache.openejb.util.Duration,org.apache.openejb.util.Duration) throws java.lang.IllegalAccessException,java.lang.InstantiationException,java.io.IOException
        at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:422)
        at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:148)
        at org.apache.openejb.OpenEJB.init(OpenEJB.java:296)
        at org.apache.tomee.catalina.TomcatLoader.initialize(TomcatLoader.java:246)
        at org.apache.tomee.catalina.TomcatLoader.init(TomcatLoader.java:134)
        at org.apache.tomee.catalina.ServerListener.lifecycleEvent(ServerListener.java:122)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:110)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:640)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:665)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
    Caused by: org.apache.xbean.recipe.ConstructionException: Error invoking factory method: public static javax.sql.CommonDataSource org.apache.openejb.resource.jdbc.DataSourceFactory.create(java.lang.String,boolean,java.lang.Class,java.lang.String,org.apache.openejb.util.Duration,org.apache.openejb.util.Duration,org.apache.openejb.util.Duration) throws java.lang.IllegalAccessException,java.lang.InstantiationException,java.io.IOException
        at org.apache.xbean.recipe.ReflectionUtil$StaticFactory.create(ReflectionUtil.java:1008)
        at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:49)
        at org.apache.openejb.assembler.classic.Assembler.createResource(Assembler.java:2106)
        at org.apache.openejb.assembler.classic.Assembler.buildContainerSystem(Assembler.java:490)
        at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:409)
        ... 17 more
    Caused by: java.lang.IllegalStateException: java.sql.SQLException
        at org.apache.tomee.jdbc.TomEEDataSourceCreator.pool(TomEEDataSourceCreator.java:67)
        at org.apache.openejb.resource.jdbc.pool.PoolDataSourceCreator.poolManaged(PoolDataSourceCreator.java:72)
        at org.apache.openejb.resource.jdbc.DataSourceFactory.create(DataSourceFactory.java:115)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.apache.xbean.recipe.ReflectionUtil$StaticFactory.create(ReflectionUtil.java:998)
        ... 24 more
    Caused by: java.sql.SQLException
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:51)
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:35)
        at net.sf.hajdbc.AbstractExceptionFactory.createException(AbstractExceptionFactory.java:62)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:95)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:34)
        at net.sf.hajdbc.sql.CommonDataSource.getProxy(CommonDataSource.java:86)
        at net.sf.hajdbc.sql.DataSource.getConnection(DataSource.java:60)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDataSource(PooledConnection.java:224)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:180)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator.pool(TomEEDataSourceCreator.java:65)
        ... 31 more
    Caused by: java.lang.NullPointerException
        at java.util.Hashtable.put(Unknown Source)
        at net.sf.hajdbc.management.DefaultMBeanRegistrar.createAttributes(DefaultMBeanRegistrar.java:134)
        at net.sf.hajdbc.management.DefaultMBeanRegistrar.register(DefaultMBeanRegistrar.java:73)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.start(DatabaseClusterImpl.java:755)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:76)
        ... 41 more
    

    let's try to get this working, please. thanks.

     
  • Paul Ferraro

    Paul Ferraro - 2013-11-04

    Your TomEE JDBC resource configuration contains:
    JdbcDriver net.sf.hajdbc.sql.DataSource

    This is not a valid JDBC driver class. If you want to configure HA-JDBC in this way, you need to use "net.sf.hajdbc.sql.Driver".

     
  • Howard Smith

    Howard Smith - 2013-11-05

    i did what you suggested, but it still resulted in an exception. please see below.

    tomee.xml

    <Resource id="jdbc/mcmsJta" type="javax.sql.DataSource">
      JdbcDriver net.sf.hajdbc.sql.Driver
      JdbcUrl jdbc:ha-jdbc:cluster
      UserName mcms
      Password mcms
      JtaManaged true
      jmxEnabled false
      LogSql false
      InitialSize 10
      MaxActive 100
      MaxIdle 30
      MaxWait 10000
      minIdle 10
      suspectTimeout 60
      removeAbandoned true
      removeAbandonedTimeout 180
      timeBetweenEvictionRunsMillis 30000
      jdbcInterceptors=StatementCache(max=128)
    </Resource>
    

    ha-jdbc-cluster.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <ha-jdbc xmlns="urn:ha-jdbc:cluster:2.1"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ha-jdbc.github.io/xsd/ha-jdbc-2.1.0-beta-4.xsd">
        <sync id="full">
           <property name="fetchSize">1000</property>
        </sync>
        <sync id="diff">
           <property name="fetchSize">1000</property>
           <property name="versionPattern">version</property>
        </sync>
        <state id="simple"/>
        <cluster dialect="derby" balancer="simple" default-sync="full" meta-data-cache="lazy" transaction-mode="parallel">
            <database id="db1" weight="1" location="org.apache.derby.jdbc.EmbeddedDataSource">
                <user>mcms</user>
                <password>mcms</password>
                <property name="databaseName">mcms</property>
                <property name="dataSourceName">ds1</property>
                <property name="driver">org.apache.derby.jdbc.EmbeddedDriver</property>
                <property name="url">jdbc:derby:c:/javadb/databases/mcms;create=true</property>
            </database>
            <database id="db2" weight="2" location="org.apache.derby.jdbc.EmbeddedDataSource">
                <user>mcms</user>
                <password>mcms</password>
                <property name="databaseName">mcms</property>
                <property name="dataSourceName">ds2</property>
                <property name="driver">org.apache.derby.jdbc.EmbeddedDriver</property>
                <property name="url">jdbc:derby:c:/javadb/databases/mcmsdev;create=true</property>
            </database>
        </cluster>
    </ha-jdbc>
    

    immediately after starting tomee (and prior to login attempt), the following exception in the log:

    INFO: Creating Resource(id=jdbc/mcmsJta)
    Nov 04, 2013 7:21:17 PM org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource readOnly
    INFO: Disabling testOnBorrow since no validation query is provided
    Nov 04, 2013 7:21:17 PM net.sf.hajdbc.logging.slf4j.SLF4JLogger log
    INFO: Initializing HA-JDBC 2.1.0-beta-4 from \apache-tomee-plus-1.6.0-SNAPSHOT\lib\ha-jdbc-cluster.xml
    Nov 04, 2013 7:21:17 PM org.apache.tomcat.jdbc.pool.ConnectionPool init
    SEVERE: Unable to create initial connections of pool.
    java.sql.SQLException: No registered driver will accept url org.apache.derby.jdbc.EmbeddedDataSource
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:51)
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:35)
        at net.sf.hajdbc.AbstractExceptionFactory.createException(AbstractExceptionFactory.java:62)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:95)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:34)
        at net.sf.hajdbc.sql.Driver.connect(Driver.java:139)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:278)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEConnectionPool.<init>(TomEEDataSourceCreator.java:331)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource.createPool(TomEEDataSourceCreator.java:249)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource.<init>(TomEEDataSourceCreator.java:227)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator.pool(TomEEDataSourceCreator.java:82)
        at org.apache.openejb.resource.jdbc.pool.PoolDataSourceCreator.poolManaged(PoolDataSourceCreator.java:77)
        at org.apache.openejb.resource.jdbc.DataSourceFactory.create(DataSourceFactory.java:132)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.xbean.recipe.ReflectionUtil$StaticFactory.create(ReflectionUtil.java:998)
        at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:49)
        at org.apache.openejb.assembler.classic.Assembler.createResource(Assembler.java:2106)
        at org.apache.openejb.assembler.classic.Assembler.buildContainerSystem(Assembler.java:490)
        at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:409)
        at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:148)
        at org.apache.openejb.OpenEJB.init(OpenEJB.java:296)
        at org.apache.tomee.catalina.TomcatLoader.initialize(TomcatLoader.java:246)
        at org.apache.tomee.catalina.TomcatLoader.init(TomcatLoader.java:134)
        at org.apache.tomee.catalina.ServerListener.lifecycleEvent(ServerListener.java:122)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:110)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:640)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:665)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
    Caused by: java.lang.IllegalArgumentException: No registered driver will accept url org.apache.derby.jdbc.EmbeddedDataSource
        at net.sf.hajdbc.sql.DriverDatabase.getDriver(DriverDatabase.java:110)
        at net.sf.hajdbc.sql.DriverDatabase.createConnectionSource(DriverDatabase.java:93)
        at net.sf.hajdbc.sql.DriverDatabase.createConnectionSource(DriverDatabase.java:39)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.isAlive(DatabaseClusterImpl.java:834)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.start(DatabaseClusterImpl.java:708)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:76)
        ... 43 more
    Caused by: java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getDriver(DriverManager.java:278)
        at net.sf.hajdbc.sql.DriverDatabase.getDriver(DriverDatabase.java:106)
        ... 48 more
    
    Nov 04, 2013 7:21:17 PM org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource <init>
    SEVERE: Can't create DataSource
    java.sql.SQLException: No registered driver will accept url org.apache.derby.jdbc.EmbeddedDataSource
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:51)
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:35)
        at net.sf.hajdbc.AbstractExceptionFactory.createException(AbstractExceptionFactory.java:62)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:95)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:34)
        at net.sf.hajdbc.sql.Driver.connect(Driver.java:139)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:278)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEConnectionPool.<init>(TomEEDataSourceCreator.java:331)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource.createPool(TomEEDataSourceCreator.java:249)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource.<init>(TomEEDataSourceCreator.java:227)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator.pool(TomEEDataSourceCreator.java:82)
        at org.apache.openejb.resource.jdbc.pool.PoolDataSourceCreator.poolManaged(PoolDataSourceCreator.java:77)
        at org.apache.openejb.resource.jdbc.DataSourceFactory.create(DataSourceFactory.java:132)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.xbean.recipe.ReflectionUtil$StaticFactory.create(ReflectionUtil.java:998)
        at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:49)
        at org.apache.openejb.assembler.classic.Assembler.createResource(Assembler.java:2106)
        at org.apache.openejb.assembler.classic.Assembler.buildContainerSystem(Assembler.java:490)
        at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:409)
        at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:148)
        at org.apache.openejb.OpenEJB.init(OpenEJB.java:296)
        at org.apache.tomee.catalina.TomcatLoader.initialize(TomcatLoader.java:246)
        at org.apache.tomee.catalina.TomcatLoader.init(TomcatLoader.java:134)
        at org.apache.tomee.catalina.ServerListener.lifecycleEvent(ServerListener.java:122)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:110)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:640)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:665)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
    Caused by: java.lang.IllegalArgumentException: No registered driver will accept url org.apache.derby.jdbc.EmbeddedDataSource
        at net.sf.hajdbc.sql.DriverDatabase.getDriver(DriverDatabase.java:110)
        at net.sf.hajdbc.sql.DriverDatabase.createConnectionSource(DriverDatabase.java:93)
        at net.sf.hajdbc.sql.DriverDatabase.createConnectionSource(DriverDatabase.java:39)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.isAlive(DatabaseClusterImpl.java:834)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.start(DatabaseClusterImpl.java:708)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:76)
        ... 43 more
    Caused by: java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getDriver(DriverManager.java:278)
        at net.sf.hajdbc.sql.DriverDatabase.getDriver(DriverDatabase.java:106)
        ... 48 more
    

    please advise, thanks.

     
  • Paul Ferraro

    Paul Ferraro - 2013-11-05

    Your HA-JDBC configuration defines an invalid value for <database location="..."/>
    You specified a class name, when instead, you should have specified a JDBC url.

    Try something like this:

    <database id="db1" weight="1" location="jdbc:derby:c:/javadb/databases/mcms;create=true">
        <user>mcms</user>
        <password>mcms</password>
    </database>
    
     
  • Howard Smith

    Howard Smith - 2013-11-05

    thank you for the response. please read my response entirely. i tried what you suggested, that resulted in an exception, searched google, found a hint/tip, and got embedded derby loaded by adding a 'startup' database <Resource driver="embedded" derby=""/>, and then tomee started with ha-jdbc with 'no' issues. have not tested with my app yet, will report test results in my next response. now, below, i will report details of what I mentioned above.

    per your last suggestion, i modified ha-jdbc-cluster.xml, and now it looks like the following:

        <cluster dialect="derby" balancer="simple" default-sync="full" meta-data-cache="lazy" transaction-mode="parallel">
            <database id="db1" weight="1" location="jdbc:derby:c:/javadb/databases/mcms;create=true">
                <user>mcms</user>
                <password>mcms</password>
                <property name="databaseName">mcms</property>
                <property name="driver">org.apache.derby.jdbc.EmbeddedDriver</property>
            </database>
            <database id="db2" weight="2" location="jdbc:derby:c:/javadb/databases/mcmsdev;create=true">
                <user>mcms</user>
                <password>mcms</password>
                <property name="databaseName">mcms</property>
                <property name="driver">org.apache.derby.jdbc.EmbeddedDriver</property>
            </database>
        </cluster>
    

    but that resulted in the following exception (please see exception and there is more to read after the exception):

    Nov 04, 2013 10:06:47 PM net.sf.hajdbc.logging.slf4j.SLF4JLogger log
    INFO: Initializing HA-JDBC 2.1.0-beta-4 from \apache-tomee-plus-1.6.0-SNAPSHOT\lib\ha-jdbc-cluster.xml
    Nov 04, 2013 10:06:47 PM org.apache.tomcat.jdbc.pool.ConnectionPool init
    SEVERE: Unable to create initial connections of pool.
    java.sql.SQLException: No registered driver will accept url jdbc:derby:c:/javadb/databases/mcmsdev;create=true
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:51)
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:35)
        at net.sf.hajdbc.AbstractExceptionFactory.createException(AbstractExceptionFactory.java:62)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:95)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:34)
        at net.sf.hajdbc.sql.Driver.connect(Driver.java:139)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:278)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEConnectionPool.<init>(TomEEDataSourceCreator.java:331)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource.createPool(TomEEDataSourceCreator.java:249)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource.<init>(TomEEDataSourceCreator.java:227)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator.pool(TomEEDataSourceCreator.java:82)
        at org.apache.openejb.resource.jdbc.DataSourceFactory.create(DataSourceFactory.java:135)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.xbean.recipe.ReflectionUtil$StaticFactory.create(ReflectionUtil.java:998)
        at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:49)
        at org.apache.openejb.assembler.classic.Assembler.createResource(Assembler.java:2106)
        at org.apache.openejb.config.ConfigurationFactory.install(ConfigurationFactory.java:431)
        at org.apache.openejb.config.AutoConfig.installResource(AutoConfig.java:2074)
        at org.apache.openejb.config.AutoConfig.deploy(AutoConfig.java:1625)
        at org.apache.openejb.config.AutoConfig.deploy(AutoConfig.java:205)
        at org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:396)
        at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:938)
        at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1171)
        at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1051)
        at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:127)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:983)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1660)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
    Caused by: java.lang.IllegalArgumentException: No registered driver will accept url jdbc:derby:c:/javadb/databases/mcmsdev;create=true
        at net.sf.hajdbc.sql.DriverDatabase.getDriver(DriverDatabase.java:110)
        at net.sf.hajdbc.sql.DriverDatabase.createConnectionSource(DriverDatabase.java:93)
        at net.sf.hajdbc.sql.DriverDatabase.createConnectionSource(DriverDatabase.java:39)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.isAlive(DatabaseClusterImpl.java:834)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.start(DatabaseClusterImpl.java:708)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:76)
        ... 46 more
    Caused by: java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getDriver(DriverManager.java:278)
        at net.sf.hajdbc.sql.DriverDatabase.getDriver(DriverDatabase.java:106)
        ... 51 more
    
    Nov 04, 2013 10:06:47 PM org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource <init>
    SEVERE: Can't create DataSource
    java.sql.SQLException: No registered driver will accept url jdbc:derby:c:/javadb/databases/mcmsdev;create=true
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:51)
        at net.sf.hajdbc.sql.SQLExceptionFactory.createException(SQLExceptionFactory.java:35)
        at net.sf.hajdbc.AbstractExceptionFactory.createException(AbstractExceptionFactory.java:62)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:95)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:34)
        at net.sf.hajdbc.sql.Driver.connect(Driver.java:139)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:278)
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:701)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:635)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:486)
        at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEConnectionPool.<init>(TomEEDataSourceCreator.java:331)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource.createPool(TomEEDataSourceCreator.java:249)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource.<init>(TomEEDataSourceCreator.java:227)
        at org.apache.tomee.jdbc.TomEEDataSourceCreator.pool(TomEEDataSourceCreator.java:82)
        at org.apache.openejb.resource.jdbc.DataSourceFactory.create(DataSourceFactory.java:135)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.xbean.recipe.ReflectionUtil$StaticFactory.create(ReflectionUtil.java:998)
        at org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:276)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61)
        at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:49)
        at org.apache.openejb.assembler.classic.Assembler.createResource(Assembler.java:2106)
        at org.apache.openejb.config.ConfigurationFactory.install(ConfigurationFactory.java:431)
        at org.apache.openejb.config.AutoConfig.installResource(AutoConfig.java:2074)
        at org.apache.openejb.config.AutoConfig.deploy(AutoConfig.java:1625)
        at org.apache.openejb.config.AutoConfig.deploy(AutoConfig.java:205)
        at org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:396)
        at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:938)
        at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1171)
        at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1051)
        at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:127)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:983)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1660)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
    Caused by: java.lang.IllegalArgumentException: No registered driver will accept url jdbc:derby:c:/javadb/databases/mcmsdev;create=true
        at net.sf.hajdbc.sql.DriverDatabase.getDriver(DriverDatabase.java:110)
        at net.sf.hajdbc.sql.DriverDatabase.createConnectionSource(DriverDatabase.java:93)
        at net.sf.hajdbc.sql.DriverDatabase.createConnectionSource(DriverDatabase.java:39)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.isAlive(DatabaseClusterImpl.java:834)
        at net.sf.hajdbc.sql.DatabaseClusterImpl.start(DatabaseClusterImpl.java:708)
        at net.sf.hajdbc.util.concurrent.LifecycleRegistry.get(LifecycleRegistry.java:76)
        ... 46 more
    Caused by: java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getDriver(DriverManager.java:278)
        at net.sf.hajdbc.sql.DriverDatabase.getDriver(DriverDatabase.java:106)
        ... 51 more
    

    afterwards, i remembered a trick I did with glassfish 3.1.x, in the past, but wanted to do the same with tomcat/tomee. this error reminded me that i could possibly start embedded derby driver via java (-D) option, but I forgot the syntax, so searched google, and based on what others recommended, i thought it is necessary to do <Resource ...=""/> and 'use' the database (driver).

    So, I added the following as the first 'embedded derby' database resource:

    <Resource id="jdbc/startup" type="javax.sql.DataSource">
      JdbcDriver org.apache.derby.jdbc.EmbeddedDriver
      JdbcUrl jdbc:derby:C:/javadb/databases/startup;create=true
      UserName ....
      Password ....
      JtaManaged false
      jmxEnabled false
      LogSql false
      ignoreDefaultValues true
    </Resource>
    

    from prior experience (this past weekend), when I was trying sooo many things to get ha-jdbc working with tomee (and my app), i recognized that adding the following to the <Resource ...=""/> seemed to 'eagerly' use/start the database, immediately, when tomee started (instead of 'lazy' use/start database when first user login to the web app). :)

      ignoreDefaultValues true
    

    so, after adding the dummy 'startup' embedded derby database resource, tomee started with no ha-jdbc errors/exceptions. below, you will see that tomee created 'startup' resource and then ha-jdbc resource. :)

    Nov 04, 2013 10:44:36 PM org.apache.openejb.assembler.classic.Assembler createRecipe
    INFO: Creating Resource(id=jdbc/startup)
    Nov 04, 2013 10:44:37 PM org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource readOnly
    INFO: Disabling testOnBorrow since no validation query is provided
    Nov 04, 2013 10:44:37 PM org.apache.openejb.assembler.classic.Assembler createRecipe
    INFO: Creating Resource(id=jdbc/mcmsJta)
    Nov 04, 2013 10:44:37 PM org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource readOnly
    INFO: Disabling testOnBorrow since no validation query is provided
    Nov 04, 2013 10:44:37 PM net.sf.hajdbc.logging.slf4j.SLF4JLogger log
    INFO: Initializing HA-JDBC 2.1.0-beta-4 from \apache-tomee-plus-1.6.0-SNAPSHOT\lib\ha-jdbc-cluster.xml
    

    will test my app and ha-jdbc next, and report test results in my next response. thanks Paul!

     
  • Howard Smith

    Howard Smith - 2013-11-05

    I need to post my test results and any other questions in a separate topic. thank you again, Paul, for your help in this topic!

     
  • Paul Ferraro

    Paul Ferraro - 2013-11-05

    Why do you need a "dummy 'startup' embedded derby database resource"?
    The no suitable driver exception means that the JDBC driver wasn't autoloaded. This usually means that your JDBC driver is not JDBC 4.0 compatible, i.e. the jar file is missing a /META-INF/services/java.sql.Driver file. What version of Derby are you using?

    If your jdbc driver is not JDBC 4.0 compatible, and you are unable to update this dependency, you can start your server with the "jdbc.drivers" system property that defines the fully qualified class name of your JDBC driver.
    e.g. -Djdbc.drivers=org.apache.derby.jdbc.EmbeddedDriver

     
  • Paul Ferraro

    Paul Ferraro - 2013-11-05

    Also, I'm not sure why you have to 2 extra <property/> elements in your database. These would be passed through to the Driver.connect(...) method, and I doubt that derby makes use of them.

     
  • Paul Ferraro

    Paul Ferraro - 2013-11-05

    Sorry - you posted the Derby version in the 1st post in your thread. This version should be auto-loadable, so I'm not sure why you're getting a "No suitable driver" exception.

    It helps to use DriverManager.setLogWriter(System.out) to debug issues like this - that way you can see any exception that might be causing org.apache.derby.jdbc.EmbeddedDriver.acceptsUrl("jdbc:derby:c:/javadb/databases/mcms;create=true") to return false.

     
  • Howard Smith

    Howard Smith - 2013-11-06

    okay Paul, thanks for the responses.

     

Log in to post a comment.