Link to home
Start Free TrialLog in
Avatar of Dada44
Dada44Flag for Spain

asked on

Understanding CMR

Hi,

I've been looking for a site or a book where to learn CMR but I'm getting crazy, all the examples are too long and complicated for me to understand.

Why do I need CMR?
Well, I have two tables in my database: Tickets and Concerts. If I want to calculate the number of tickets demanded for one concert .. I suppose I need to relate Tickets and Concerts beans .. but how? What fields should I create in the tables?

I'm starting to use jBuilder and creating the relationship, once I understand what fields I have to use, is not a problem but what is a mystery to me is: after creating the fields in database and the relationship in between the beans, what's next? which is the code I have to use in the servlet in order to manage the relationship? And what about the transactions? How are they used within CMR?

Thanks a million in advance
ASKER CERTIFIED SOLUTION
Avatar of zzynx
zzynx
Flag of Belgium image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Dada44

ASKER

Thanks a lot. I’ve been studying the examples and I’ve created an example myself in order to apply it .. everything seems to be ok but I get an “ejb not bound” error all the time, no matter what I change.

Maybe you can help me, the example I’ve written is about to get all books from a book category (Fiction for example)
This is the jsp:


<%@page import="java.util.*,javax.transaction.*,javax.naming.*, folder.*" %>
<%
      Context ctx = new InitialContext();
      CategoryHome ch = (CategoryHome) ctx.lookup("ejb/Category");
      Category c = ch.findByPrimaryKey("Fiction");
     
      UserTransaction ut =  (UserTransaction) ctx.lookup("java:comp/UserTransaction");
      ut.begin();
      
      Collection books = c.getBook();
       %>
       
       <b>Books within the category  <%= c.getCategoryName() %></b><br>
       
         <%      Iterator it=books.iterator();
            while(it.hasNext())
            {
                  Book b=(Book)it.next();

        %>
       
<%=b.getBookName()%>

 <% }
         ut.commit();

   %>    



JBOSS.XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.2//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd">
<jboss>
  <enterprise-beans>
    <entity>
      <ejb-name>Book</ejb-name>
      <jndi-name>Folder/BookRemote</jndi-name>
      <local-jndi-name>Book</local-jndi-name>
    </entity>
    <entity>
      <ejb-name>Category</ejb-name>
      <jndi-name>ejb/Category</jndi-name>
      <local-jndi-name>Category</local-jndi-name>
    </entity>
  </enterprise-beans>
</jboss>

EJB-JAR.XML (roughly)

<ejb-jar>
  <relationships>
    <ejb-relation>
      <ejb-relation-name>book-category</ejb-relation-name>
      <ejb-relationship-role>
        <description>book</description>
        <ejb-relationship-role-name>BookRelationshipRole</ejb-relationship-role-name>
        <multiplicity>Many</multiplicity>
        <relationship-role-source>
          <description>book</description>
          <ejb-name>Book</ejb-name>
        </relationship-role-source>
        <cmr-field>
          <description>category</description>
          <cmr-field-name>category</cmr-field-name>
        </cmr-field>
      </ejb-relationship-role>
      <ejb-relationship-role>
        <description>category</description>
        <ejb-relationship-role-name>CategoryRelationshipRole</ejb-relationship-role-name>
        <multiplicity>One</multiplicity>
        <relationship-role-source>
          <description>category</description>
          <ejb-name>Category</ejb-name>
        </relationship-role-source>
        <cmr-field>
          <description>book</description>
          <cmr-field-name>book</cmr-field-name>
          <cmr-field-type>java.util.Collection</cmr-field-type>
        </cmr-field>
      </ejb-relationship-role>
    </ejb-relation>
  </relationships>
  <assembly-descriptor>
    <container-transaction>
      <method>
        <ejb-name>Book</ejb-name>
        <method-name>*</method-name>
      </method>
      <trans-attribute>Supports</trans-attribute>
    </container-transaction>
    <container-transaction>
      <method>
        <ejb-name>Category</ejb-name>
        <method-name>*</method-name>
      </method>
      <trans-attribute>Supports</trans-attribute>
    </container-transaction>
  </assembly-descriptor>
</ejb-jar>