On 2 Nov 2012, at 00:45, Leon Wu wrote:

> Hi Scott,
> 
> You are exactly right. By step by step debugging, I found that my
> context.xml is configured with derby db stuff and it found the datasource
> after I changed it to mysql parameters.
> However, it hits another problem. The Tomcat is hang on over there for a
> while and throws almost the same exceptions.
> By tracing down to the problem, it happens in JPAPersistenceManager (line
> 293) when it tries to create the entity manager.
>        entityManager = entityManagerFactory.createEntityManager();
> 
> and the actual exception is thrown by DataSourceFactory of openjpa package
> (line 239)
>        if (!factory2)
>             conn = ds.getConnection(conf.getConnectionUserName(), conf
>                        .getConnectionPassword());
>        else
> 
> conf.getConnectionUserName and getConnectionPassword return null. I may not
> know if it is correct or not.

The main thing to check is that your database name, database user name and 
database password set in your conf/wookie.xml match your actual MySQL set up.

> But after a step further, it hangs on there
> and runtime exception stack is below. It might be the issue with openjpa
> config but I don't know how to do that.
> 

Actually this looks more like a driver problem. Do you have more than one MySQL 
connector jar on your classpath?

> Thank you for the help.
> 
> 
> 
> java.lang.RuntimeException: There were errors initializing your
> configuration: <openjpa-2.0.0-r422266:935683 fatal user error>
> org.apache.openjpa.util.UserException: A connection could not be obtained
> for driver class "null" and URL "null".  You may have specified an invalid
> URL.
> 
> at
> org.apache.openjpa.jdbc.schema.DataSourceFactory.newConnectException(DataSourceFactory.java:261)
> 
> at
> org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:247)
> 
> at
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:725)
> 
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 
> at java.lang.reflect.Method.invoke(Method.java:597)
> 
> at
> org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:294)
> 
> at
> org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAConfigurationImpl.java:1602)
> 
> at
> org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:634)
> 
> at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:193)
> 
> at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
> 
> at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:213)
> 
> at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:151)
> 
> at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:57)
> 
> at
> org.apache.wookie.beans.jpa.JPAPersistenceManager.begin(JPAPersistenceManager.java:293)
> 
> at
> org.apache.wookie.beans.util.PersistenceManagerFactory.initialize(PersistenceManagerFactory.java:81)
> 
> at
> org.apache.wookie.server.ContextListener.contextInitialized(ContextListener.java:110)
> 
> at
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4791)
> 
> at
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285)
> 
> 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:618)
> 
> at
> org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:650)
> 
> at
> org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1582)
> 
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
> 
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> 
> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> 
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> 
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> 
> at java.lang.Thread.run(Thread.java:680)
> 
> Caused by: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create
> PoolableConnectionFactory (Communications link failure
> 
> 
> The last packet sent successfully to the server was 0 milliseconds ago. The
> driver has not received any packets from the server.)
> 
> at
> org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
> 
> at
> org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
> 
> at
> org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
> 
> at
> org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:137)
> 
> at
> org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:112)
> 
> at
> org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:239)
> 
> ... 30 more
> 
> Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
> Communications link failure
> 
> 
> The last packet sent successfully to the server was 0 milliseconds ago. The
> driver has not received any packets from the server.
> 
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> 
> at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> 
> at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> 
> at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> 
> at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
> 
> at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117)
> 
> at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:350)
> 
> at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2408)
> 
> at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2445)
> 
> at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2230)
> 
> at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
> 
> at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
> 
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> 
> at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> 
> at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> 
> at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> 
> at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
> 
> at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
> 
> at
> com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
> 
> at
> org.apache.tomcat.dbcp.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
> 
> at
> org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
> 
> at
> org.apache.tomcat.dbcp.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
> 
> at
> org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
> 
> ... 35 more
> 
> Caused by: java.net.ConnectException: Operation timed out
> 
> at java.net.PlainSocketImpl.socketConnect(Native Method)
> 
> at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
> 
> at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
> 
> at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
> 
> at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
> 
> at java.net.Socket.connect(Socket.java:529)
> 
> at java.net.Socket.connect(Socket.java:478)
> 
> at java.net.Socket.<init>(Socket.java:375)
> 
> at java.net.Socket.<init>(Socket.java:218)
> 
> at
> com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:259)
> 
> at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:300)
> 
> ... 51 more
> 
> 
> <openjpa-2.0.0-r422266:935683 fatal user error>
> org.apache.openjpa.util.UserException: A connection could not be obtained
> for driver class "null" and URL "null".  You may have specified an invalid
> URL.
> 
> at
> org.apache.openjpa.jdbc.schema.DataSourceFactory.newConnectException(DataSourceFactory.java:261)
> 
> at
> org.apache.openjpa.jdbc.schema.DataSourceFactory.installDBDictionary(DataSourceFactory.java:247)
> 
> at
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:725)
> 
> at
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDataSource(JDBCConfigurationImpl.java:845)
> 
> at
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDataSource2(JDBCConfigurationImpl.java:852)
> 
> at
> org.apache.openjpa.jdbc.schema.SchemaGenerator.<init>(SchemaGenerator.java:83)
> 
> at
> org.apache.openjpa.jdbc.schema.LazySchemaFactory.setConfiguration(LazySchemaFactory.java:206)
> 
> at
> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:475)
> 
> at
> org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:432)
> 
> at org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:104)
> 
> at org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83)
> 
> at
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getSchemaFactoryInstance(JDBCConfigurationImpl.java:649)
> 
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 
> at java.lang.reflect.Method.invoke(Method.java:597)
> 
> at
> org.apache.openjpa.lib.conf.ConfigurationImpl.instantiateAll(ConfigurationImpl.java:294)
> 
> at
> org.apache.openjpa.conf.OpenJPAConfigurationImpl.instantiateAll(OpenJPAConfigurationImpl.java:1602)
> 
> at
> org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:634)
> 
> at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:193)
> 
> at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
> 
> at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:213)
> 
> at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:151)
> 
> at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:57)
> 
> at
> org.apache.wookie.beans.jpa.JPAPersistenceManager.begin(JPAPersistenceManager.java:293)
> 
> at
> org.apache.wookie.beans.util.PersistenceManagerFactory.initialize(PersistenceManagerFactory.java:81)
> 
> at
> org.apache.wookie.server.ContextListener.contextInitialized(ContextListener.java:110)
> 
> at
> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4791)
> 
> at
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285)
> 
> 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:618)
> 
> at org.apache.catalina.startup.HostConfig.deployDe...
> 
> 
> 
> =========================================================================
> 
> 
> 
> 
> 
> 
> 
> 
> On Thu, Nov 1, 2012 at 5:26 AM, Scott Wilson <[email protected]
>> wrote:
> 
>> Hi Leon,
>> 
>> This definitely seems to be a problem with the database connector; the
>> error messages you get are typically the sort you get when JPA can't
>> connect to the database properly.
>> 
>> Sometimes - depending on the version of Tomcat - it seems necessary to
>> create your context info into a "wookie.xml" file and place into /conf,
>> e.g.:
>> 
>> <Context crossContext="true">
>> 
>>  <Resource name="jdbc/widgetdb"
>>            auth="Container"
>>            type="javax.sql.DataSource"
>>            maxActive="80"
>>            maxIdle="5"
>>            username="java"
>>            password="java"
>>            driverClassName="com.mysql.jdbc.Driver"
>>            url="jdbc:mysql://localhost:3306/widgetdb"/>
>> 
>> </Context>
>> 
>> Also make sure you have the MySQL driver jar in the classpath. E.g. that
>> you have mysql-connector-java-5.0.7-bin.jar in /lib.
>> 
>> Hope this helps, also see instructions here:
>> 
>> http://incubator.apache.org/wookie/docs/developer/running.html
>> 
>> S
>> 
>> 
>> On 31 Oct 2012, at 23:54, Leon Wu wrote:
>> 
>>> Hello,
>>> 
>>> I've import the Wookie in Eclipse, but I cannot make it work for me?
>>> 
>>> I've created JNDI for the DataSource in META-INF/context.xml, settings in
>>> web.xml, widget.persistence.manager.dbtype=mysql in
>>> widgetserver.properties, and tables in MySQL. However, I am persistently
>>> getting two exceptions when Tomcat is starting. Please help me to fix the
>>> problems. Thank you very much.
>>> 
>>> Here are the exceptions:
>>> 
>>> 28.10.2012 22:31:14 INFO
>>> [org.apache.wookie.beans.jpa.JPAPersistenceManager.initialize():248]
>>> Initialized
>>> 
>>> 28.10.2012 22:31:14 INFO
>>> [org.apache.openjpa.lib.log.Log4JLogFactory$LogAdapter.info():81]
>> Starting
>>> OpenJPA 2.0.0
>>> 
>>> 28.10.2012 22:31:14 INFO
>>> [org.apache.openjpa.lib.log.Log4JLogFactory$LogAdapter.info():81] Using
>>> dictionary class "org.apache.openjpa.jdbc.sql.MySQLDictionary".
>>> 
>>> Oct 28, 2012 10:31:14 PM org.apache.catalina.core.StandardContext
>>> listenerStart
>>> 
>>> SEVERE: Exception sending context initialized event to listener instance
>> of
>>> class org.apache.wookie.server.ContextListener
>>> 
>>> java.lang.IllegalStateException: Transaction not initiated or already
>>> closed
>>> 
>>> at org.apache.wookie.beans.jpa.JPAPersistenceManager.close(
>>> JPAPersistenceManager.java:309)
>>> 
>>> at
>>> 
>> org.apache.wookie.beans.util.PersistenceManagerFactory.closePersistenceManager(
>>> PersistenceManagerFactory.java:213)
>>> 
>>> at org.apache.wookie.beans.util.PersistenceManagerFactory.initialize(
>>> PersistenceManagerFactory.java:157)
>>> 
>>> at org.apache.wookie.server.ContextListener.contextInitialized(
>>> ContextListener.java:110)
>>> 
>>> at org.apache.catalina.core.StandardContext.listenerStart(
>>> StandardContext.java:4791)
>>> 
>>> at org.apache.catalina.core.StandardContext.startInternal(
>>> StandardContext.java:5285)
>>> 
>>> 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:618)
>>> 
>>> at org.apache.catalina.startup.HostConfig.deployDescriptor(
>>> HostConfig.java:650)
>>> 
>>> at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(
>>> HostConfig.java:1582)
>>> 
>>> at
>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
>>> 
>>> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>>> 
>>> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>>> 
>>> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(
>>> ThreadPoolExecutor.java:886)
>>> 
>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(
>>> ThreadPoolExecutor.java:908)
>>> 
>>> at java.lang.Thread.run(Thread.java:680)
>>> 
>>> Oct 28, 2012 10:31:14 PM org.apache.catalina.core.StandardContext
>>> startInternal
>>> 
>>> SEVERE: Error listenerStart
>>> 
>>> Oct 28, 2012 10:31:14 PM org.apache.catalina.core.StandardContext
>>> startInternal
>>> 
>>> SEVERE: Context [/woookie] startup failed due to previous errors
>>> 
>>> 28.10.2012 22:31:14 INFO
>>> [org.apache.wookie.beans.jpa.JPAPersistenceManager.terminate():273]
>>> Terminated
>>> 
>>> 28.10.2012 22:31:14 INFO
>>> [org.apache.wookie.beans.util.PersistenceManagerFactory.terminate():247]
>>> Terminated
>>> 
>>> Oct 28, 2012 10:31:14 PM org.apache.catalina.loader.WebappClassLoader
>>> checkThreadLocalMapForLeaks
>>> 
>>> SEVERE: The web application [/woookie] created a ThreadLocal with key of
>>> type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@65988886])
>> and a
>>> value of type [org.apache.wookie.beans.jpa.JPAPersistenceManager] (value
>>> [org.apache.wookie.beans.jpa.JPAPersistenceManager@12b4986]) but failed
>> to
>>> remove it when the web application was stopped. Threads are going to be
>>> renewed over time to try and avoid a probable memory leak.
>>> 
>>> Oct 28, 2012 10:31:14 PM org.apache.catalina.startup.HostConfig
>>> deployDirectory
>>> 
>>> INFO: Deploying web application directory
>>> /Library/Tomcat/apache-tomcat-7.0.29/webapps/docs
>>> 
>>> Oct 28, 2012 10:31:14 PM org.apache.catalina.startup.HostConfig
>>> deployDirectory
>>> 
>>> INFO: Deploying web application directory
>>> /Library/Tomcat/apache-tomcat-7.0.29/webapps/examples
>>> 
>>> Oct 28, 2012 10:31:14 PM org.apache.catalina.core.ApplicationContext log
>>> 
>>> INFO: ContextListener: contextInitialized()
>>> 
>>> Oct 28, 2012 10:31:14 PM org.apache.catalina.core.ApplicationContext log
>>> 
>>> INFO: SessionListener: contextInitialized()
>>> 
>>> Oct 28, 2012 10:31:14 PM org.apache.catalina.core.ApplicationContext log
>>> 
>>> INFO: ContextListener:
>>> attributeAdded('org.apache.jasper.compiler.TldLocationsCache',
>>> 'org.apache.jasper.compiler.TldLocationsCache@dc44a6d')
>>> 
>>> Oct 28, 2012 10:31:14 PM org.apache.catalina.startup.HostConfig
>>> deployDirectory
>>> 
>>> INFO: Deploying web application directory
>>> /Library/Tomcat/apache-tomcat-7.0.29/webapps/host-manager
>>> 
>>> Oct 28, 2012 10:31:14 PM org.apache.catalina.loader.WebappClassLoader
>>> loadClass
>>> 
>>> INFO: Illegal access: this web application instance has been stopped
>>> already. Could not load org.apache.openjpa.kernel.ManagedCache. The
>>> eventual following stack trace is caused by an error thrown for debugging
>>> purposes as well as to attempt to terminate the thread which caused the
>>> illegal access, and has no functional impact.
>>> 
>>> java.lang.IllegalStateException
>>> 
>>> at org.apache.catalina.loader.WebappClassLoader.loadClass(
>>> WebappClassLoader.java:1597)
>>> 
>>> at org.apache.catalina.loader.WebappClassLoader.loadClass(
>>> WebappClassLoader.java:1556)
>>> 
>>> at org.apache.openjpa.kernel.BrokerImpl.free(BrokerImpl.java:4303)
>>> 
>>> at org.apache.openjpa.kernel.FinalizingBrokerImpl.finalize(
>>> FinalizingBrokerImpl.java:39)
>>> 
>>> at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
>>> 
>>> at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
>>> 
>>> at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
>>> 
>>> at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)
>>> 
>>> Oct 28, 2012 10:31:14 PM org.apache.catalina.startup.HostConfig
>>> deployDirectory
>>> 
>>> INFO: Deploying web application directory
>>> /Library/Tomcat/apache-tomcat-7.0.29/webapps/manager
>>> 
>>> Oct 28, 2012 10:31:15 PM org.apache.catalina.startup.HostConfig
>>> deployDirectory
>>> 
>>> INFO: Deploying web application directory
>>> /Library/Tomcat/apache-tomcat-7.0.29/webapps/ROOT
>>> 
>>> Oct 28, 2012 10:31:15 PM org.apache.coyote.AbstractProtocol start
>> 
>> 

Reply via email to