org.apache.jk.common
Class ChannelSocket

java.lang.Object
  extended byorg.apache.jk.core.JkHandler
      extended byorg.apache.jk.common.ChannelSocket
All Implemented Interfaces:
java.util.EventListener, javax.management.MBeanRegistration, javax.management.NotificationBroadcaster, javax.management.NotificationListener

public class ChannelSocket
extends JkHandler
implements javax.management.NotificationBroadcaster

Accept ( and send ) TCP messages.

Author:
Costin Manolache

Field Summary
protected  boolean running
           
 
Fields inherited from class org.apache.jk.core.JkHandler
domain, ERROR, HANDLE_FLUSH, HANDLE_RECEIVE_PACKET, HANDLE_SEND_PACKET, id, LAST, mserver, name, next, nextName, OK, oname, properties, wEnv
 
Constructor Summary
ChannelSocket()
           
 
Method Summary
 void accept(MsgContext ep)
           
 void addNotificationListener(javax.management.NotificationListener listener, javax.management.NotificationFilter filter, java.lang.Object handback)
           
 void close(MsgContext ep)
           
 void destroy()
          Clean up and stop the handler
 int flush(Msg msg, MsgContext ep)
           
 java.lang.String getAddress()
           
 boolean getDaemon()
           
 int getInstanceId()
          At startup we'll look for the first free port in the range.
 int getMaxPort()
           
 int getMaxThreads()
           
 javax.management.MBeanNotificationInfo[] getNotificationInfo()
           
 int getPort()
           
 long getRequestCount()
           
 int getServerTimeout()
           
 int getSoLinger()
           
 int getSoTimeout()
           
 boolean getTcpNoDelay()
           
 ThreadPool getThreadPool()
           
 void init()
          Should register the request types it can handle, same style as apache2.
 int invoke(Msg msg, MsgContext ep)
           
static boolean isSameAddress(java.net.InetAddress server, java.net.InetAddress client)
          Return true if the specified client and server addresses are the same.
 boolean isSameAddress(MsgContext ep)
           
 void open(MsgContext ep)
           
 int read(MsgContext ep, byte[] b, int offset, int len)
          Read N bytes from the InputStream, and ensure we got them all Under heavy load we could experience many fragmented packets just read Unix Network Programming to recall that a call to read didn't ensure you got all the data you want from read() Linux manual On success, the number of bytes read is returned (zero indicates end of file),and the file position is advanced by this number.
 int receive(Msg msg, MsgContext ep)
           
 void reinit()
          Called after you change some fields at runtime using jmx.
 void removeNotificationListener(javax.management.NotificationListener listener)
           
 void resetCounters()
           
 int send(Msg msg, MsgContext ep)
           
 void sendNewMessageNotification(javax.management.Notification notification)
           
 void setAddress(java.net.InetAddress inet)
           
 void setAddress(java.lang.String inet)
           
 void setBacklog(int i)
           
 void setDaemon(boolean b)
          If set to false, the thread pool will be created in non-daemon mode, and will prevent main from exiting
 void setMaxPort(int i)
           
 void setMaxThreads(int i)
           
 void setNotificationInfo(javax.management.MBeanNotificationInfo[] info)
           
 void setPort(int port)
          Set the port for the ajp13 channel.
 void setServerTimeout(int timeout)
          Sets the timeout in ms of the server sockets created by this server.
 void setSoLinger(int i)
           
 void setSoTimeout(int i)
           
 void setTcpNoDelay(boolean b)
           
 void start()
           
 void stop()
           
 
Methods inherited from class org.apache.jk.core.JkHandler
addHandlerCallback, createMsgContext, getDomain, getId, getName, getNext, getObjectName, getProperty, handleNotification, postDeregister, postRegister, preDeregister, preRegister, setId, setName, setNext, setNext, setProperty, setWorkerEnv
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

running

protected boolean running
Constructor Detail

ChannelSocket

public ChannelSocket()
Method Detail

getThreadPool

public ThreadPool getThreadPool()

getRequestCount

public long getRequestCount()

setPort

public void setPort(int port)
Set the port for the ajp13 channel. To support seemless load balancing and jni, we treat this as the 'base' port - we'll try up until we find one that is not used. We'll also provide the 'difference' to the main coyote handler - that will be our 'sessionID' and the position in the scoreboard and the suffix for the unix domain socket.


getPort

public int getPort()

setAddress

public void setAddress(java.net.InetAddress inet)

setAddress

public void setAddress(java.lang.String inet)

getAddress

public java.lang.String getAddress()

setServerTimeout

public void setServerTimeout(int timeout)
Sets the timeout in ms of the server sockets created by this server. This method allows the developer to make servers more or less responsive to having their server sockets shut down.

By default this value is 1000ms.


getServerTimeout

public int getServerTimeout()

setTcpNoDelay

public void setTcpNoDelay(boolean b)

getTcpNoDelay

public boolean getTcpNoDelay()

setSoLinger

public void setSoLinger(int i)

getSoLinger

public int getSoLinger()

setSoTimeout

public void setSoTimeout(int i)

getSoTimeout

public int getSoTimeout()

setMaxPort

public void setMaxPort(int i)

getMaxPort

public int getMaxPort()

getInstanceId

public int getInstanceId()
At startup we'll look for the first free port in the range. The difference between this port and the beggining of the range is the 'id'. This is usefull for lb cases ( less config ).


setDaemon

public void setDaemon(boolean b)
If set to false, the thread pool will be created in non-daemon mode, and will prevent main from exiting


getDaemon

public boolean getDaemon()

setMaxThreads

public void setMaxThreads(int i)

getMaxThreads

public int getMaxThreads()

setBacklog

public void setBacklog(int i)

accept

public void accept(MsgContext ep)
            throws java.io.IOException
Throws:
java.io.IOException

resetCounters

public void resetCounters()

reinit

public void reinit()
            throws java.io.IOException
Called after you change some fields at runtime using jmx. Experimental for now.

Throws:
java.io.IOException

init

public void init()
          throws java.io.IOException
Description copied from class: JkHandler
Should register the request types it can handle, same style as apache2.

Overrides:
init in class JkHandler
Throws:
java.io.IOException

start

public void start()
           throws java.io.IOException
Throws:
java.io.IOException

stop

public void stop()
          throws java.io.IOException
Throws:
java.io.IOException

open

public void open(MsgContext ep)
          throws java.io.IOException
Throws:
java.io.IOException

close

public void close(MsgContext ep)
           throws java.io.IOException
Throws:
java.io.IOException

destroy

public void destroy()
             throws java.io.IOException
Description copied from class: JkHandler
Clean up and stop the handler

Overrides:
destroy in class JkHandler
Throws:
java.io.IOException

send

public int send(Msg msg,
                MsgContext ep)
         throws java.io.IOException
Throws:
java.io.IOException

flush

public int flush(Msg msg,
                 MsgContext ep)
          throws java.io.IOException
Throws:
java.io.IOException

receive

public int receive(Msg msg,
                   MsgContext ep)
            throws java.io.IOException
Throws:
java.io.IOException

read

public int read(MsgContext ep,
                byte[] b,
                int offset,
                int len)
         throws java.io.IOException
Read N bytes from the InputStream, and ensure we got them all Under heavy load we could experience many fragmented packets just read Unix Network Programming to recall that a call to read didn't ensure you got all the data you want from read() Linux manual On success, the number of bytes read is returned (zero indicates end of file),and the file position is advanced by this number. It is not an error if this number is smaller than the number of bytes requested; this may happen for example because fewer bytes are actually available right now (maybe because we were close to end-of-file, or because we are reading from a pipe, or from a terminal), or because read() was interrupted by a signal. On error, -1 is returned, and errno is set appropriately. In this case it is left unspecified whether the file position (if any) changes.

Throws:
java.io.IOException

invoke

public int invoke(Msg msg,
                  MsgContext ep)
           throws java.io.IOException
Overrides:
invoke in class JkHandler
Throws:
java.io.IOException

isSameAddress

public boolean isSameAddress(MsgContext ep)

isSameAddress

public static boolean isSameAddress(java.net.InetAddress server,
                                    java.net.InetAddress client)
Return true if the specified client and server addresses are the same. This method works around a bug in the IBM 1.1.8 JVM on Linux, where the address bytes are returned reversed in some circumstances.

Parameters:
server - The server's InetAddress
client - The client's InetAddress

sendNewMessageNotification

public void sendNewMessageNotification(javax.management.Notification notification)

addNotificationListener

public void addNotificationListener(javax.management.NotificationListener listener,
                                    javax.management.NotificationFilter filter,
                                    java.lang.Object handback)
                             throws java.lang.IllegalArgumentException
Specified by:
addNotificationListener in interface javax.management.NotificationBroadcaster
Throws:
java.lang.IllegalArgumentException

removeNotificationListener

public void removeNotificationListener(javax.management.NotificationListener listener)
                                throws javax.management.ListenerNotFoundException
Specified by:
removeNotificationListener in interface javax.management.NotificationBroadcaster
Throws:
javax.management.ListenerNotFoundException

setNotificationInfo

public void setNotificationInfo(javax.management.MBeanNotificationInfo[] info)

getNotificationInfo

public javax.management.MBeanNotificationInfo[] getNotificationInfo()
Specified by:
getNotificationInfo in interface javax.management.NotificationBroadcaster


Copyright © 2000-2003 Apache Software Foundation. All Rights Reserved.