0 Replies Latest reply on May 16, 2008 2:59 AM by Mallikarjun SG

    Error in ejb-jar.xml for Entity Bean CMPHome: expected only

    Mallikarjun SG Newbie

      Error in ejb-jar.xml for Entity Bean CMPHome: expected only one prim-key-class tag

      Hi,

      There is an error during deployment as the error says "expected only one prim-key-class tag" in the ejb-jar.xml. Below is the ejb-jar.xml code.

      
      <?xml version="1.0" ?>
       <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://www.jboss.org/j2ee/dtd/ejb-jar_2_0.dtd">
      <ejb-jar>
       <enterprise-beans>
       <session>
       <ejb-name>Employee Session</ejb-name>
       <home>com.test.EmpHome</home>
       <remote>com.test.EmpRemote</remote>
       <ejb-class>com.test.EmpBean</ejb-class>
       <session-type>Stateful</session-type>
       <transaction-type>Bean</transaction-type>
       <ejb-local-ref>
       <description>This is the reference to the CMP bean</description>
       <ejb-ref-name>ejb/local/CMPHome</ejb-ref-name>
       <ejb-ref-type>Entity</ejb-ref-type>
       <local-home>com.test.CMPHome</local-home>
       <local>com.test.CMPRemote</local>
       <ejb-link>CMPHome</ejb-link>
       </ejb-local-ref>
       </session>
      
       <entity>
       <ejb-name>CMPHome</ejb-name>
       <local-home>com.test.CMPHome</local-home>
       <local>com.test.CMPRemote</local>
       <ejb-class>com.test.CMPBean</ejb-class>
       <persistence-type>Container</persistence-type>
       <cmp-version>2.x</cmp-version>
       <abstract-schema-name>Employee</abstract-schema-name>
       <prim-key-class>java.lang.String</prim-key-class>
       <reentrant>False</reentrant>
       <cmp-field>
       <field-name>id</field-name>
       </cmp-field>
       <cmp-field>
       <field-name>empId</field-name>
       </cmp-field>
       <cmp-field>
       <field-name>empName</field-name>
       </cmp-field>
       <primkey-field>id</primkey-field>
       <query>
       <description>Gets whole collection of Employees</description>
       <query-method>
       <method-name>findEmployee()</method-name>
       <method-params/>
       </query-method>
       <ejb-ql>Select OBJECT(r) From Employee r</ejb-ql>
       </query>
      
       <abstract-schema-name>Customer</abstract-schema-name>
       <prim-key-class>java.lang.Integer</prim-key-class>
       <reentrant>False</reentrant>
       <cmp-field>
       <field-name>cid</field-name>
       </cmp-field>
       <cmp-field>
       <field-name>custId</field-name>
       </cmp-field>
       <cmp-field>
       <field-name>custName</field-name>
       </cmp-field>
       <primkey-field>cid</primkey-field>
       <query>
       <description>Gets whole collection of Customer</description>
       <query-method>
       <method-name>findCustomer()</method-name>
       <method-params/>
       </query-method>
       <ejb-ql>Select OBJECT(a) From Customer a</ejb-ql>
       </query>
      
       </entity>
       </enterprise-beans>
      
       <assembly-descriptor>
       <container-transaction>
       <method>
       <ejb-name>CMPHome</ejb-name>
       <method-name>*</method-name>
       </method>
       <trans-attribute>Required</trans-attribute>
       </container-transaction>
       </assembly-descriptor>
      
      </ejb-jar>
      
      


      I want to code a program such that...my CMP Bean (using only one bean) should do transactions on two or more tables. The transactions can be INSERT, SELECT....etc, that why two prim key class tags are existing in the ejb-jar.xml. Which is the possible way to code as such.

      A Bean has to do transactions on multiple tables. Which is the best way to code in CMP?

      I would be thankful if I get a suggestion.

      Thank you,
      Mallikarjun.