CMP, JBoss & MySql problems
buzzfield Sep 6, 2004 7:06 PMHi there, I'm an EJB newbe striving with a problem. I'm trying to get a very simple CMP example taken from the book "Enterprise Java Beans" to work with JBoss 3.2.5 and MySql v.4.0.15 (with driver v. 3.0.11). So, Jboss sees my connection pretty well, since I made a few BMP Entity beans work flawlessly. However, when I try to deploy a CMP Bean, I keep getting an error: org.jboss.deployment.DeploymentException: Error in jbosscmp-jdbc.xml : datasource-mapping MySqlDS not found. I've tried out several solutions found on forums. Some of them allegedly worked, but not for me!!! Please, HELP!!!!!!!! I post my files below (at least the last attempt I made).
Thanks a lot!
_________________
mysql-ds.xml
_________________
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: mysql-ds.xml,v 1.1.2.1 2003/12/12 19:19:56 starksm Exp $ -->
<!-- Datasource config for MySQL using 3.0.9 available from:
http://www.mysql.com/downloads/api-jdbc-stable.html
-->
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/EJBDatabase</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
</local-tx-datasource>
_________________
ejb-jar.xml
_________________
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC
"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
CMP Customer Entity Bean
<display-name>Ship DB Application</display-name>
<enterprise-beans>
<!-- CMP Entity definition -->
<ejb-name>CustomerCMP</ejb-name>
CustomerCMP.CustomerHome
CustomerCMP.CustomerRemote
<ejb-class>CustomerCMP.CustomerBean</ejb-class>
<prim-key-class>java.lang.Integer</prim-key-class>
<persistence-type>Container</persistence-type>
false
<cmp-version>2.x</cmp-version>
<!-- Abstract schema for the CMP Bean -->
<abstract-schema-name>Customer</abstract-schema-name>
<cmp-field><field-name>id</field-name></cmp-field>
<cmp-field><field-name>lastName</field-name></cmp-field>
<cmp-field><field-name>firstName</field-name></cmp-field>
<cmp-field><field-name>hasGoodCredit</field-name></cmp-field>
<primkey-field>id</primkey-field>
<security-identity><use-caller-identity/></security-identity>
<!-- Define datasource to be used -->
<resource-ref>
<res-ref-name>jdbc/EJBDatabase</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</enterprise-beans>
<!-- Assembly descriptor -->
<assembly-descriptor>
<security-role>
<role-name>Employees</role-name>
</security-role>
<method-permission>
<role-name>Employees</role-name>
<ejb-name>CustomerCMP</ejb-name>
<method-name>*</method-name>
</method-permission>
<container-transaction>
<ejb-name>CustomerCMP</ejb-name>
<method-name>*</method-name>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
_________________
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>
jdbc/EJBDatabase
<datasource-mapping>MySqlDS</datasource-mapping>
<create-table>true</create-table>
<remove-table>true</remove-table>
<enterprise-beans>
<ejb-name>CustomerCMP</ejb-name>
<table-name>Customer</table-name>
<cmp-field>
<field-name>id</field-name>
<column-name>ID</column-name>
</cmp-field>
<cmp-field>
<field-name>lastName</field-name>
<column-name>LAST_NAME</column-name>
</cmp-field>
<cmp-field>
<field-name>firstName</field-name>
<column-name>FIRST_NAME</column-name>
</cmp-field>
<cmp-field>
<field-name>hasGoodCredit</field-name>
<column-name>HAS_GOOD_CREDIT</column-name>
</cmp-field>
</enterprise-beans>
</jbosscmp-jdbc>
_________________
jboss.xml
_________________
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.0//EN"
"http://www.jboss.org/j2ee/dtd/jboss_3_0.dtd">
<enterprise-beans>
<ejb-name>CustomerCMP</ejb-name>
<jndi-name>CustomerCMP</jndi-name> <!-- Chang Jndi name if you want
to use something else -->
<reference-descriptor>
<!-- Resource description for MySql datasource -->
<!-- Here we bind the actual DS to its jndi name -->
<!-- Specs must match those found in ejb-jar.xml <resource-ref>
descriptor -->
<!-- & descriptors found in jbosscmp-jdbc.xml and
jaws.xml -->
<resource-description>
<res-ref-name>jdbc/EJBDatabase</res-ref-name>
<jndi-name>java:/MySqlDS</jndi-name>
</resource-description>
</reference-descriptor>
</enterprise-beans>