| +++++++++++++++++++++++++++++++++++ |
| | Version History for QuickServer | |
| +++++++++++++++++++++++++++++++++++ |
| |
| Current Version: 2.1.0 |
| |
| version 2.1.0 [12-Aug-2017] |
| ---------------------------- |
| + Added support for uptime in Host (QuickServer Client) |
| + Supports null/no banner when server starts |
| # uptime formatting shortened |
| # Fixed load pattern logic RandomLoadPattern, RoundRobinLoadPattern |
| (was using index when client key was set) |
| + added getHighestActiveCount() method to Object Pools |
| + Added getHighestActiveClientCount method to QuickServer object |
| + Added support for setting Security provider for SSLContext |
| # Defaulted SSL to TLS |
| ! Bug fix for ThreadPool not reducing to max ideal |
| (stay in wait state n increase over time) |
| ! Bug fix for Client (HashedLoadPattern) |
| - Disabled non blocking mode (no more supported) |
| |
| version 2.0.0 [15-Feb-2014] |
| ---------------------------- |
| + Added new commands in QSAdmin |
| kill-client-with <target> <search term> |
| kill-clients-all <target> |
| + Added readBytes with length support for BlockingClient |
| + Added PID, Lib Version, Uptime in info server |
| + Added QuickServerDebugHelper class - allows info server and pool dump to log file |
| ! Bug fix in BlockingClientPool (high tps noop failure fix) |
| ! Bug fix in SocketMonitor |
| ! Bug fix in readCRLFLine for BlockingClient |
| ! QSAdmin New commands introduced like JVM jmap & jstack |
| |
| |
| version 2.0.0 RC1 [20-Oct-2012] |
| ---------------------------- |
| + Added BroadcastServer example. |
| + Added org.quickserver.net.client |
| + Added org.quickserver.net.client.loaddistribution. |
| + Added org.quickserver.net.client.monitoring |
| + Added org.quickserver.util.pool.thread.app a thread pool for use by application logic |
| + Added more param in advanced-settings |
| performance-preferences-connection-time |
| performance-preferences-latency |
| performance-preferences-bandwidth |
| |
| client-socket-tcp-no-delay |
| client-socket-traffic-class |
| |
| client-socket-receive-buffer-size |
| client-socket-send-buffer-size |
| + Added Generic Client Socket Pool |
| + Added TotalReadBytes, TotalWrittenBytes to client handler |
| (not accurate in STRING mode - assumes \r\n in request) |
| (in case of object mode just increments by no of objects and not bytes) |
| + Added support for raw Communication Logging (in case of binary mode) |
| (any data above 100 bytes would be truncated when logged) |
| + Added BlockingUDBClient and UDP Monitoring support |
| + Added AsyncHandler for JDK logging |
| # sendClientXXX methods improved to make synchronized writes. |
| # Improved TextFile read methods. |
| # Improved readInputStream() method in BasicClientHandler to check for |
| available data and EOF in read() method call. |
| |
| |
| version 1.4.7 [01-Mar-2006] |
| -------------------------------- |
| + Implemented support NIO writes in sendClientXXX methods of ClientHandler. |
| + Added initServer() that throws App Exception if it fails. |
| + Added getServiceError() to Service interface. |
| + Added load() method to QuickServer. |
| ! Removed synchronized from processGotDataInBuffers in NonBlockingClientHandler. |
| # Improved ByteBufferInputStream for readLine |
| + Added availableOnlyInByteBuffer() in NonBlockingClientHandler. |
| # Improved isLineReadyForStringBuffer() in NonBlockingClientHandler. |
| # Improved isClientEventNext() in BasicClientHandler. |
| + Added check for NewLine miss in NonBlockingClientHandler. |
| # Added flush() in closeConnection() in BlockingClientHandler. |
| # Improved setClassLoader() of QuickServer. |
| ! Added check for bootstrap classloader (null) in getClass() method of QuickServer |
| # Closed Keystore stream when no longer needed. |
| # shutdown command in QSAdminServer improved to close shell, this will |
| make server auto exit the jvm when the last client disconnects. |
| # GhostSocketReaper now will close pools after last client disconnects |
| after server is stopped. |
| ! Added checks for null returned in ServerSocketChannel accept method. |
| ! Fixed run NonBlockingClientHandler code to prevent more than one threads |
| from processing selector when server is re-started. |
| # Modified registerChannel to add to a list and then process when |
| selector becomes free. |
| ! Fixed synchronization problem in ClientThread pool.returnObject() call. |
| + MaxThreadAccessCount in NonBlockingClientHandler is now configurable. |
| + Wakeup call on selector after RegisterForWrite and RegisterForRead in |
| NonBlockingClientHandler is now configurable. |
| # Improved validateObject method in ClientHandlerObjectFactory to check |
| if object was created from the same pool |
| + Access to clientEvents method is now synchronized. |
| + Added flush call after ObjectOutputStream is created in BasicClientHandler. |
| # Improved kill/exit command in QSAdmin to take a param (exit value) |
| |
| |
| version 1.4.6 [15-Oct-2005] |
| ------------------ |
| # Improved ThreadPool for performance. |
| # Improved BasicClientHandler. |
| # Improved XmlAdderLoadTest. |
| + Added byte-buffer-pool-info command - QsAdmin |
| ! Fixed initSize default value setting |
| ! Fixed synchronized blocks on clientEvents and moved clientConnectedTime code to run() |
| # Improved Architecture.pdf |
| |
| |
| version 1.4.6 beta [17-Sep-2005] |
| ------------------ |
| + Added initService(QuickServerConfig) |
| + Added maxThreadsForNioWrite() for Thread Pools |
| + Added ClientEventHandler to xml, also provided default implementation. |
| + Added new QsAdmin commands 'client-handler-pool-dump' |
| + Added isOpen() method to ClientHandler |
| + Added ability to set default DataMode. |
| + Added getBlockingMode() to QuickServer |
| + Added Unix shell scripts |
| + Added ClientExtendedEventHandler |
| + Added facility to configure initial pool size. |
| + Added method to BasicServerConfig so that business logic class can |
| be set and checked at compile time. |
| + Introducing new ClientAuthenticationHandler (replacing Authenticator) |
| + Added new org.quickserver.util.Assertion class |
| + Added new org.quickserver.util.logging.SimpleJDKLoggingHook class |
| # Improved logging, ClientHandler |
| # Refactored ClientHandler |
| # Moved QSAdminGUI into a separate jar |
| # Made most beans Serializable |
| ! Fixed ClientEvent loss bug caused when more than one event gets picked at |
| the same time. |
| ! Fixed charset bug in sendClientMsg() and sendClientBytes() methods when |
| length of byte[] representation is not equal to string representation |
| - Removed deprecated setServerAuthenticator(), getServerAuthenticator in QuickServer |
| - ServerAuthenticator and "server-authenticator" tag have been removed. |
| - Old xml format of v1.2 no longer supported. |
| - MaxClientHandler no longer needed, so removed. |
| - ObjectCleaner, ObjectCleanup no longer used, so removed. |
| + New XML Tags: advanced-settings/max-threads-for-nio-write, |
| object-pool/init-size, object-pool/thread-object-pool/init-size, |
| object-pool/client-handler-object-pool/init-size, |
| object-pool/byte-buffer-object-pool/init-size, |
| object-pool/client-data-object-pool/init-size, |
| client-event-handler, qsadmin-server/client-event-handler |
| default-data-mode/data-type-in,default-data-mode/data-type-out, |
| client-extended-event-handler, qsadmin-server/client-extended-event-handler |
| client-authentication-handler, qsadmin-server/client-authentication-handler |
| |
| |
| version 1.4.5 [10-Jul-2005] |
| ------------------ |
| # Made ClientIdentifier implementation plug able. |
| + Added ClientIdentifier implementations SyncClientIdentifier, OptimisticClientIdentifier |
| + Added PoolManager, QSObjectPoolMaker interface to create pools and is plug able. |
| + Added GUI Chat Client for ChatServer example. |
| + Added 'FullThreadDump' command at QsAdminShell |
| # Made timeout setting to milliseconds, default timeout is now 1 minute. |
| # Improved ChatServer, FileServ examples. |
| # Improved QSAdminShell, thread dumps can now be done with shell enabled. |
| # Improved GhostSocketReaper. |
| ! Fixed charset issue in readBytes() method of ClientHandler |
| ! Fixed bug in QuickServer that prevented GhostSocketReaper from loading |
| when no SerevrHooks are defined. |
| ! Fixed ByteBuffer object leak in ByteBufferOutputStream |
| + New XML Tags: advanced-settings/client-identifier, object-pool/pool-manager, |
| advanced-settings/qsobject-pool-maker |
| |
| |
| version 1.4.5 beta [30-May-2005] |
| ------------------ |
| + Added support for NIO (non-blocking mode) for normal sockets: Server Mode |
| + QuickServer now uses java assertion |
| + Added new QsAdmin commands to find pool information. |
| + Added new QsAdmin command 'systeminfo', 'start console' and 'stop console'. |
| + Backlog and Socket linger for server is now configurable. |
| + Added GUI prompt for sensitive application parameter. |
| + Added -fullXML2File to -load switch. |
| + Added new interface ClientEventHandler, ClientWriteHandler |
| # Improved object pool handling and creation. |
| # Improved QSAdminGUI to handle error in custom authenticators |
| # Communication logging is set to false by default now |
| # Improved communication logging for BINARY mode and general logging. |
| # Improved org.quickserver.util.logging classes implementation. |
| # Improved EchoWebServer example |
| # ClientHanlder.isConected() renamed to isConnected() |
| + New XML Tags: Server Mode, advanced-settings, application-configuration/prompt-type, |
| object-pool/thread-object-pool, object-pool/client-handler-object-pool, |
| object-pool/byte-buffer-object-pool, object-pool/client-data-object-pool |
| |
| |
| version 1.4.1 [22 Nov 2004] |
| ------------------ |
| # Improved ClientHandler, QuickServer, ClientThread classes. |
| # Improved BasicObjectPool class |
| # Improved QSAdminShell to detect forced exits |
| # Improved FTPServer, EchoServer examples. |
| ! Fixed bug in QSAdminShell bug did not allow prompt changing |
| ! Fixed bugs in ClientPool (thread pool) that prevented excess threads from |
| freeing up. |
| ! Fixed bug in prompt of sensitive <property-value> |
| ! Fixed bug in <communication-logging> for QSAdminServer from XML |
| |
| |
| version 1.4.0 [01 Oct 2004] |
| ------------------ |
| + Added SecureManagerLoader to manage Secure Mode. |
| + Added findAllClientByKey to QuickServer object. |
| + Added ConnectionLostException class. |
| # Improved Secure configuration |
| a) To prompt the user for store/key password if not specified. |
| b) Auto pick security provider (if not given). |
| c) To handle non file based keystores (pass NONE for <store-file>) |
| like from HSM or LDAP. |
| d) Ability to override the type and provider of SecureStore in TrustStoreInfo. |
| + Add ability to read sensitive <application-configuration> <property-value> |
| from console. |
| # Improved ChatServer, XmlAdder examples. |
| ! Many bug fixes as per reports on Developers Forum |
| |
| |
| version 1.4.0 beta [27 Aug 2004] |
| ------------------ |
| + Added Secure Mode: SSL, TLS |
| + Added method to negotiate secure connection over normal tcp |
| connection: ClientHandler.makeSecure() |
| + Added method in ClientHandler to find if client is in secure mode. |
| + Added Init ServerHook : org.quickserver.net.InitServerHook |
| + Added BINARY mode of communication: ClientBinaryHandler |
| + Added BINARY reading and writing methods to QuickAuthenticator |
| + Added QSAdminAPI api for communicating to QsAdminServer. |
| + New example: XmlAdder - A simple xml server that adds 2 integers. |
| + New example: PipeServer - A simple redirection server. |
| # Improved ClientHandler. |
| # Updated jakarta commons jars. |
| # Improved Architecture.pdf |
| ! Fixed bug in QSAdminServer loading of Plugin class from |
| <application-jar-path>. |
| ! Fixed bug in AccessConstraintConfig for QsAdminServer |
| ! Fixed bug in setting of max connection from xml file for QSAdminServer |
| - Removed the old package structure form distribution com.ddost |
| |
| |
| version 1.3.3 [27 Jun 2004] |
| ---------------- |
| + Added IP Filter for clients <access-constraint><ip-filter>.. |
| + Added <security-manager> node to specify SecurityManager for JVM |
| + Loading/Reloading application jar from xml. Add |
| <application-jar-path> node to specify location of jars needed by |
| application. This location can be either absolute or relative (to config |
| file). The jars are reloaded when server is restarted, updating the class |
| from the changed jars. |
| + Added startup, shutdown process hooks to QuickServer : |
| org.quickserver.net.ServerHook |
| + QuickServer is now cloneable |
| + Added reaper thread : GhostSocketReaper |
| + Added new method to ClientHandler to find the time when client last sent |
| data to ClientHandler. |
| ! Fixed bug in communication logging turn off implementation in ClientHandler. |
| ! Fixed bug in BasicObjectPool return object method. |
| |
| |
| version 1.3.2 [20 May 2004] |
| ---------------- |
| + Added plugin ability to QSAdminGUI : PluginPanel |
| + Added "Server Statistics View" Plugin to QSAdminGUI |
| + Added QSAdmin Shell - A command shell |
| + Added <application-configuration> node xml configuration file to store |
| data needed by the application. |
| + Added BYTE reading and writing methods to QuickAuthenticator |
| + Added ability to turn off FINE logging of all data sent in/out of server. |
| Note: This will not log any incoming data when client is being authenticated. |
| + Added two new logging formatter - SimpleTextFormatter, SimpleConsoleFormatter |
| # Improved login and command version handling in QSAdminGUI |
| ! Fixed "-load" option to load QSAdmin from XML |
| ! Fixed ClientHandler detection of lost connections when in BYTE mode. |
| |
| |
| version 1.3.1 [06 Mar 2004] |
| ---------------- |
| + Added BYTE mode of communication. |
| + Added a new interface ClientIdentifiable and methods to identify and search a |
| client. |
| + Added new method to ClientHandler to find the time when Client was assigned |
| to ClientHandler. |
| + New example: ChatServer - Send and receive text b/w connected clients |
| # Improved logging in ClientHandler to log all outgoing and incoming |
| communications at FINE level. |
| # Improved error detection for Authenticator implementations. |
| ! Fixed the ClientHandler Thread cleanup for detection of lost connection |
| and connection closing condition. |
| ! Fixed setConsoleLoggingLevel() method from setting non console handlers level. |
| |
| |
| version 1.3.0 [27 Jan 2004] |
| ---------------- |
| + www.quickserver.org was registered. |
| + All classes ported to new package org.quickserver from com.ddost |
| + Released Developer Guide v 0.2 (Pre-Release) |
| # Improved Architecture.pdf. |
| |
| |
| version 1.3.0 beta [01 Jan 2004] |
| ---------------- |
| + Object Pool {Includes a thread pool} added for handling clients. |
| + Added PoolableObject interface to pool any class used by QuickServer |
| like ClientData. |
| + Added QSAdmin GUI (XML Based) |
| + New authentication class added QuickAuthenticator and Authenticator. |
| + New commands added to QSAdmin CommandHander |
| + XML Based JDBC Mapping [org.quickserver.sql.DBPoolUtil] |
| # QuickServer optimised for speed. |
| # Authentication is now can have single or multiple instance. |
| # XML Configuration of QuickServer format is now changed to a easy one. |
| Old XML configuration file is automatically converted to new format. |
| ! Stack overflow bug when bind ip address was set to QSAdmin fixed. |
| |
| |
| |
| version 1.2.0 [24 Sep 2003] |
| ---------------- |
| + Released Developer Guide v 0.1 (Pre-Release) |
| + XML DTD added for configuration file. |
| + New ReadMe added for Examples |
| # Improved Architecture.pdf. |
| # Location of main jar changed from build\lib to dist folder. |
| # Improved Ant build file. |
| ! setMaxAuthTryMag() method changed to setMaxAuthTryMsg() |
| |
| |
| version 1.2.0 beta [20 Aug 2003] |
| ---------------- |
| + JDK Logging support added to QuickServer. |
| + Support for sending and receive java objects in QuickServer. |
| + Support for xml configuration. |
| + QuickServer now supports Service Configurator Pattern. |
| + New example: DateServer - Send and receive java objects. |
| # FtpServer example modified to use txt logging. |
| # EchoServer example modified to use xml configuration and logging. |
| # EchoWebServer example modified to use txt logging and xml configuration. |
| ! Multiple ObjectCleaner bug when QuickServer is restarted rectified. |
| ! Cleanup time setting bug in ObjectCleaner rectified. |
| # ObjectCleaner thread is a daemon thread now. |
| + Pluggable command handler for QSAdminServer - CommandPlugin |
| # FTPServer example: Custom command added to QSAdminServer for |
| remote changing of ftp root - using CommandPlugin. |
| |
| |
| version 1.1.0 [04 Aug 2003] |
| ---------------- |
| + JUnit tests added to QuickServer |
| + New example : FTPServer - A basic ftp server. |
| |
| |
| version 1.1.0 beta [14 Jul 2003] |
| ---------------- |
| + QuickServer.setMaxClients() added. |
| + QuickServer.setBindAddr() added. |
| + Many new useful methods added to QuickServer. |
| + Admin port & protocol added to QuickServer [org.quickserver.net.qsadmin] |
| ! ClientHandler.getClientCount(), ClientHandler.getObjectCount() bug |
| when more than one QuickServer objects created in same JVM rectified. |
| # EchoServer example modified to use QSAdminServer. |
| + Few new useful methods added to ClientHandler. |
| + New example: CmdServer - A remote command shell |
| |
| |
| version 1.0.0 [10 Jul 2003] |
| ---------------- |
| # Improved QuickServer.startServer() to detect failure. |
| # Improved Main Thread of QuickServer for performance. |
| |
| |
| version 1.0 beta [07 Jul 2003] |
| ---------------- |
| + First Release |
| |
| |
| Legends |
| ------- |
| + Feature Addition |
| - Feature Removal, Deprecated |
| ! Bug Fix |
| # Feature/Performance Enhancement |
| |
| |
| Copyright (C) 2003-2006 QuickServer.org |
| http://www.quickserver.org |