Okay, I have a 1-to-many relationship set up, and I'm thinking I did it right! ;-)

I have patched the server to supposedly "un hide" exceptions on the server, but
I'm not actually getting any stacks in my server.log output.

Patch:
http://sourceforge.net/tracker/index.php?func=detail&aid=562036&group_id=22866&atid=376687

My many-to-one relational call works great (my Playlist can ask for the User). 
I'm so excited! :)  I may have actually figured this out!! :-D :-D

The problem now is in my one-to-many call (my User asking for a Collection of
Playlists), that's failing.

My client call (remote) looks like:

35            User user=home.findByPrimaryKey(id);
36            System.out.println("name :"+user.getUsername());
37            System.out.println("user id :"+user.getUserId());
38            System.out.println("email :"+user.getEmailAddress());
39            Collection col=user.getPlaylists();  

The user.getUsername() and other methods work fine.  My getPlaylists() fails
with the following on the client side:

name :knitterb
user id :4
email :[EMAIL PROTECTED]
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
        at $Proxy1.getPlaylists(Unknown Source)
        at org.blandsite.music.user.UserClient.main(UserClient.java:39)
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:367)
        at sun.reflect.GeneratedMethodAccessor30.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:701)
        at java.lang.Thread.run(Thread.java:536)
        at
sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.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(JRMPInvokerProxy.java:128)
        at
org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:108)
        at
org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:73)
        at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:76)
        at org.jboss.proxy.ejb.EntityInterceptor.invoke(EntityInterceptor.java:116)
        at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:76)
        ... 2 more


I have implemented nothing special in the UserBean entity bean, except stated
that the getPlaylists method is abstract, and described it as such in my cmr
entries:

    public abstract Collection getPlaylists();
    public abstract void setPlaylists(Collection value);

== ejb-jar.xml ==
<relationships>
    <ejb-relation>
        <description>User-to-Playlist</description>
        <ejb-relation-name>User-to-Playlist</ejb-relation-name>
        <ejb-relationship-role>
            <ejb-relationship-role-name>User</ejb-relationship-role-name>
            <multiplicity>One</multiplicity>
            <relationship-role-source>
                <ejb-name>UserBean</ejb-name>
            </relationship-role-source>
            <cmr-field>
                <cmr-field-name>playlists</cmr-field-name>
                <cmr-field-type>java.util.Collection</cmr-field-type>
            </cmr-field>
        </ejb-relationship-role>
        <ejb-relationship-role>
            <ejb-relationship-role-name>Playlist</ejb-relationship-role-name>
            <multiplicity>Many</multiplicity>
            <relationship-role-source>
                <ejb-name>PlaylistBean</ejb-name>
            </relationship-role-source>
            <cmr-field>
                <cmr-field-name>user</cmr-field-name>
            </cmr-field>
        </ejb-relationship-role>
    </ejb-relation>
</relationships>
== END ejb-jar.xml ==

Am I maybe missing something in my jbosscmp-jdbc.xml?

== jbosscmp-jdbc.xml ==
    <relationships>
        <ejb-relation>
            <ejb-relation-name>User-to-Playlist</ejb-relation-name>
            <foreign-key-mapping/>
            <ejb-relationship-role>
                <ejb-relationship-role-name>User</ejb-relationship-role-name>
                <key-fields>
                    <key-field>
                        <field-name>userId</field-name>
                        <column-name>user_id</column-name>
                    </key-field>
                </key-fields>
            </ejb-relationship-role>
            <ejb-relationship-role>
                <ejb-relationship-role-name>Playlist</ejb-relationship-role-name
>
                <key-fields/>
            </ejb-relationship-role>
        </ejb-relation>
    </relationships>
== END jbosscmp-jdbc.xml ==


Here's the section of the server.log showing this call:

== server.log ==
2002-06-11 16:06:05,905 TRACE [org.jboss.ejb.plugins.LogInterceptor] Start metho
d=getPlaylists
2002-06-11 16:06:05,906 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] Current t
ransaction in MI is null
2002-06-11 16:06:05,906 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] TX_REQUIR
ED for getPlaylists
2002-06-11 16:06:05,907 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] Thread ca
me in with tx null
2002-06-11 16:06:05,908 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] Starting 
new tx TransactionImpl:XidImpl [FormatId=257, GlobalId=zoot//51, BranchQual=]
2002-06-11 16:06:05,910 TRACE [org.jboss.ejb.plugins.EntityLockInterceptor] Begi
n invoke, key=4
2002-06-11 16:06:05,912 TRACE [org.jboss.ejb.plugins.EntityInstanceInterceptor] 
Begin invoke, key=4
2002-06-11 16:06:05,913 TRACE [org.jboss.ejb.plugins.EntitySynchronizationInterc
eptor] invoke called for ctx org.jboss.ejb.EntityEnterpriseContext@df4bfc, tx=Tr
ansactionImpl:XidImpl [FormatId=257, GlobalId=zoot//51, BranchQual=]
2002-06-11 16:06:05,913 TRACE [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.U
serBean] RESET PERSISTENCE CONTEXT: id=4
2002-06-11 16:06:05,914 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.Use
rBean] load data: entity=UserBean pk=4
2002-06-11 16:06:05,914 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.Use
rBean] No preload data found: entity=UserBean pk=4
2002-06-11 16:06:05,914 TRACE [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityComm
and.UserBean] Eager-load for entity: readahead=[JDBCReadAheadMetaData : strategy
=on-load, pageSize=255, eagerLoadGroup=*]
2002-06-11 16:06:05,922 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityComm
and.UserBean] Executing SQL: SELECT uid, pwd, fn, ln, email, bitrate, playlink F
ROM users WHERE (user_id=?)
2002-06-11 16:06:05,923 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFi
eldBridge.UserBean.userId] Set parameter: index=1, jdbcType=INTEGER, value=4
2002-06-11 16:06:05,932 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFi
eldBridge.UserBean.username] Get result: index=1, javaType=java.lang.String, Sim
ple, value=knitterb
2002-06-11 16:06:05,932 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFi
eldBridge.UserBean.password] Get result: index=2, javaType=java.lang.String, Sim
ple, value=4d27eae655e7272b21c5b0a539656a8ae869d75f
2002-06-11 16:06:05,933 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFi
eldBridge.UserBean.firstname] Get result: index=3, javaType=java.lang.String, Si
mple, value=Brandon
2002-06-11 16:06:05,934 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFi
eldBridge.UserBean.lastname] Get result: index=4, javaType=java.lang.String, Sim
ple, value=Knitter
2002-06-11 16:06:05,934 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFi
eldBridge.UserBean.emailAddress] Get result: index=5, javaType=java.lang.String,
 Simple, [EMAIL PROTECTED]
2002-06-11 16:06:05,935 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFi
eldBridge.UserBean.bitrate] Get result: index=6, javaType=int, Simple, value=0
2002-06-11 16:06:05,935 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFi
eldBridge.UserBean.playlink] Get result: index=7, javaType=int, Simple, value=1
2002-06-11 16:06:05,937 TRACE [org.jboss.ejb.plugins.EntitySynchronizationInterc
eptor] register, ctx=org.jboss.ejb.EntityEnterpriseContext@df4bfc, tx=Transactio
nImpl:XidImpl [FormatId=257, GlobalId=zoot//51, BranchQual=]
2002-06-11 16:06:05,938 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFiel
dBridge.UserBean.playlists] Read ahead cahce load: cmrField=playlists pk=4
2002-06-11 16:06:05,939 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.Use
rBean] load data: entity=UserBean pk=4
2002-06-11 16:06:05,939 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.Use
rBean] No preload data found: entity=UserBean pk=4
2002-06-11 16:06:05,940 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadRelationCo
mmand.UserBean] Executing SQL: SELECT playlist_id FROM playlists WHERE (user_id=
?)
2002-06-11 16:06:05,941 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFi
eldBridge.PlaylistBean.userId] Set parameter: index=1, jdbcType=INTEGER, value=4
2002-06-11 16:06:05,947 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFi
eldBridge.PlaylistBean.playlistId] Get result: index=1, javaType=java.lang.Integ
er, Simple, value=1000
2002-06-11 16:06:05,948 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.Pla
ylistBean] Add preload data: entity=PlaylistBean pk=1000 field=user
2002-06-11 16:06:05,949 TRACE [org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFi
eldBridge.PlaylistBean.playlistId] Get result: index=1, javaType=java.lang.Integ
er, Simple, value=1001
2002-06-11 16:06:05,949 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.Pla
ylistBean] Add preload data: entity=PlaylistBean pk=1001 field=user
2002-06-11 16:06:05,949 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.Pla
ylistBean] Add preload data: entity=PlaylistBean pk=1001 field=user
2002-06-11 16:06:05,950 TRACE [org.jboss.ejb.plugins.cmp.jdbc.ReadAheadCache.Pla
ylistBean] Add finder results: entity=PlaylistBean results=[1000, 1001] readahea
d=[JDBCReadAheadMetaData : strategy=on-load, pageSize=1000, eagerLoadGroup=*]
2002-06-11 16:06:05,950 TRACE [org.jboss.ejb.plugins.EntityInstanceInterceptor] 
End invoke, key=4, ctx=org.jboss.ejb.EntityEnterpriseContext@df4bfc
2002-06-11 16:06:05,951 TRACE [org.jboss.ejb.plugins.EntityLockInterceptor] End 
invoke, key=4
2002-06-11 16:06:05,951 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] TxInterce
ptorCMT: In finally
2002-06-11 16:06:05,952 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] TxInterce
ptorCMT:before commit of TransactionImpl:XidImpl [FormatId=257, GlobalId=zoot//5
1, BranchQual=]
2002-06-11 16:06:05,953 TRACE [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreEntityCom
mand.UserBean] Store command NOT executed. Entity is not dirty: pk=4
2002-06-11 16:06:05,970 TRACE [org.jboss.ejb.plugins.EntitySynchronizationInterc
eptor] afterCompletion, clear tx for ctx=org.jboss.ejb.EntityEnterpriseContext@d
f4bfc, tx=TransactionImpl:XidImpl [FormatId=257, GlobalId=zoot//51, BranchQual=]
2002-06-11 16:06:05,970 TRACE [org.jboss.ejb.plugins.EntitySynchronizationInterc
eptor] afterCompletion, sent notify on TxLock for ctx=org.jboss.ejb.EntityEnterp
riseContext@df4bfc
2002-06-11 16:06:05,971 TRACE [org.jboss.ejb.plugins.TxInterceptorCMT] TxInterce
ptorCMT:after commit of TransactionImpl:XidImpl [FormatId=257, GlobalId=zoot//51
, BranchQual=]
2002-06-11 16:06:05,971 TRACE [org.jboss.ejb.plugins.LogInterceptor] End method=
getPlaylists
== END server.log ==


I don't see anything else, do you?  Man it feels good to be close! :)

-- 
-bk






_______________________________________________________________

Multimillion Dollar Computer Inventory
Live Webcast Auctions Thru Aug. 2002 - http://www.cowanalexander.com/calendar



_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to