org.jboss.remoting.transport.socket
Class ServerThread

java.lang.Object
  extended byjava.lang.Thread
      extended byorg.jboss.remoting.transport.socket.ServerThread
All Implemented Interfaces:
java.lang.Runnable

public class ServerThread
extends java.lang.Thread

This Thread object hold a single Socket connection to a client and is kept alive until a timeout happens, or it is aged out of the SocketServerInvoker's LRU cache.

There is also a separate thread pool that is used if the client disconnects. This thread/object is re-used in that scenario and that scenario only.

This is a customization of the same ServerThread class used witht the PookedInvoker. The custimization was made to allow for remoting marshaller/unmarshaller.

Version:
$Revision: 1.21 $
Author:
Bill Burke, Tom Elrod

Nested Class Summary
static class ServerThread.AcknowledgeFailure
           
 
Field Summary
protected  LRUPool clientpool
           
protected  boolean handlingResponse
           
protected static int id
           
protected  SocketServerInvoker invoker
           
protected  boolean running
           
protected  java.lang.String serverSocketClass
           
protected  boolean shutdown
           
protected  java.util.LinkedList threadpool
           
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
ServerThread(java.net.Socket socket, SocketServerInvoker invoker, LRUPool clientpool, java.util.LinkedList threadpool, int timeout, java.lang.String serverSocketClass)
           
 
Method Summary
protected  void acknowledge()
           
protected  void dorun()
          This is needed because Object*Streams leak
 void evict()
           
 boolean getCheckingConnection()
          Indicates if server will check with client (via an ACK) to see if is still there.
static int nextID()
           
protected  void processInvocation()
           
 void run()
           
 void shouldCheckConnection(boolean checkConnection)
          Sets if server thread should check connection before continue to process on next invocation request.
 void shutdown()
           
 void wakeup(java.net.Socket socket, int timeout, java.util.Map metadata)
           
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

invoker

protected SocketServerInvoker invoker

clientpool

protected LRUPool clientpool

threadpool

protected java.util.LinkedList threadpool

running

protected volatile boolean running

handlingResponse

protected volatile boolean handlingResponse

shutdown

protected volatile boolean shutdown

id

protected static int id

serverSocketClass

protected java.lang.String serverSocketClass
Constructor Detail

ServerThread

public ServerThread(java.net.Socket socket,
                    SocketServerInvoker invoker,
                    LRUPool clientpool,
                    java.util.LinkedList threadpool,
                    int timeout,
                    java.lang.String serverSocketClass)
             throws java.lang.Exception
Method Detail

nextID

public static int nextID()

shutdown

public void shutdown()

shouldCheckConnection

public void shouldCheckConnection(boolean checkConnection)
Sets if server thread should check connection before continue to process on next invocation request. If is set to true, will send an ACK to client to verify client is still connected on same socket.

Parameters:
checkConnection -

getCheckingConnection

public boolean getCheckingConnection()
Indicates if server will check with client (via an ACK) to see if is still there.

Returns:

evict

public void evict()

wakeup

public void wakeup(java.net.Socket socket,
                   int timeout,
                   java.util.Map metadata)
            throws java.lang.Exception
Throws:
java.lang.Exception

run

public void run()

acknowledge

protected void acknowledge()
                    throws java.lang.Exception
Throws:
java.lang.Exception

processInvocation

protected void processInvocation()
                          throws java.lang.Exception
Throws:
java.lang.Exception

dorun

protected void dorun()
This is needed because Object*Streams leak



Copyright ? 1998-2005 JBoss Inc . All Rights Reserved.