After working around the issue, I found I cannot fix it. It might be caused by OpenJPA Eclipse plugin enhancer. I am going to use Ant for build and deploy.
Scott, is there any guide for using Ant? The first thing I am thinking was how to tell Ant the location of the Tomcat? Thank you. On Sat, Nov 3, 2012 at 7:47 PM, Leon Wu <[email protected]> wrote: > Thank you for the quick response, Scott. > > After googling, OpenJPA has a eclipse plugin and it does the enhancement > for me (http://openjpa.apache.org/openjpaeclipseinstallation.html). > Following the steps from that link, the problem is fixed. > Now, I am face another problem. > > 03.11.2012 19:45:34 ERROR > [org.apache.wookie.beans.jpa.JPAPersistenceManager.findWidgetByGuid():638] > Unexpected exception: <openjpa-2.0.0-r422266:935683 nonfatal user error> > org.apache.openjpa.persistence.ArgumentException: An error occurred while > parsing the query filter "SELECT w FROM Widget w WHERE w.guid = :guid". > Error message: The name "Widget" is not a recognized entity or identifier. > Perhaps you meant WidgetImpl, which is a close match. Known entity names: > [LicenseImpl, OAuthTokenImpl, SharedDataImpl, NameImpl, > PreferenceDefaultImpl, LocalizedBeanImpl, DescriptionImpl, AuthorImpl, > WidgetIconImpl, WidgetImpl, ParticipantImpl, PreferenceImpl, > WidgetInstanceImpl, FeatureImpl, StartFileImpl, ParamImpl] > > <openjpa-2.0.0-r422266:935683 nonfatal user error> > org.apache.openjpa.persistence.ArgumentException: An error occurred while > parsing the query filter "SELECT w FROM Widget w WHERE w.guid = :guid". > Error message: The name "Widget" is not a recognized entity or identifier. > Perhaps you meant WidgetImpl, which is a close match. Known entity names: > [LicenseImpl, OAuthTokenImpl, SharedDataImpl, NameImpl, > PreferenceDefaultImpl, LocalizedBeanImpl, DescriptionImpl, AuthorImpl, > WidgetIconImpl, WidgetImpl, ParticipantImpl, PreferenceImpl, > WidgetInstanceImpl, FeatureImpl, StartFileImpl, ParamImpl] > > at org.apache.openjpa.kernel.exps.AbstractExpressionBuilder.parseException( > AbstractExpressionBuilder.java:119) > > at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData( > JPQLExpressionBuilder.java:194) > > at > org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData( > JPQLExpressionBuilder.java:167) > > at > org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData( > JPQLExpressionBuilder.java:242) > > at > org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData( > JPQLExpressionBuilder.java:212) > > at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateType( > JPQLExpressionBuilder.java:205) > > at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.access$200( > JPQLExpressionBuilder.java:81) > > at > org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.populate( > JPQLExpressionBuilder.java:2387) > > at org.apache.openjpa.kernel.jpql.JPQLParser.populate(JPQLParser.java:61) > > at org.apache.openjpa.kernel.ExpressionStoreQuery.populateFromCompilation( > ExpressionStoreQuery.java:154) > > at org.apache.openjpa.kernel.QueryImpl.newCompilation(QueryImpl.java:671) > > at org.apache.openjpa.kernel.QueryImpl.compilationFromCache( > QueryImpl.java:652) > > at org.apache.openjpa.kernel.QueryImpl.compileForCompilation( > QueryImpl.java:618) > > at org.apache.openjpa.kernel.QueryImpl.compileForExecutor( > QueryImpl.java:680) > > at org.apache.openjpa.kernel.QueryImpl.compile(QueryImpl.java:587) > > at org.apache.openjpa.persistence.EntityManagerImpl.createNamedQuery( > EntityManagerImpl.java:1027) > > at org.apache.openjpa.persistence.EntityManagerImpl.createNamedQuery( > EntityManagerImpl.java:100) > > at org.apache.wookie.beans.jpa.JPAPersistenceManager.findWidgetByGuid( > JPAPersistenceManager.java:629) > > at org.apache.wookie.beans.util.PersistenceManagerFactory.initialize( > PersistenceManagerFactory.java:85) > > 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) > > Nov 3, 2012 7:45:34 PM org.apache.catalina.core.StandardContext > listenerStart > > SEVERE: Exception sending context initialized event to listener instance > of class org.apache.wookie.server.ContextListener > > <openjpa-2.0.0-r422266:935683 fatal user error> > org.apache.openjpa.persistence.InvalidStateException: The field "guid" of > instance "org.apache.wookie.beans.jpa.impl.WidgetImpl@3f4a0fe1" contained > a null value; the metadata for this field specifies that nulls are illegal. > > at org.apache.openjpa.kernel.SingleFieldManager.preFlush( > SingleFieldManager.java:553) > > at org.apache.openjpa.kernel.SingleFieldManager.preFlush( > SingleFieldManager.java:491) > > at org.apache.openjpa.kernel.StateManagerImpl.preFlush( > StateManagerImpl.java:2957) > > at org.apache.openjpa.kernel.PNewState.beforeFlush(PNewState.java:40) > > at org.apache.openjpa.kernel.StateManagerImpl.beforeFlush( > StateManagerImpl.java:1047) > > at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2077) > > at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2037) > > at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion( > BrokerImpl.java:1955) > > at org.apache.openjpa.kernel.LocalManagedRuntime.commit( > LocalManagedRuntime.java:81) > > at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1479) > > at org.apache.openjpa.kernel.DelegatingBroker.commit( > DelegatingBroker.java:925) > > at org.apache.openjpa.persistence.EntityManagerImpl.commit( > EntityManagerImpl.java:559) > > at org.apache.wookie.beans.jpa.JPAPersistenceManager.commit( > JPAPersistenceManager.java:340) > > at org.apache.wookie.beans.util.PersistenceManagerFactory.initialize( > PersistenceManagerFactory.java:138) > > 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) > > Nov 3, 2012 7:45:34 PM org.apache.catalina.core.StandardContext > startInternal > > SEVERE: Error listenerStart > > > On Sat, Nov 3, 2012 at 7:23 PM, Scott Wilson < > [email protected]> wrote: > >> On 3 Nov 2012, at 22:18, Leon Wu wrote: >> >> > This is the first time of dealing with javaagent and just do the >> exception >> > asks. >> > I am just doing the classical way to run the wookie in Eclipse - >> importing >> > wookie, adding it to the Tomcat server and starting the Tomcat. >> > Should I use ant build to get the wookie.war and put the war in Tomcat? >> >> That would probably be easier - I've never tried running it directly out >> of Eclipse using the Tomcat before - I presume this is the Eclipse web >> toolkit? >> >> There is an ant task specifically for building and deploying Wookie using >> Tomcat (or similar): >> >> ant deploy-webapp >> >> ... which will deploy it to wherever servletEngine.webapp.dir in >> build.properties is set to. >> >> > >> > >> > On Sat, Nov 3, 2012 at 2:26 PM, Scott Wilson < >> [email protected] >> >> wrote: >> > >> >> >> >> On 3 Nov 2012, at 15:32, Leon Wu wrote: >> >> >> >>> Thank you, Scott. It was missmatch issue. >> >>> But, I got another problem. I added javaagent but still got this >> error. >> >> >> >> I don't really know anything about Javaagent; the bean enhancement is >> done >> >> automatically by OpenJPA during the Ant build and compile process. >> >> >> >>> <openjpa-2.0.0-r422266:935683 nonfatal user error> >> >>> org.apache.openjpa.util.UserException: This configuration disallows >> >> runtime >> >>> optimization, but the following listed types were not enhanced at >> build >> >>> time or at class load time with a javaagent: " >> >>> org.apache.wookie.beans.jpa.impl.ParamImpl >> >>> org.apache.wookie.beans.jpa.impl.FeatureImpl >> >>> org.apache.wookie.beans.jpa.impl.WidgetIconImpl >> >>> org.apache.wookie.beans.jpa.impl.PreferenceDefaultImpl >> >>> org.apache.wookie.beans.jpa.impl.OAuthTokenImpl >> >>> org.apache.wookie.beans.jpa.impl.LocalizedBeanImpl >> >>> org.apache.wookie.beans.jpa.impl.WidgetInstanceImpl >> >>> org.apache.wookie.beans.jpa.impl.WidgetImpl >> >>> org.apache.wookie.beans.jpa.impl.ParticipantImpl >> >>> org.apache.wookie.beans.jpa.impl.DescriptionImpl >> >>> org.apache.wookie.beans.jpa.impl.PreferenceImpl >> >>> org.apache.wookie.beans.jpa.impl.SharedDataImpl >> >>> org.apache.wookie.beans.jpa.impl.AuthorImpl >> >>> org.apache.wookie.beans.jpa.impl.LicenseImpl >> >>> org.apache.wookie.beans.jpa.impl.NameImpl >> >>> org.apache.wookie.beans.jpa.impl.StartFileImpl". >> >>> >> >>> >> >>> >> >>> >> >>> >> >>> On Fri, Nov 2, 2012 at 5:33 AM, Scott Wilson < >> >> [email protected] >> >>>> wrote: >> >>> >> >>>> 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? >> >>>> >> >>>> >> >> >> >> >> >> >
