[jboss-dev] Re: jboss remoting 2.2.0.SPx update

Brian Stansberry brian.stansberry at redhat.com
Thu May 10 23:12:23 EDT 2007


Great. I figured I'd better have a better understanding of how this 
works so this got me motivated to poke around a bit. :)

Ron Sigal wrote:
> Hi Brian,
> 
> Yeah, you're right.  My fault.  Fortunately, it seems to be fixed.
> 
> The most recent run of the compatibility matrix tests - 
> http://cruisecontrol.jboss.com/cc/artifacts/jboss-4.2-compatibility-matrix//20070510205713/results/index.html 
> - shows that the tests are passing for 4.0.4, 4.0.5, 4.0.x, which use 
> jboss-remoting.jar from Remoting 1.4.3.GA, and for 4.2.x.  The older 
> tests seem to have API versioning problems:
> 
>>> A possible explanation of the classversion 49.0 errors, is that since 
>>> the org.jboss.remoting libraries do not exist in the client side, 
>>> they are dynamically loaded from the server, and there they are 
>>> compiled using jdk5.
>> I'm seeing something similar when I run tests-matrix at home - the 
>> older clients seem to be pulling classes from the server, but rather 
>> than complaining about classversion 49.0, they're trying to use newer 
>> classes and getting inconsistent behavior.  For example, since 
>> Remoting 2.0.0, org.jboss.remoting.Client.connect() has to be called 
>> before Client.invoke().  Clients from 3.2.8 to 4.0.1 are getting the 
>> error message that gets printed when Client.invoke() is called without 
>> a prior call to Client.connect().
>>
>> On the other hand, clients from 4.0.2, which has the Remoting 
>> 1.2.1.Final jar are breaking because UnifiedInvokerProxy is calling a 
>> method on org.jboss.remoting.InvokerLocator that didn't exist in 
>> 1.2.1.  So it looks like all of these older clients might need a 
>> specially created Remoting jar that smooths over these inconsistencies.
> Hopefully, this fixes the main testsuite - it doesn't look like it's run 
> since the fix.  When I try to run tests-standard-unit on my laptop 
> nothing passes - I don't know what I'm doing wrong.  But if the problems 
> in 4.2 proper are fixed, I can try to put together a jboss-remoting.jar 
> that will work for the older clients.
> 
> -Ron
> 
> 
> 
> Brian Stansberry wrote:
>> I'm not 100% sure, but I think the problem is right here:
>>
>> at 
>> org.jboss.remoting.marshal.serializable.SerializableMarshaller.write(SerializableMarshaller.java:120) 
>>
>>     at 
>> org.jboss.remoting.transport.socket.MicroSocketClientInvoker.versionedWrite(MicroSocketClientInvoker.java:964) 
>>
>>     at 
>> org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:554) 
>>
>>     at 
>> org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122) 
>>
>>
>>
>> The Marshaller being used is SerializableMarshaller rather than its 
>> subclass org.jboss.invocation.unified.marshall.InvocationMarshaller. 
>> The subclass is the one that has the specialized logic to convert the 
>> non-serializable Invocation to a serializable MarshalledInvocation.
>>
>> Don't know what it is that tells remoting to use InvocationMarshaller.
>>
>> - Brian
>>
>> Dimitris Andreadis wrote:
>>>  > 1. I'm confused about the NotSerializableException -
>>>  > org.jboss.invocation.Invocation in trunk/server/src/main really 
>>> *isn't*
>>>  > serializable. ???
>>>
>>> We just switched from jboss-remoting 2.2.0.SP2 to 2.2.0.SP4 without 
>>> any other change that could affect the main testsuite. I understand 
>>> the org.jboss.invocation.Invocation class was never Serializable 
>>> because it is not sent over the network, it encapsulates the 
>>> invocation as it goes through the interceptor chain.
>>>
>>> Can you try a simple test from the jboss as testsuite (Branch_4_2).
>>>
>>> Running any simple test, e.g.
>>>
>>> X:\cvs\jboss-public\jboss-4.2\testsuite>build one-test 
>>> -Dtest=org.jboss.test.bank.test.BankStressTestCase
>>>
>>> shows on the server.log:
>>>
>>> 10:58:11,705 ERROR [ServerThread] Worker thread initialization 
>>> failure java.io.EOFException
>>>         at 
>>> org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:522) 
>>>
>>>         at 
>>> org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:365) 
>>>
>>>         at 
>>> org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:161) 
>>>
>>>
>>> and on the client side
>>>
>>> 2007-05-10 10:58:11,474 DEBUG [org.jboss.test.JBossTestCase$1] 
>>> deployed package: bank.jar
>>> 2007-05-10 10:58:11,474 INFO  
>>> [org.jboss.test.bank.test.BankStressTestCase] Remove accounts
>>> 2007-05-10 10:58:11,655 DEBUG 
>>> [org.jboss.remoting.transport.socket.MicroSocketClientInvoker] 
>>> SocketClientInvoker[187c55c, socket://127.0.0.1:4446] setting 
>>> enableTcpNoDelay to true
>>> 2007-05-10 10:58:11,655 DEBUG 
>>> [org.jboss.remoting.transport.socket.MicroSocketClientInvoker] 
>>> SocketClientInvoker[187c55c, socket://127.0.0.1:4446] constructed
>>> 2007-05-10 10:58:11,655 DEBUG 
>>> [org.jboss.remoting.transport.socket.MicroSocketClientInvoker] 
>>> SocketClientInvoker[187c55c, socket://127.0.0.1:4446] setting 
>>> enableTcpNoDelay to true
>>> 2007-05-10 10:58:11,655 DEBUG 
>>> [org.jboss.remoting.MicroRemoteClientInvoker] 
>>> SocketClientInvoker[187c55c, socket://127.0.0.1:4446] connecting
>>> 2007-05-10 10:58:11,655 DEBUG 
>>> [org.jboss.remoting.transport.socket.MicroSocketClientInvoker] 
>>> SocketClientInvoker[187c55c, socket://127.0.0.1:4446] added new pool 
>>> ([]) as ServerAddress[127.0.0.1:4446, enableTcpNoDelay timeout 0 ms]
>>> 2007-05-10 10:58:11,655 DEBUG 
>>> [org.jboss.remoting.MicroRemoteClientInvoker] 
>>> SocketClientInvoker[187c55c, socket://127.0.0.1:4446] connected
>>> 2007-05-10 10:58:11,695 DEBUG 
>>> [org.jboss.remoting.transport.socket.ClientSocketWrapper] reset 
>>> timeout: 0
>>> 2007-05-10 10:58:11,705 DEBUG 
>>> [org.jboss.remoting.transport.socket.MicroSocketClientInvoker] 
>>> SocketClientInvoker[187c55c, socket://127.0.0.1:4446] got exception 
>>> java.io.NotSerializableException: org.jboss.invocation.Invocation
>>> 2007-05-10 10:58:11,705 DEBUG 
>>> [org.jboss.remoting.transport.socket.SocketWrapper] unable to close 
>>> output stream
>>> 2007-05-10 10:58:11,705 DEBUG 
>>> [org.jboss.remoting.transport.socket.SocketWrapper] 
>>> ClientSocketWrapper[Socket[addr=/127.0.0.1,port=4446,localport=2788].10fe2b9] 
>>> closing
>>> 2007-05-10 10:58:11,705 ERROR 
>>> [org.jboss.remoting.transport.socket.SocketClientInvoker] Got 
>>> marshalling exception, exiting
>>> java.io.NotSerializableException: org.jboss.invocation.Invocation
>>>     at 
>>> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081)
>>>     at 
>>> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375) 
>>>
>>>     at 
>>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
>>>     at 
>>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290) 
>>>
>>>     at 
>>> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
>>>     at 
>>> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
>>>     at 
>>> org.jboss.remoting.serialization.impl.java.JavaSerializationManager.sendObjectVersion2_2(JavaSerializationManager.java:120) 
>>>
>>>     at 
>>> org.jboss.remoting.serialization.impl.java.JavaSerializationManager.sendObject(JavaSerializationManager.java:95) 
>>>
>>>     at 
>>> org.jboss.remoting.marshal.serializable.SerializableMarshaller.write(SerializableMarshaller.java:120) 
>>>
>>>     at 
>>> org.jboss.remoting.transport.socket.MicroSocketClientInvoker.versionedWrite(MicroSocketClientInvoker.java:964) 
>>>
>>>     at 
>>> org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:554) 
>>>
>>>     at 
>>> org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122) 
>>>
>>>     at org.jboss.remoting.Client.invoke(Client.java:1550)
>>>     at org.jboss.remoting.Client.invoke(Client.java:530)
>>>     at 
>>> org.jboss.invocation.unified.interfaces.UnifiedInvokerProxy.invoke(UnifiedInvokerProxy.java:175) 
>>>
>>>     at 
>>> org.jboss.invocation.InvokerInterceptor.invokeInvoker(InvokerInterceptor.java:365) 
>>>
>>>     at 
>>> org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:197) 
>>>
>>>     at 
>>> org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61) 
>>>
>>>     at 
>>> org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:70)
>>>     at 
>>> org.jboss.proxy.ejb.HomeInterceptor.invoke(HomeInterceptor.java:184)
>>>     at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
>>>     at $Proxy1.findAll(Unknown Source)
>>>     at 
>>> org.jboss.test.bank.test.BankStressTestCase.setUp(BankStressTestCase.java:462) 
>>>
>>>     at junit.framework.TestCase.runBare(TestCase.java:128)
>>>     at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>     at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>     at junit.framework.TestResult.run(TestResult.java:109)
>>>     at junit.framework.TestCase.run(TestCase.java:120)
>>>     at junit.framework.TestSuite.runTest(TestSuite.java:230)
>>>     at junit.framework.TestSuite.run(TestSuite.java:225)
>>>     at junit.framework.TestSuite.runTest(TestSuite.java:230)
>>>     at junit.framework.TestSuite.run(TestSuite.java:225)
>>>     at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
>>>     at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
>>>     at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>     at junit.extensions.TestSetup.run(TestSetup.java:25)
>>>     at 
>>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:297) 
>>>
>>>     at 
>>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:672) 
>>>
>>>     at 
>>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:567) 
>>>
>>>
>>
>>


-- 
Brian Stansberry
Lead, AS Clustering
JBoss, a division of Red Hat
brian.stansberry at redhat.com




More information about the jboss-development mailing list