Hi--

I'm trying to configure jboss 3.0.4 w/tomcat4.1.12 for CMR for two tables in
our Oracle DB.  I use xdoclet1.1.2 to generate the interface and bean
classes.  I have managed CMP for both tables that I'm using, but am having
some trouble joining the two for CMR.

Apologies in advance for the deluge of xml and code you are about to see...
:)

The bean is deployed just fine, but the following error stack is generated
when I try to use the one bean to get the many bean via a Collection:

eBillClient caught an unexpected exception!
java.lang.reflect.UndeclaredThrowableException
        at $Proxy1.getSubscribers(Unknown Source)
        at client.eBill.eBillClient.main(eBillClient.java:54)
Caused by: java.io.NotSerializableException:
org.jboss.ejb.plugins.cmp.jdbc.bridge.RelationSet
        at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)
        at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
        at java.rmi.MarshalledObject.<init>(MarshalledObject.java:92)
        at
org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:387)
        at sun.reflect.GeneratedMethodAccessor42.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
        at sun.rmi.transport.Transport$1.run(Transport.java:148)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
        at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
        at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:7
01)
        at java.lang.Thread.run(Thread.java:536)
        at
sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteC
all.java:247)

        at
sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
        at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:133)
        at org.jboss.invocation.jrmp.server.JRMPInvoker_Stub.invoke(Unknown
Source)
        at
org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.invoke(JRMPInvokerProx
y.java:138)
        at
org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:108)
        at
org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:77
)
        at
org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:80)
        at
org.jboss.proxy.ejb.EntityInterceptor.invoke(EntityInterceptor.java:116)
        at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:76)
        ... 2 more

Here is the relationship from ejb-jar.xml:
   <!-- Relationships -->
   <relationships >
      <ejb-relation >
         <ejb-relation-name>customer-subscriber</ejb-relation-name>
         <!-- bidirectional -->
         <ejb-relationship-role >
 
<ejb-relationship-role-name>customer-has-subscribers</ejb-relationship-role-
name>
            <multiplicity>One</multiplicity>
            <relationship-role-source >
               <ejb-name>account/customerBean</ejb-name>
            </relationship-role-source>
            <cmr-field >
               <cmr-field-name>subscribers</cmr-field-name>
               <cmr-field-type>java.util.Collection</cmr-field-type>
            </cmr-field>
         </ejb-relationship-role>
         <ejb-relationship-role >
 
<ejb-relationship-role-name>subscriber-belongs-to-customer</ejb-relationship
-role-name>
            <multiplicity>Many</multiplicity>
            <relationship-role-source >
               <ejb-name>account/subscriberBean</ejb-name>
            </relationship-role-source>
            <cmr-field >
               <cmr-field-name>customer</cmr-field-name>
            </cmr-field>
         </ejb-relationship-role>
      </ejb-relation>
   </relationships>

Here is the relationship from jbosscmp-jdbc.xml:
  <relationships>
    <ejb-relation>
      <ejb-relation-name>customer-subscriber</ejb-relation-name>
      <foreign-key-mapping/>
      <ejb-relationship-role>
 
<ejb-relationship-role-name>customer-has-subscribers</ejb-relationship-role-
name>
          <key-fields>
             <key-field>
               <field-name>customerId</field-name>
               <column-name>customer_id</column-name>
             </key-field>
          </key-fields>
      </ejb-relationship-role>
      <ejb-relationship-role>
 
<ejb-relationship-role-name>subscriber-belongs-to-customer</ejb-relationship
-role-name>
          <key-fields/>
      </ejb-relationship-role>
    </ejb-relation>
  </relationships>

Here is the customer bean w/xdoclet tags:
package com.uscc.account.entity;

// uscc ejb imports
import com.uscc.ejb.entity.defaultEntityBean;

// util imports
import java.util.Collection;

/**
*
*       // begin class level xdoclet attributes
*       @ejb:bean name="account/customerBean"
*               display-name="General customer and BAN information"
*               jndi-name="com/uscc/account/entity/customerBean"
*               view-type="remote"
*               type="CMP"
*               schema="account"
*
*       @ejb:home extends="javax.ejb.EJBHome"
*       @ejb:interface extends="javax.ejb.EJBObject"
*
*       @ejb:pk extends="java.lang.Object"
*
*       @ejb:transaction type="Required"
*
*       // begin jboss xdoclet attributes
*       @jboss:datasource name="OracleDB"
*
*       @jboss:table-name table-name="customer"
*/
public abstract class customerBean extends defaultEntityBean
{
        /**
        *       @ejb:interface-method view="remote"
        *       @ejb:persistent-field
        *       @ejb:pk-field
        *
        *       @jboss:column-name name="customer_id"
        */
        public abstract Long getCustomerId();
        
        /**
        *       @ejb:interface-method view="remote"
        *       @ejb:persistent-field
        *
        *       @jboss:column-name name="customer_ssn"
        */
        public abstract Long getSSN();
        
        /**
        *       @ejb:interface-method view="remote"
        *
        *       @ejb:relation name="customer-subscriber"
        *               role-name="customer-has-subscribers"
        */
        public abstract Collection getSubscribers();
        
        /**
        *       @ejb:interface-method view="remote"
        */
        public abstract void setSubscribers(Collection subscribers);
}

Here is the subscriber class:
package com.uscc.account.entity;

// billview ejb imports
import com.uscc.ejb.entity.defaultEntityBean;
import com.uscc.account.interfaces.customerBean;

/**
*
*       // begin class level xdoclet attributes
*       @ejb:bean name="account/subscriberBean"
*               display-name="General BAN information"
*               jndi-name="com/uscc/account/entity/subscriberBean"
*               view-type="remote"
*               type="CMP"
*               schema="subscriber"
*
*       @ejb:home extends="javax.ejb.EJBHome"
*       @ejb:interface extends="javax.ejb.EJBObject"
*
*       @ejb:pk extends="java.lang.Object"
*
*       @ejb:transaction type="Required"
*
*       // begin jboss xdoclet attributes
*       @jboss:datasource name="OracleDB"
*
*       @jboss:table-name table-name="subscriber"
*/
public abstract class subscriberBean extends defaultEntityBean
{
        /**
        *       @ejb:interface-method view="remote"
        *       @ejb:persistent-field
        *
        *       @ejb:pk-field
        *
        *       @jboss:column-name name="subscriber_no"
        */
        public abstract String getSubscriberNo();
        
        /**
        *       @ejb:interface-method view="remote"
        *       @ejb:persistent-field
        *
        *       @jboss:column-name name="customer_id"
        */
        public abstract String getCustomerId();
        
        /**
        *       @ejb:interface-method view="remote"
        *       @ejb:persistent-field
        *
        *       @jboss:column-name name="contact_tn"
        */
        public abstract String getContactTN();
        
        /**
        *       @ejb:interface-method view="remote"
        *
        *       @ejb:relation name="customer-subscriber"
        *               role-name="subscriber-belongs-to-customer"
        *
        *       @jboss:relation fk-column="customer_id"
        *               related-pk-field="customerId"
        */
        public abstract customerBean getCustomer();
        
        /**
        *       @ejb:interface-method view="remote"
        */
        public abstract void
setCustomer(com.uscc.account.interfaces.customerBean theCustomer);
}

Can someone eyeball something that is hosed up.  I haven't been able to find
anything on the web regarding this type of exception, so I'm stumped.

Thanks!
Matt Hanson


-------------------------------------------------------
This SF.NET email is sponsored by: FREE  SSL Guide from Thawte
are you planning your Web Server Security? Click here to get a FREE
Thawte SSL guide and find the answers to all your  SSL security issues.
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0026en
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to