Hello,

I am running JBoss3.0.0RC2_Tomcat4.0.3 against Firebird 1.0 on Mac OS X 
10.1.4.  I was trying to deploy a simple Customer EJB which has a cmr to 
a ShippingAddress.  I get the following error:

org.jboss.deployment.DeploymentException: error in create of EjbModule: 
file:/jboss-3.0.0RC2/server/default/deploy/ad-ejb.jar; - nested 
throwable: (org.jboss.deployment.DeploymentException: Atleast one role 
of a foreign-key mapped relationship must have key fields: 
ejb-relation-name=Customer-DefaultShippingAddress)
         at org.jboss.ejb.EJBDeployer.create(EJBDeployer.java:380)
         at 
org.jboss.deployment.MainDeployer.create(MainDeployer.java:651)
         at 
org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:526)
         at 
org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:490)
         at java.lang.reflect.Method.invoke(Native Method)
         at 
org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke
(ReflectedMBeanDispatcher.java:284)
         at 
org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:491)
         at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
         at $Proxy4.deploy(Unknown Source)
         at 
org.jboss.deployment.scanner.URLDeploymentScanner.deploy
(URLDeploymentScanner.java:405)
         at 
org.jboss.deployment.scanner.URLDeploymentScanner.scanDirectory
(URLDeploymentScanner.java:586)
         at 
org.jboss.deployment.scanner.URLDeploymentScanner.scan
(URLDeploymentScanner.java:465)
         at 
org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(
AbstractDeploymentScanner.java:202)
         at 
org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run
(AbstractDeploymentScanner.java:191)

The cmr XML description:

       <ejb-relation >
          <ejb-relation-name>Customer-
DefaultShippingAddress</ejb-relation-name>
          <!-- unidirectional -->
          <ejb-relationship-role >
             <ejb-relationship-role-
name>Customer-has-DefaultShippingAddress</ejb-relationship-role-name>
             <multiplicity>One</multiplicity>
             <relationship-role-source >
                <ejb-name>Customer</ejb-name>
             </relationship-role-source>
             <cmr-field >
                <cmr-field-name>defaultShippingAddress</cmr-field-name>
             </cmr-field>
          </ejb-relationship-role>
          <ejb-relationship-role >
             <ejb-relationship-role-
name>DefaultShippingAddress-belongs-to-
Customer</ejb-relationship-role-name>
             <multiplicity>One</multiplicity>
             <relationship-role-source >
                <ejb-name>Address</ejb-name>
             </relationship-role-source>
          </ejb-relationship-role>
       </ejb-relation>

Seems correct.  Does anyone know what "key" the deployer is 
referencing?  XDoclet source is below.

Thanks for any help,

James Richards

++++++++++++++++++++

package com.mycorp.ejb.customer;

import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import javax.ejb.CreateException;

import com.mycorp.ejb.address.AddressLocal;

/**
  * A general purpose Customer bean.
  *
  * Uses XDoclet based tagging: http://xdoclet.sourceforge.net
  *
  * @ejb:bean name="Customer"
  *            type="CMP"
  *            jndi-name="ejb/mycorp/Customer"
  *            local-jndi-name="CustomerLocal"
  *            view-type="both"
  *            primkey-field="id"
  *            cmp-version="2.x"
  *            schema="Customer"
  *
  * @ejb:pk class="java.lang.Integer"
  *
  * @ejb:home generate="both"
  *           remote-class="com.mycorp.ejb.customer.CustomerHome"
  *           local-class="com.mycorp.ejb.customer.CustomerLocalHome"
  *
  * @jboss:table-name="customer"
  * @jboss:create-table="true"
  * @jboss:remove-table="true"
  * @jboss:tuned-updates="true"
  * @jboss:read-only="false"
  *
  */
public abstract class CustomerBean implements EntityBean {

     EntityContext context;

     /**
      * A customer must have shipping/billing addresses prior to creation.
      *
      * @ejb:create-method
      */
     public java.lang.Integer ejbCreate(Integer id,
                                        AddressLocal defaultShipping
                                       ) throws 
javax.ejb.CreateException {
        setId(id);
        return null;
     }

     public void ejbPostCreate(Integer id,
                               AddressLocal defaultShipping
                              ) {
        setDefaultShippingAddress(defaultShipping);
     }

     /**
      * @ejb:pk-field
      * @ejb:persistent-field
      * @ejb:interface-method
      */
     public abstract Integer getId();
     /**
      * NOT a remote method
      */
     public abstract void setId(Integer id);


     /**
      * @ejb:interface-method
      * @ejb:relation name="Customer-DefaultShippingAddress"
      *               role-name="Customer-has-DefaultShippingAddress"
      *               target-ejb="Address"
      *               target-role-
name="DefaultShippingAddress-belongs-to-Customer"
      */
     public abstract AddressLocal getDefaultShippingAddress();
     /**
      * @ejb:interface-method
      */
     public abstract void setDefaultShippingAddress(AddressLocal 
shippingAddress);
}


_______________________________________________________________

Have big pipes? SourceForge.net is looking for download mirrors. We supply
the hardware. You get the recognition. Email Us: [EMAIL PROTECTED]
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to