MySQL & Pure-CMP --- issues w News & FAQ modules
hxp Apr 28, 2004 3:37 PMJae --
"hxp" wrote:"jae77" wrote:
i don't have oracle, mysql, or postgres running at home, so while i haven't had any issues creating tables in hsqldb, i don't know if someone else may have an issue. (i know for hsqldb, i have to set the pk-constraint to false, but this may not be necessary for the other dbs).
I have hsql on my home dev nukes inst, but have mysql on my rh9 linux box colo'd at the datacenter. Early tests show a bug with mysql and the nukes entity command; you'll see something more about this from me by the time you get back from Las Vegas.
"jae77" wrote:
i'm curious to know what the issue w/ the entity command is and how it relates to creating the tables themselves. i know hsqldb has an issue where you can't enable the pk-constraint when creating the tables. are you sure you're not missing something w/ the xdoclet/ant "config/setup?" i ask b/c we are generating successful deployments for other components and mysql.
I thought it might be quicker to see if your News code ran ok on MySQL before I try to describe the problem I was facing. I thought it would help me know whether my problems were limited to my way of doing things. And since you dont have MySQL handy, it might give you some good feedback.
I grabbed last nites CVS and built and deployed the News module and tested. I found different problems than the ones I've been seeing.
Since I know you have little time before flying to LV, here are the results, raw without me taking time to do analysis.
To start fresh, I bounced JBoss with these server.log results:
2004-04-28 15:44:37,994 INFO [STDOUT] Apache Tomcat/4.1.29 2004-04-28 15:44:38,114 INFO [org.apache.coyote.http11.Http11Protocol] Initializing Coyote HTTP/1.1 on port 8080 2004-04-28 15:44:38,138 INFO [org.apache.coyote.http11.Http11Protocol] Starting Coyote HTTP/1.1 on port 8080 2004-04-28 15:44:38,214 INFO [org.apache.jk.common.ChannelSocket] JK2: ajp13 listening on /0.0.0.0:8009 2004-04-28 15:44:38,339 INFO [org.apache.jk.server.JkMain] Jk running ID=0 time=1/144 config=null 2004-04-28 15:45:06,720 ERROR [org.jboss.nukes.system.JDBCPersistenceManager] Cannot sync attribute org.jboss.nukes.utils.ConversionException: A property editor has not been found for type java.util.Map at org.jboss.nukes.utils.Tools.findEditor(Tools.java:777) at org.jboss.nukes.utils.Tools.fromObject(Tools.java:831) at org.jboss.nukes.system.JDBCPersistenceManager.syncAttribute(JDBCPersistenceManager.java:102) at org.jboss.nukes.system.JDBCPersistenceManager.load(JDBCPersistenceManager.java:289) at org.jboss.nukes.system.JDBCPersistenceManager.load(JDBCPersistenceManager.java:320) at org.jboss.mx.modelmbean.ModelMBeanInvoker.load(ModelMBeanInvoker.java:237) at org.jboss.mx.modelmbean.ModelMBeanInvoker.initPersistence(ModelMBeanInvoker.java:413) at org.jboss.mx.modelmbean.ModelMBeanInvoker.preRegister(ModelMBeanInvoker.java:294) at org.jboss.mx.server.registry.BasicMBeanRegistry.registerMBean(BasicMBeanRegistry.java:148) at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.interceptor.ObjectReferenceInterceptor.invoke(ObjectReferenceInterceptor.java:59) at org.jboss.mx.interceptor.MBeanAttributeInterceptor.invoke(MBeanAttributeInterceptor.java:43) at org.jboss.mx.interceptor.PersistenceInterceptor2.invoke(PersistenceInterceptor2.java:93) ... 2004-04-28 15:45:07,175 WARN [javax.management.modelmbean.ModelMBeanAttributeInfo] WARNING: supplied isIS=true, set to false 2004-04-28 15:45:07,540 WARN [javax.management.modelmbean.ModelMBeanAttributeInfo] WARNING: supplied isIS=true, set to false 2004-04-28 15:45:10,157 INFO [org.jboss.system.server.Server] JBoss (MX MicroKernel) [3.2.3 (build: CVSTag=JBoss_3_2_3 date=200311301445)] Started in 37s:768ms 2004-04-28 15:45:16,176 ERROR [org.jboss.ejb.EntityContainer] Starting failed org.jboss.deployment.DeploymentException: Error while creating table nuke_news_topics; - nested throwable: (java.sql.SQLException: Invalid argument value, message from server: "Incorrect table definition; There can only be one auto column and it must be defined as a key") at org.jboss.ejb.plugins.cmp.jdbc.JDBCStartCommand.createTable(JDBCStartCommand.java:232) at org.jboss.ejb.plugins.cmp.jdbc.JDBCStartCommand.execute(JDBCStartCommand.java:93) at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.startStoreManager(JDBCStoreManager.java:484) at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.start(JDBCStoreManager.java:388) at org.jboss.ejb.plugins.CMPPersistenceManager.start(CMPPersistenceManager.java:152) at org.jboss.ejb.EntityContainer.startService(EntityContainer.java:342) at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:192) ... Caused by: java.sql.SQLException: Invalid argument value, message from server: "Incorrect table definition; There can only be one auto column and it must be defined as a key" at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1876) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1098) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1192) at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1153) at com.mysql.jdbc.Connection.execSQL(Connection.java:2048) at com.mysql.jdbc.Connection.execSQL(Connection.java:2005) at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1252) at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1198) at org.jboss.resource.adapter.jdbc.WrappedStatement.executeUpdate(WrappedStatement.java:262) at org.jboss.ejb.plugins.cmp.jdbc.JDBCStartCommand.createTable(JDBCStartCommand.java:219) ... 55 more
"Cannot invoke the operation : the module threw an exception " or "An error has occured" was the response for most News related invocations.
After click on "News" item in menu block:
2004-04-28 16:06:43,752 ERROR [org.jboss.ejb.plugins.LogInterceptor] TransactionRolledbackLocalException in method: public abstract java.util.Collection org.jboss.nukes.addons.modules.news.ejb.StoryEJBLocalHome.findByState(java.lang.Integer) throws javax.ejb.FinderException, causedBy: java.lang.IllegalStateException: createBeanClassInstanceCommand == null at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.createBeanClassInstance(JDBCStoreManager.java:542) at org.jboss.ejb.plugins.CMPPersistenceManager.createBeanClassInstance(CMPPersistenceManager.java:119) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.createBeanClassInstance(CachedConnectionInterceptor.java:250) at org.jboss.ejb.EntityContainer.createBeanClassInstance(EntityContainer.java:226) at org.jboss.ejb.plugins.AbstractInstancePool.get(AbstractInstancePool.java:168) at org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInterceptor.java:77) at org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome(EntityLockInterceptor.java:61) at org.jboss.ejb.plugins.EntityCreationInterceptor.invokeHome(EntityCreationInterceptor.java:28) at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:88) at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:267) at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:98) at org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:92) at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:120) at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invokeHome(ProxyFactoryFinderInterceptor.java:93) at org.jboss.ejb.EntityContainer.internalInvokeHome(EntityContainer.java:483) at org.jboss.ejb.Container.invoke(Container.java:720) at org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invokeHome(BaseLocalProxyFactory.java:293) at org.jboss.ejb.plugins.local.LocalHomeProxy.invoke(LocalHomeProxy.java:110) at $Proxy171.findByState(Unknown Source) at org.jboss.nukes.addons.modules.news.NewsModule.getStories(NewsModule.java:1382) at org.jboss.nukes.addons.modules.news.NewsModule.main(NewsModule.java:406) 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:324) at org.jboss.nukes.module.ModuleSupport.operation(ModuleSupport.java:117) at org.jboss.nukes.module.ModuleSupport.process(ModuleSupport.java:91) 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:324) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.interceptor.ObjectReferenceInterceptor.invoke(ObjectReferenceInterceptor.java:59) at org.jboss.mx.interceptor.MBeanAttributeInterceptor.invoke(MBeanAttributeInterceptor.java:43) at org.jboss.mx.interceptor.PersistenceInterceptor2.invoke(PersistenceInterceptor2.java:93) at org.jboss.nukes.mx.LifeCycleInterceptor.invoke(LifeCycleInterceptor.java:93) at org.jboss.mx.server.MBeanInvoker.invoke(MBeanInvoker.java:76) ... 2004-04-28 16:06:43,776 ERROR [org.jboss.nukes.component.Component.news] Cannot invoke operation javax.ejb.TransactionRolledbackLocalException: createBeanClassInstanceCommand == null; CausedByException is: createBeanClassInstanceCommand == null at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:204) at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:267) at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:98) at org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:92) at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:120) at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invokeHome(ProxyFactoryFinderInterceptor.java:93) at org.jboss.ejb.EntityContainer.internalInvokeHome(EntityContainer.java:483) at org.jboss.ejb.Container.invoke(Container.java:720) ... java.lang.IllegalStateException: createBeanClassInstanceCommand == null at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.createBeanClassInstance(JDBCStoreManager.java:542) at org.jboss.ejb.plugins.CMPPersistenceManager.createBeanClassInstance(CMPPersistenceManager.java:119) ....
NewsAdmin link successfully brought up
http://www.glassroutes.com:8080/nukes/index.html?module=news&op=admin
manage topics brought up
http://www.glassroutes.com:8080/nukes/index.html?module=news&op=topicadmin
but log shows:
2004-04-28 16:18:53,668 ERROR [org.jboss.nukes.component.Component.news] javax.ejb.FinderException: Unknown query: public abstract java.util.Collection org.jboss.nukes.addons.modules.news.ejb.TopicEJBLocalHome.findAll() throws javax.ejb.FinderException at org.jboss.ejb.plugins.cmp.jdbc.JDBCQueryManager.getQueryCommand(JDBCQueryManager.java:60) at org.jboss.ejb.plugins.cmp.jdbc.JDBCFindEntitiesCommand.execute(JDBCFindEntitiesCommand.java:37) at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.findEntities(JDBCStoreManager.java:579) at org.jboss.ejb.plugins.CMPPersistenceManager.findEntities(CMPPersistenceManager.java:311) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.findEntities(CachedConnectionInterceptor.java:322) at org.jboss.ejb.EntityContainer.findLocal(EntityContainer.java:613)
Add Topic button >>> "An error occured"
log:
2004-04-28 16:21:25,800 ERROR [org.jboss.ejb.plugins.cmp.jdbc.keygen.JDBCMySQLCreateCommand.TopicEJB] Could not create entity java.sql.SQLException: General error, message from server: "Table 'nukes.nuke_news_topics' doesn't exist" at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1876) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1098) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1192) at com.mysql.jdbc.Connection.execSQL(Connection.java:2051) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1680) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1527) at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:324) at org.jboss.ejb.plugins.cmp.jdbc.keygen.JDBCMySQLCreateCommand.executeInsert(JDBCMySQLCreateCommand.java:66) at org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractCreateCommand.performInsert(JDBCAbstractCreateCommand.java:287) at org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractCreateCommand.execute(JDBCAbstractCreateCommand.java:138) at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.createEntity(JDBCStoreManager.java:554) at org.jboss.ejb.plugins.CMPPersistenceManager.createEntity(CMPPersistenceManager.java:208)...
Sorry for not giving more, but I'm racing against the clock; client's flying in from Mexico City in a few hours; signing off till the weekend.
-- Howard