CMP - failed to retrieve data from database - but NO exception..
Hi, I've developed this simple CMP to retrieve user Group information from database. It failed to retrieve data from database but no exception is thrown (Yes, I stepped through the code, nothing happenned). And now I'm kind of stuck without any error message to start debuggin with. So, I'm just asking for general advice/direction...
1. CLIENT side
Here's the Strut's action class ** ie. the CLIENT ** (yes, that's where they retrieve local proxy to CMP directly, as opposed to doing it thru a session bean):
2. The CMP GroupBean:Code:try { ... ... BasicConfigurator.configure(); logger.debug("PrepareLoginAction invoked"); context = new InitialContext(); Object ref = context.lookup(groupJNDI); home = (GroupLocalHome)PortableRemoteObject.narrow(ref, GroupLocalHome.class); ******** THAT's MY CMP local proxy: GroupLocal, Nothing is retrieved here but NO EXCEPTION ******** groups=home.findAllGroups(); ... return mapping.findForward("success"); ... } catch(Exception e) { ***** NO EXCEPTION CAUGHT ***** }
Code:/** * @author norman_lm_fung@hotmail.com * * @ejb.bean * name="GroupEJB" * local-jndi-name="ejb/UserGroup" * display-name="User Group EJB" * description="User Group EJB" * cmp-version="2.x" * type="CMP" * view-type="local" * schema="Group" * reentrant="false" * primkey-field="UIN" * * @ejb.persistence * table-name="GROUPS" * * @ejb.finder * query="SELECT OBJECT(g) FROM Group AS g" * signature="java.util.Collection findAllGroups()" NOTE: THIS FINDER IS NOT SENDING ANYTHING TO DATABASE. * * @ejb.interface * local-class="com.aa.samples.interfaces.GroupLocal" * * @ejb.home * local-class="com.aa.samples.interfaces.GroupLocalHome" * * @jboss.persistence * datasource="java:/jdbc/dev01" NOTE: JNDI name of the connection is "jdbc/dev01", as specified in "mysql-ds.xml" in JBoss deploy folder. I tried "java:jdbc/dev01" also - neither of the two works. * datasource-mapping="mySQL" * create-table="False" * remove-table="False" * table-name="GROUPS" * */ public abstract class GroupBean implements EntityBean { protected EntityContext etx; protected Logger logger =Logger.getLogger(GroupBean.class); /* * 1. Implementing Home interface */ /** * @param name * @ejb.create-method */ public Integer ejbCreate(String name, String description) throws CreateException { BasicConfigurator.configure(); logger.debug("GroupBean.ejbCreate invoked."); if(name==null) { throw new CreateException("name null"); } setName(name); setDescription(description); return null; } public void ejbPostCreate(String name, String description) throws CreateException { BasicConfigurator.configure(); logger.debug("GroupBean.ejbPostCreate invoked."); return; } /* * 2. Persistence methods: */ /** * @ejb.persistent-field * @ejb.persistence * column-name="UIN" * sql-type="INTEGER" * @ejb.pk-field * @ejb.interface-method */ public abstract Integer getUIN(); /** * @ejb.interface-method */ public abstract void setUIN(Integer UIN); /** * @ejb.persistent-field * @ejb.persistence * column-name="name" * sql-type="VARCHAR" * @ejb.interface-method */ public abstract String getName(); /** * @ejb.interface-method */ public abstract void setName(String name); /** * @ejb.persistent-field * @ejb.persistence * column-name="description" * sql-type="VARCHAR" * @ejb.interface-method */ public abstract String getDescription(); /** * @ejb.interface-method */ public abstract void setDescription(String description); /** * @ejb.persistent-field * @ejb.persistence * column-name="isSuspended" * sql-type="TINYINT" * @ejb.interface-method */ public abstract Boolean getIsSuspended(); /** * @ejb.interface-method */ public abstract void setIsSuspended(Boolean isSuspended); /* * 3. Implementing EntityBean interface: */ public void ejbRemove() throws RemoveException { BasicConfigurator.configure(); logger.debug("GroupBean.ejbRemove invoked."); return; } public void ejbLoad() { BasicConfigurator.configure(); logger.debug("GroupBean.ejbLoad invoked."); return; } public void ejbStore() { BasicConfigurator.configure(); logger.debug("GroupBean.ejbStore invoked."); return; } public void ejbActivate() { BasicConfigurator.configure(); logger.debug("GroupBean.ejbActivate invoked."); return; } public void ejbPassivate() { BasicConfigurator.configure(); logger.debug("GroupBean.ejbPassivate invoked."); return; } public void unsetEntityContext() { BasicConfigurator.configure(); logger.debug("GroupBean.unsetEntityContext invoked."); etx= null; return; } public void setEntityContext(EntityContext etx) { BasicConfigurator.configure(); logger.debug("GroupBean.setEntityContext invoked."); this.etx= etx; return; } }
3. SCREEN DUMP
4. mysql-ds.xmlCode:... ... lots of stuff... 23:15:41,553 INFO [RequestProcessor] Processing a 'POST' for path '/prepareLoginAction' 23:15:48,368 INFO [STDOUT] 461330 [http-0.0.0.0-8080-Processor25] DEBUG com.aa.samples.actions.PrepareLoginAction - PrepareLoginAction invoked ERROR: invalid console appender config detected, console stream is looping23:15:53,559 INFO [STDOUT] 466521 [http-0.0.0.0-8080-Processor25] DEBUG com.aa.samples.beans.GroupBean - GroupBean.setEntityContext invoked. 23:15:53,561 INFO [STDOUT] 466521 [http-0.0.0.0-8080-Processor25] DEBUG com.aa.samples.beans.GroupBean - GroupBean.setEntityContext invoked. 23:15:53,566 INFO [STDOUT] 466528 [http-0.0.0.0-8080-Processor25] DEBUG org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.GroupEJB#findAllGroups - Executing SQL: SELECT t0_g.UIN FROM GROUPEJB t0_g 23:15:53,568 INFO [STDOUT] 466528 [http-0.0.0.0-8080-Processor25] DEBUG org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.GroupEJB#findAllGroups - Executing SQL: SELECT t0_g.UIN FROM GROUPEJB t0_g ... nothing related to JDBC/exceptions...
I still haven't been able to get to the bottom of it. The only thing I know is that for sure my CMP "GroupBean" is sending nothing to target database. I used p6spy and intercepted anything to/from database.
5. XDoclet generated "jbosscmp--jdbc.xml" (NOTE: The datasource tag looks correct....)Code:<datasources> <local-tx-datasource> <jndi-name>jdbc/dev01</jndi-name> <connection-url>jdbc:mysql://127.0.0.1:3306/dev01</connection-url> <driver-class>com.p6spy.engine.spy.P6SpyDriver</driver-class> <user-name>someuser</user-name> <password>somepasswd</password> </local-tx-datasource> </datasources>
Code:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jbosscmp-jdbc PUBLIC "-//JBoss//DTD JBOSSCMP-JDBC 4.0//EN" "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_4_0.dtd"> <jbosscmp-jdbc> <defaults> </defaults> <enterprise-beans> <entity> <ejb-name>GroupEJB</ejb-name> <datasource>java:/jdbc/dev01</datasource> <datasource-mapping>mySQL</datasource-mapping> <table-name>GROUPS</table-name> <cmp-field> <field-name>UIN</field-name> <column-name>UIN</column-name> </cmp-field> <cmp-field> <field-name>name</field-name> <column-name>name</column-name> </cmp-field> <cmp-field> <field-name>description</field-name> <column-name>description</column-name> </cmp-field> <cmp-field> <field-name>isSuspended</field-name> <column-name>isSuspended</column-name> </cmp-field> </entity> </enterprise-beans> </jbosscmp-jdbc>
Any idea? Thanks in advance!


Reply With Quote


Bookmarks