On 4 Nov 2012, at 02:27, Leon Wu wrote: > 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?
This particular configuration is described at: http://incubator.apache.org/wookie/docs/developer/running.html Under "Running Wookie with Tomcat and MySQL" > > 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? >>>>>>> >>>>>>> >>>>> >>>>> >>> >>> >>
