Thanks ! I can now deploy the application to Jboss successfully.
However, there is an exception when I can call the "findAll()" function in CMP thru'
JSP.
11:20:09,734 ERROR [User#findAll] Find failed
java.sql.SQLException: Table 'irs.xuser' doesn't exist
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2921)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1570)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2978)
I haven't defined any sql setting like 'irs.xuser' and I don't know where it come from. Seems it is generated by xdoclet or EJBQL.
"irs" is the mySQL database name of my application and 'user' should be the valid table name of my bean
Below please find my program setting
[UserBean]
.....
import ....
/**
* @ejb.bean name="User"
* display-name="Name for User"
* description="Description for User"
* jndi-name="ejb/User"
* type="CMP"
* cmp-version="2.x"
* view-type="both"
*
* @ejb.persistence table-name = "user"
*
* @ejb.transaction type= "Required"
*
* @ejb.finder
* signature="java.util.Collection findAll()"
* query="SELECT OBJECT(u) FROM User AS u"
*
*/
public abstract class UserBean implements EntityBean {
private EntityContext _context;
public UserBean() {
super();
// TODO Auto-generated constructor stub
}
........
[ejb-jar]
.....
<!-- Entity Beans -->
<entity >
<description><![CDATA[Description for User]]></description>
<display-name>Name for User</display-name>
<ejb-name>User</ejb-name>
<home>tutorial.interfaces.UserHome</home>
<remote>tutorial.interfaces.User</remote>
<local-home>tutorial.interfaces.UserLocalHome</local-home>
<local>tutorial.interfaces.UserLocal</local>
<ejb-class>tutorial.ejb.UserCMP</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>tutorial.interfaces.UserPK</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>User</abstract-schema-name>
<cmp-field >
<description><![CDATA[Getter for CMP Field userid]]></description>
<field-name>userid</field-name>
</cmp-field>
<cmp-field >
<description><![CDATA[Getter for CMP Field password]]></description>
<field-name>password</field-name>
</cmp-field>
<cmp-field >
<description><![CDATA[Getter for CMP Field group]]></description>
<field-name>group</field-name>
</cmp-field>
<query>
<query-method>
<method-name>findAll</method-name>
<method-params>
</method-params>
</query-method>
<ejb-ql><![CDATA[SELECT OBJECT(c) FROM User AS c]]></ejb-ql>
</query>
<!-- Write a file named ejb-finders-UserBean.xml if you want to define extra finders. -->
</entity>
.......
[jbosscmp-jdbc.xml]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jbosscmp-jdbc PUBLIC "-//JBoss//DTD JBOSSCMP-JDBC 3.0//EN" "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_0.dtd">
<jbosscmp-jdbc>
<defaults>
<datasource>
java:/MySqlDS</datasource>
<datasource-mapping>mySQL</datasource-mapping>
<create-table>false</create-table>
</defaults>
<enterprise-beans>
<!--
To add beans that you have deployment descriptor info for, add
a file to your XDoclet merge directory called jbosscmp-jdbc-beans.xml
that contains the <entity></entity> markup for those beans.
-->
<entity>
<ejb-name>User</ejb-name>
<cmp-field>
<field-name>userid</field-name>
<column-name>userid</column-name>
</cmp-field>
<cmp-field>
<field-name>password</field-name>
<column-name>password</column-name>
</cmp-field>
<cmp-field>
<field-name>group</field-name>
<column-name>group</column-name>
</cmp-field>
</entity>
</enterprise-beans>
</jbosscmp-jdbc>
Thanks
Ivan