Hi everyone,
I'm still chasing that old NotSerializableException... and I've got
some questions about the code. BTW, let me know if this should be sent
to a list besides jboss-user.
I've added my comments/questions inside the method in question:
public class HomeProxy extends GenericProxy {
//... lots of stuff skipped...
public Object invoke(Object proxy, Method m, Object[] args)
throws Throwable
{
// Normalize args to always be an array
// Isn't this a bug in the proxy call??
if (args == null)
args = new Object[0];
if (m.equals(toStr))
{
return name+" home";
}
else
{
// Delegate to container
// Optimize if calling another bean in same
EJB-application
--------------------
What's optimize and isLocal()? How do you set a bean as local or
optimized?
--------------------
if (optimize && isLocal())
{
return container.invokeHome(m, args,
tm != null ? tm.getTransaction() : null,
null);
} else
{
RemoteMethodInvocation rmi = new
RemoteMethodInvocation(null, m, args);
if (tm != null)
rmi.setTransaction(tm.getTransaction());
--------------------
The next line is where my process dies. Here's my diagnosis: on making
a new MarshalledObject, the rmi object should get serialized. Except
the setTransaction method gives the rmi object a Transaction from the
transaction manager. This transaction (TransactionImpl, right?) is
serializable. However, this transaction has a reference back the the
transaction manager, which is NOT serializable. This is corroborated
by the stack trace from the error I get, which I will provide after the
code.
--------------------
return container.invokeHome(new MarshalledObject(rmi));
}
}
}
The stack trace:
java.lang.reflect.UndeclaredThrowableException:
[MemberQuerier] java.io.NotSerializableException:
org.jboss.tm.TxManager <---- thar she blows!!!
[MemberQuerier] at
java.io.IOException.<init>(IOException.java:49)
[MemberQuerier] at
java.io.ObjectStreamException.<init>(ObjectStreamException.java:31)
[MemberQuerier] at
java.io.NotSerializableException.<init>(NotSerializableException.java:35)
[MemberQuerier] at
java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1154)
[MemberQuerier] at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java(Compiled
Code))
[MemberQuerier] at
java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java(Compiled
Code))
[MemberQuerier] at
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:486)
[MemberQuerier] at
java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1220)
[MemberQuerier] at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java(Compiled
Code))
[MemberQuerier] at
java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java(Compiled
Code))
[MemberQuerier] at
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:486)
[MemberQuerier] at
java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1220)
[MemberQuerier] at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java(Compiled
Code))
[MemberQuerier] at
java.rmi.MarshalledObject.<init>(MarshalledObject.java(Compiled Code))
[MemberQuerier] at
org.jboss.ejb.plugins.jrmp.interfaces.HomeProxy.invoke(HomeProxy.java:88)
[MemberQuerier] at $Proxy36.findByName(Unknown Source)
[MemberQuerier] at
com.dbusa.ejb.querier.MemberQuerierBean.retrieveIdentity(MemberQuerierBean.java:51)
[MemberQuerier] at java.lang.reflect.Method.invoke(Native
Method)
[MemberQuerier] at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:443)
[MemberQuerier] at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:83)
[MemberQuerier] at
org.jboss.ejb.plugins.TxInterceptor$RunInvoke.run(TxInterceptor.java:342)
[MemberQuerier] at
org.jboss.ejb.plugins.TxInterceptor.runWithTransactions(TxInterceptor.java:173)
[MemberQuerier] at
org.jboss.ejb.plugins.TxInterceptor.invoke(TxInterceptor.java:98)
[MemberQuerier] at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:93)
[MemberQuerier] at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:154)
[MemberQuerier] at
org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.java:262)
[MemberQuerier] at
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:172)
[MemberQuerier] at
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:156)
[MemberQuerier] at java.lang.reflect.Method.invoke(Native
Method)
[MemberQuerier] at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:242)
[MemberQuerier] at
sun.rmi.transport.Transport$1.run(Transport.java:155)
[MemberQuerier] at
java.security.AccessController.doPrivileged(Native Method)
[MemberQuerier] at
sun.rmi.transport.Transport.serviceCall(Transport.java:152)
[MemberQuerier] at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:462)
[MemberQuerier] at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:662)
[MemberQuerier] at java.lang.Thread.run(Thread.java(Compiled
Code))
--
Daniel G. Koulomzin
Digital Media On Demand
244 Brighton Ave. 3rd Floor
Allston MA 02134
--
--------------------------------------------------------------
To subscribe: [EMAIL PROTECTED]
To unsubscribe: [EMAIL PROTECTED]
Problems?: [EMAIL PROTECTED]