[
http://jira.jboss.com/jira/browse/JBREM-738?page=all ]
Ron Sigal updated JBREM-738:
----------------------------
Fix Version/s: 2.4.0.Beta1 (Pinto)
Affects Version/s: 2.4.0.Beta1 (Pinto)
(was: 2.2.0.Beta1 (Bluto))
Assignee: (was: Tom Elrod)
ServerThread/invoker still executing invocation after its related
TransportServer was stopped
---------------------------------------------------------------------------------------------
Key: JBREM-738
URL:
http://jira.jboss.com/jira/browse/JBREM-738
Project: JBoss Remoting
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: transporter
Affects Versions: 2.4.0.Beta1 (Pinto)
Environment: java 1.5 on solaris but doubt its specific to this one.
Reporter: craig bordelon
Fix For: 2.4.0.Beta1 (Pinto)
get an exception on the third iteration of a transporter client to a transporter server
where the client code is doing the same invoke each time. This should not happen as the
first two iterations give correct result. The exception is thrown from the server side as
apparently the jboss remoting internals are confused -- stating that a ServerInvoker is
not in "started state".
Exception is
java.lang.reflect.UndeclaredThrowableException
at $Proxy4.toString(Unknown Source)
at java.lang.String.valueOf(String.java:2615)
at java.lang.StringBuilder.append(StringBuilder.java:116)
at proxy.Client.testClientCall(Client.java:38)
at proxy.Client.main(Client.java:115)
Caused by: org.jboss.remoting.ServerInvoker$InvalidStateException: Can not proc
ess invocation request since is not in started state.
at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:751)
at org.jboss.remoting.transport.socket.ServerThread.processInvocation(S
erverThread.java:568)
at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.
java:390)
at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.ja
va:164)
at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClient
Invoker.java:163)
at org.jboss.remoting.Client.invoke(Client.java:1548)
at org.jboss.remoting.Client.invoke(Client.java:534)
at org.jboss.remoting.Client.invoke(Client.java:522)
at org.jboss.remoting.transporter.TransporterClient.invoke(TransporterC
lient.java:297)
to reproduce this (one way at least):
run the transporter sample modified for the Client to execute the the makeClientCall
multiple times.
Now
to get past the obvious first issue (socket in use) add new code for
customerProcessor.releaseCustomer(processedCustomer.getCustomerId()
in the Client just before the
TransporterClient.destroyTransporterClient(customerProcessor);
Implement this method in the CustomerProcessorImpl to use the id to locate (eg hash
get()) the related ICustomer TransporterClient and destroy it and to the
TransporterServer to stop it.
This theoretically frees up the Customer "server" allowing for the next
iteration by the Client.
note that the processCustomer() implemenation is modified to store the TransporterClient
and TransporterServer that are created here.
------------
I dug into the code a bit and what i gathered is that a ServerThread is trying to do
processInvocation using a SocketServerInvoker that was already "stopped". I
think the ServerThread itself should not be executing as the TransporterServer it should
be involved with was already stopped.
I posted to the jboss forum on issues i was having trying to make the transporter sample
run from the client multiple times. See issue by "bord" on 4/17/2007
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira