Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.apache.derby.impl.drda
Class NetworkServerControlImpl  view NetworkServerControlImpl download NetworkServerControlImpl.java

java.lang.Object
  extended byorg.apache.derby.impl.drda.NetworkServerControlImpl

public class NetworkServerControlImpl
extends java.lang.Object

NetworkServerControlImpl does all the work for NetworkServerControl


Field Summary
private  java.lang.Runnable acceptClients
           
private  java.util.Hashtable appRequesterTable
           
protected static java.lang.String att_extnam
           
protected static java.lang.String att_srvclsnm
           
protected static java.lang.String ATT_SRVNAM
           
protected static java.lang.String att_srvrlslv
           
private  java.lang.String bootPasswordArg
           
private static java.lang.String buildNumber
           
private  java.io.ByteArrayOutputStream byteArrayOs
           
protected static int CCSIDMBC
           
protected static int CCSIDSBC
           
private  boolean cleanupOnStart
           
private  java.io.InputStream clientIs
           
 java.lang.String clientLocale
           
private  java.io.OutputStream clientOs
           
private  java.net.Socket clientSocket
           
private static java.lang.String CLOUDSCAPE_DRIVER
           
private static java.sql.Driver cloudscapeDriver
           
protected  java.io.PrintWriter cloudscapeLogWriter
           
private static int[] COMMAND_ARGS
           
private static java.lang.String COMMAND_HEADER
           
private static int COMMAND_LOGCONNECTIONS
           
private static int COMMAND_MAXTHREADS
           
private static int COMMAND_PROPERTIES
           
private static int COMMAND_RUNTIME_INFO
           
private static int COMMAND_SHUTDOWN
           
private static int COMMAND_START
           
private static int COMMAND_SYSINFO
           
private static int COMMAND_TESTCONNECTION
           
private static int COMMAND_TIMESLICE
           
private static int COMMAND_TRACE
           
private static int COMMAND_TRACEDIRECTORY
           
private static int COMMAND_UNKNOWN
           
private  java.util.Vector commandArgs
           
private  java.io.DataOutputStream commandOs
           
private static java.lang.String[] COMMANDS
           
private  int connNum
           
private  Session currentSession
           
private static int DASHARG_BOOTPASSWORD
           
private static int DASHARG_DATABASE
           
private static int DASHARG_ENCALG
           
private static int DASHARG_ENCPRV
           
private static int DASHARG_HOST
           
private static int DASHARG_LOADSYSIBM
           
private static int DASHARG_PORT
           
private static int DASHARG_SESSION
           
private static int DASHARG_USER
           
private static java.lang.String[] DASHARGS
           
private  java.lang.String databaseArg
           
protected  boolean debugOutput
           
protected static int DEFAULT_CCSID
           
protected static java.lang.String DEFAULT_ENCODING
           
private static java.lang.String DEFAULT_HOST
           
private static java.lang.String DEFAULT_LOCALE
           
private static java.lang.String DEFAULT_LOCALE_COUNTRY
           
private static int DEFAULT_MAXTHREADS
           
private static int DEFAULT_TIMESLICE
           
private static java.lang.String DRDA_MSG_PREFIX
           
private static java.lang.String DRDA_PROP_DEBUG
           
private static java.lang.String DRDA_PROP_MESSAGES
           
private  java.lang.String encAlgArg
           
private  java.lang.String encPrvArg
           
private static int ERROR
           
private static int ERRTYPE_INFO
           
private static int ERRTYPE_SEVERE
           
private static int ERRTYPE_UNKNOWN
           
private static int ERRTYPE_USER
           
private  int freeThreads
           
private  java.net.InetAddress hostAddress
           
private  java.lang.String hostArg
           
private  boolean keepAlive
           
private  org.apache.derby.iapi.tools.i18n.LocalizedResource langUtil
           
(package private)  java.util.ArrayList localAddresses
           
private  boolean logConnections
           
private  java.lang.Object logConnectionsSync
           
protected  java.io.PrintWriter logWriter
           
private  int maxPoolSize
           
private static int MAXREPLY
           
private  int maxThreads
           
private  memCheck mc
           
protected static int[] MGR_LEVELS
           
private static int MIN_MAXTHREADS
           
private static int MIN_TIMESLICE
           
private  int minPoolSize
           
private  int minThreads
           
private static int NO_USAGE_MSGS
           
private static int OK
           
private  java.lang.String passwordArg
           
private  java.lang.Object poolSync
           
private  int portNumber
           
protected static java.lang.String prdId
           
private  java.lang.String propertyFileName
           
private static int PROTOCOL_VERSION
           
private static java.lang.String REPLY_HEADER
           
private static int REPLY_HEADER_LENGTH
           
private  byte[] replyBuffer
           
private  int replyBufferCount
           
private  int replyBufferPos
           
private  boolean restartFlag
           
private  java.util.Vector runQueue
           
private  NetworkServerControlImpl serverInstance
           
private  java.net.ServerSocket serverSocket
           
private  java.lang.Object serverStartSync
           
private  int sessionArg
           
private  java.util.Hashtable sessionTable
           
private  boolean shutdown
           
private static int SHUTDOWN_CHECK_ATTEMPTS
           
private static int SHUTDOWN_CHECK_INTERVAL
           
private  java.lang.Object shutdownSync
           
protected static byte SPACE_CHAR
           
private static int SQLERROR
           
private static int SQLWARNING
           
private  java.util.Vector threadList
           
private  java.lang.Object threadsSync
           
private  int timeSlice
           
private  java.lang.Object timeSliceSync
           
private  boolean traceAll
           
private  java.lang.Object traceAllSync
           
private  java.lang.String traceDirectory
           
private  java.lang.Object traceDirectorySync
           
static java.lang.String UNEXPECTED_ERR
           
private static int USE_DEFAULT
           
private  java.lang.String userArg
           
private static int WARNING
           
 
Constructor Summary
NetworkServerControlImpl()
           
NetworkServerControlImpl(java.net.InetAddress address, int portNumber)
          Internal constructor for NetworkServerControl API.
 
Method Summary
protected  void addToSessionTable(java.lang.Integer i, Session s)
          Add To Session Table - for use by ClientThread, add a new Session to the sessionTable.
 void blockingStart(java.io.PrintWriter consoleWriter)
          Start a network server
private  void buildLocalAddressList(java.net.InetAddress bindAddr)
          Build local address list to allow admin commands.
 java.lang.String buildRuntimeInfo(org.apache.derby.iapi.tools.i18n.LocalizedResource locallangUtil)
           
private  void checkAddressIsLocal(java.net.InetAddress inetAddr)
           
private  void clientSocketError(java.io.IOException e)
          Stream error writing to client socket
private  void connectToDatabase(DDMWriter writer, java.lang.String database, java.lang.String user, java.lang.String password)
          Connect to a database to test whether a connection can be made
 void consoleError(java.lang.String msg)
          Write an error message to console output stream and throw an exception for this error
 void consoleExceptionPrint(java.lang.Exception e)
          Write an exception to console output stream, but only if debugOutput is true.
 void consoleExceptionPrintTrace(java.lang.Throwable e)
          Write an exception (with trace) to console output stream.
 void consoleMessage(java.lang.String msg)
          Write a message to console output stream
protected  void consolePropertyMessage(java.lang.String msgProp)
          Put property message on console
protected  void consolePropertyMessage(java.lang.String msgProp, java.lang.String arg)
          Put property message on console
protected  void consolePropertyMessage(java.lang.String msgProp, java.lang.String[] args)
          Put property message on console
private  void consolePropertyMessageWork(java.lang.String messageKey, java.lang.String[] args)
          Handle console error message - display on console and if it is a user error, display usage - if user error or severe error, throw exception with message key and message
private  void consoleTraceMessage(int connNum, boolean on)
          Print trace change message to console
 void directShutdown()
           
private  void ensureDataInBuffer(int minimumBytesNeeded)
          Ensure the reply buffer is at large enought to hold all the data; don't just rely on OS level defaults
 void executeWork(java.lang.String[] args)
          Execute the command given on the command line
private  void fillReplyBuffer()
          Fill the reply buffer with the reply allocates a reply buffer if one doesn't exist
private  int findCommand(java.lang.String[] args)
          Go through the arguments and find the command and save the dash arguments and arguments to the command.
protected  AppRequester getAppRequester(AppRequester appRequester)
          Get the stored application requester or store if we haven't seen it yet
private  java.lang.String getCLSSysInfo()
          Get Cloudscape information
 java.util.Properties getCurrentProperties()
          Get current properties
protected static java.sql.Driver getDriver()
           
protected  int getFreeThreads()
          Get Free Threads - for use by ClientThread, get the number of free threads in order to determine if a new thread can be run.
private  int getIntPropVal(java.lang.String propName, java.lang.String propVal)
          Get integer property values
protected  boolean getKeepAlive()
          Get the current value of keepAlive to configure how long the server should keep the socket alive for a disconnected client
 boolean getLogConnections()
          Get the current value of logging connections
protected  int getManagerLevel(int manager)
          Get the server manager level for a given manager
private  int getMaxPoolSize()
          Get the current value of maximum number of pooled connections to create
protected  int getMaxThreads()
          Get the current value of maximum number of threads to create
private  int getMessageType(java.lang.String msg)
          Determine type of message
private  int getMinPoolSize()
          Get the current value of minimum number of pooled connections to create at start
private  int getMinThreads()
          Get the current value of minimum number of threads to create at start
private  org.apache.derby.iapi.services.info.ProductVersionHolder getNetProductVersionHolder()
          Retrieve product version information We need to make sure that this method gets the stream and passes it to ProductVersionHolder, because it lives in the Network Server jar and won't be readily available to ProductVersionHolder when running under security manager.
private  java.lang.String getNetSysInfo()
          Get Net Server information
protected  int getNewConnNum()
          Get New Conn Num - for use by ClientThread, generate a new connection number for the attempted Session.
protected  Session getNextSession(Session currentSession)
          Get the next session for the thread to work on Called from DRDAConnThread after session completes or timeslice exceeded.
private  void getPropertyInfo()
          Get property info
private  java.util.Properties getPropertyValues()
           
private  java.lang.String getRuntimeInfo()
           
protected  boolean getShutdown()
           
protected  java.lang.Object getShutdownSync()
           
protected  java.util.Vector getThreadList()
          Get Thread List - for use by ClientThread, get the thread list Vector so that a newly spawned thread can be run and added to the ThreadList from the ClientThread
protected  int getTimeSlice()
          Get the current value of the time slice
protected  boolean getTraceAll()
          Get the current value of whether to trace all the sessions
protected  java.lang.String getTraceDirectory()
          Get the current value of trace directory
private  void init()
           
protected static boolean isCmd(java.lang.String val)
          Is this the command protocol
private  boolean isMsgProperty(java.lang.String msg)
          Determine whether string is a property key or not property keys start with DRDA_MSG_PREFIX
private  boolean isOn(java.lang.String arg)
          Is string "on" or "off"
 boolean isServerStarted()
           
private  java.lang.String localizeMessage(java.lang.String msgProp, org.apache.derby.iapi.tools.i18n.LocalizedResource localLangUtil, java.lang.String[] args)
          Localize a message given a particular AppUI
 void logConnections(boolean on)
          Turn logging connections on or off.
private  java.io.PrintWriter makePrintWriter(java.io.OutputStream out)
           
 void netSetMaxThreads(int max)
          Connect to network server and set connection maxthread parameter
 void netSetTimeSlice(int timeslice)
          Set network server connection timeslice parameter
 void ping()
           
protected  void processCommands(DDMReader reader, DDMWriter writer, Session session)
          processCommands reads and processes NetworkServerControlImpl commands sent to the network server over the socket.
private  int processDashArg(int pos, java.lang.String[] args)
          Get the dash argument.
private  byte[] readBytesReply(java.lang.String msgKey)
          Read Bytes reply
private  void readCommandReplyHeader()
          Read the command reply header from the server
private  int readInt()
          Read int from buffer
private  byte[] readLDBytes()
          Read length delimited bytes from a buffer
private  java.lang.String readLDString()
          Read length delimited string from a buffer
private  void readResult()
          Read result from sending client message to server
private  int readShort()
          Read short from buffer
private  java.lang.String readStringReply(java.lang.String msgKey)
          Read String reply
protected  void removeFromSessionTable(int sessionid)
          Remove session from session table
protected  void runQueueAdd(Session clientSession)
          Add session to the run queue
 java.lang.String runtimeInfo()
           
private  void send()
          Send client message to server
private  void sendMessage(DDMWriter writer, int messageType, java.lang.String message)
          Send Error or Warning from server to client after processing a command
private  void sendOK(DDMWriter writer)
          Send OK from server to client after processing a command
private  void sendOKInt(DDMWriter writer, int val)
          Send OK and int value
private  void sendPropInfo(DDMWriter writer)
          Send property information from server to client
private  void sendRuntimeInfo(DDMWriter writer)
          Send RuntimeInfo information from server to client
 void sendSetTraceDirectory(java.lang.String traceDirectory)
           
private  void sendSQLMessage(DDMWriter writer, java.sql.SQLException se, int type)
          Send SQL Exception from server to client after processing a command
private  void sendSysInfo(DDMWriter writer)
          Send SysInfo information from server to client
protected  void setClientLocale(java.lang.String locale)
           
protected  void setConnectionPoolParameters(int min, int max, java.lang.String host, int portNumber)
          Set default connection pool parameters
protected  void setConnectionPoolParameters(java.lang.String database, int min, int max, java.lang.String host, int portNumber)
          Set connection pool parameters for a database
private  void setLogConnections(boolean value)
          Set the current value of logging connections
 void setLogWriter(java.io.PrintWriter outWriter)
          Set the output stream for console messages If this is set to null, no messages will be written to the console
private  void setMaxPoolSize(int value)
          Set the current value of maximum number of pooled connections to create
private  void setMaxThreads(int value)
          Set the current value of maximum number of threads to create
private  void setMinPoolSize(int value)
          Set the current value of minimum number of pooled connections to create at start
private  void setMinThreads(int value)
          Set the current value of minimum number of threads to create at start
private  void setTimeSlice(int value)
          Set the current value of time slice
private  boolean setTrace(boolean on)
          Set the trace on/off for all sessions, or one session, depending on whether we got -s argument.
private  void setTraceAll(boolean value)
          Set the current value of whether to trace all the sessions
private  void setTraceDirectory(java.lang.String value)
          Set the current value of trace directory
static void setUniqueThreadName(java.lang.Thread thrd, java.lang.String newName)
          Set a thread name to be something that is both meaningful and unique (primarily for debugging purposes).
private  void setUpSocket()
          Set up client socket to send a command to the network server
 void shutdown()
          Shutdown a network server
private  void shutdownDatabase(DDMWriter writer, java.lang.String database, java.lang.String user, java.lang.String password)
          Shutdown a database
 void start(java.io.PrintWriter consoleWriter)
          Start a network server.
private  void startDatabase(DDMWriter writer, java.lang.String database, java.lang.String bootPassword, java.lang.String encPrv, java.lang.String encAlg, java.lang.String user, java.lang.String password)
          Boot database
protected  void startNetworkServer()
          Load Cloudscape and save driver for future use.
protected  boolean supportsCCSID(int ccsid)
          Check whether a CCSID code page is supported
 java.lang.String sysinfo()
           
private  void throwSQLException(java.lang.String msg)
          Throw a SQL Exception which was sent over by a server Format of the msg is SQLSTATE:localized message\nSQLSTATE:next localized message
private  void throwSQLWarning(java.lang.String msg)
          Throw a SQL Warning which was sent over by a server Format of the msg is SQLSTATE:localized message\nSQLSTATE:next localized message
private  void throwUnexpectedException(java.lang.Exception e)
          Print a trace for the (unexpected) exception received, then throw a generic exception indicating that 1) an unexpected exception was thrown, and 2) we've already printed the trace (so don't do it again).
 void trace(boolean on)
          Turn tracing on or off for all sessions
 void trace(int connNum, boolean on)
          Turn tracing on or off for one session or all sessions
 void usage()
          Display usage information
private  void wrapSQLError(java.lang.String messageKey)
          Wrap SQL Error - display to console and raise exception
private  void wrapSQLWarning(java.lang.String messageKey)
          Wrap SQL Warning - display to console and raise exception
private  void writeByte(int value)
          Write byte
private  void writeCommandHeader(int command)
          Write command header consisting of command header string and protocol version and command
private  void writeCommandReplyHeader(DDMWriter writer)
          Write Command reply
private  void writeLDString(java.lang.String msg)
          Write length delimited string string
private  void writeShort(int value)
          Write short
protected  void writeString(java.lang.String msg)
          Write string
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO_USAGE_MSGS

private static final int NO_USAGE_MSGS
See Also:
Constant Field Values

COMMANDS

private static final java.lang.String[] COMMANDS

COMMAND_ARGS

private static final int[] COMMAND_ARGS

COMMAND_START

private static final int COMMAND_START
See Also:
Constant Field Values

COMMAND_SHUTDOWN

private static final int COMMAND_SHUTDOWN
See Also:
Constant Field Values

COMMAND_TRACE

private static final int COMMAND_TRACE
See Also:
Constant Field Values

COMMAND_TRACEDIRECTORY

private static final int COMMAND_TRACEDIRECTORY
See Also:
Constant Field Values

COMMAND_TESTCONNECTION

private static final int COMMAND_TESTCONNECTION
See Also:
Constant Field Values

COMMAND_LOGCONNECTIONS

private static final int COMMAND_LOGCONNECTIONS
See Also:
Constant Field Values

COMMAND_SYSINFO

private static final int COMMAND_SYSINFO
See Also:
Constant Field Values

COMMAND_RUNTIME_INFO

private static final int COMMAND_RUNTIME_INFO
See Also:
Constant Field Values

COMMAND_MAXTHREADS

private static final int COMMAND_MAXTHREADS
See Also:
Constant Field Values

COMMAND_TIMESLICE

private static final int COMMAND_TIMESLICE
See Also:
Constant Field Values

COMMAND_PROPERTIES

private static final int COMMAND_PROPERTIES
See Also:
Constant Field Values

COMMAND_UNKNOWN

private static final int COMMAND_UNKNOWN
See Also:
Constant Field Values

DASHARGS

private static final java.lang.String[] DASHARGS

DASHARG_PORT

private static final int DASHARG_PORT
See Also:
Constant Field Values

DASHARG_DATABASE

private static final int DASHARG_DATABASE
See Also:
Constant Field Values

DASHARG_USER

private static final int DASHARG_USER
See Also:
Constant Field Values

DASHARG_LOADSYSIBM

private static final int DASHARG_LOADSYSIBM
See Also:
Constant Field Values

DASHARG_ENCALG

private static final int DASHARG_ENCALG
See Also:
Constant Field Values

DASHARG_ENCPRV

private static final int DASHARG_ENCPRV
See Also:
Constant Field Values

DASHARG_BOOTPASSWORD

private static final int DASHARG_BOOTPASSWORD
See Also:
Constant Field Values

DASHARG_HOST

private static final int DASHARG_HOST
See Also:
Constant Field Values

DASHARG_SESSION

private static final int DASHARG_SESSION
See Also:
Constant Field Values

PROTOCOL_VERSION

private static final int PROTOCOL_VERSION
See Also:
Constant Field Values

COMMAND_HEADER

private static final java.lang.String COMMAND_HEADER
See Also:
Constant Field Values

REPLY_HEADER

private static final java.lang.String REPLY_HEADER
See Also:
Constant Field Values

REPLY_HEADER_LENGTH

private static final int REPLY_HEADER_LENGTH

OK

private static final int OK
See Also:
Constant Field Values

WARNING

private static final int WARNING
See Also:
Constant Field Values

ERROR

private static final int ERROR
See Also:
Constant Field Values

SQLERROR

private static final int SQLERROR
See Also:
Constant Field Values

SQLWARNING

private static final int SQLWARNING
See Also:
Constant Field Values

DRDA_PROP_MESSAGES

private static final java.lang.String DRDA_PROP_MESSAGES
See Also:
Constant Field Values

DRDA_PROP_DEBUG

private static final java.lang.String DRDA_PROP_DEBUG
See Also:
Constant Field Values

CLOUDSCAPE_DRIVER

private static final java.lang.String CLOUDSCAPE_DRIVER
See Also:
Constant Field Values

UNEXPECTED_ERR

public static final java.lang.String UNEXPECTED_ERR
See Also:
Constant Field Values

MIN_MAXTHREADS

private static final int MIN_MAXTHREADS
See Also:
Constant Field Values

MIN_TIMESLICE

private static final int MIN_TIMESLICE
See Also:
Constant Field Values

USE_DEFAULT

private static final int USE_DEFAULT
See Also:
Constant Field Values

DEFAULT_MAXTHREADS

private static final int DEFAULT_MAXTHREADS
See Also:
Constant Field Values

DEFAULT_TIMESLICE

private static final int DEFAULT_TIMESLICE
See Also:
Constant Field Values

DEFAULT_HOST

private static final java.lang.String DEFAULT_HOST
See Also: