Tornado Server

Tornado Server 6.0.0

100% Java application server and web development framework. Includes installer and embedded relational database. Install and setup in less than 2 minutes! This release requires Java 1.5 or above. Some API changes, your apps may need to be updated. Customers who download this product often download the Vortex IDE for developing Tornado applications




  • Add Keyword caching to TornadoApplication


  • Internal optimizations in HTMLDocument, HTMLItem, HTMLControl


  • Add ThreadLocal NumberFormat to reduce object creation in Util class


  • Update TornadoApplication.getDesignElement() so that the db connect is not held open when createCompositeDesignElement() is called. May cause db connection starvation


  • Change getConnection() to ensure all connections have cx.setAutoCommit(true) so that callers get a consistent object state


  • Update Util.trimChar() to avoid unnecessary object creation


  • Update Util.closeJDBC() to catch Throwable, also improve close logic


  • Add ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY to additional JDBC statements


  • Add "httpOnly" to session cookie and Lpta cookie


  • WEBSSOCookieSecure=1 Ensure that Ltpa token cooke is sent with "secure" option


  • Add extra check so that 500 pages are not processed recursively when a GlobalOpen Action throws an Exception


  • Add early check in ClassData for 0xCAFEBABE header. If header not present, do not keep parsing file.


  • Improve internal byte buffer handling for http action replies (reduce System.arrayCopy calls)


  • Fix performance bottleneck when serving very large files (eg more than 2GB) from the filesystem


  • Improve user role checking when accessing an app.


  • Update ClassData class to understand newer class file format. Tag bytes 15-20 https://en.wikipedia.org/wiki/Java_class_file


  • Update TableManager to allow for not returning generated keys t.insertRow("");


  • Update HTTP server to no longer show errors when closing connections.


  • puakma.config setting: AuthenticatorsShowLoginErrors=0 This prevents the default authenticator displaying login not found etc errors


  • Ensure getDataConnection() adds connection to internal connection tracking table.


  • Fix HTTPSessionContext error message when releasing a connection by appId


  • Add new method to TableManager public boolean insertRow(String sGeneratedKeyFieldName) This allows retrieving a specific column as the generated key. eg Postgresql returns the entire row after insert


  • New task to automatically clean up temp files. This prevents a busy server with long uptime from running out of disk space.


  • New config parameter HTTPSlowActionMS=5000 This new parameter will output an error to the log when an action exceeds this number of milliseconds to run. This helps find slow running actions on a busy server


  • Updated TableManager to support postgresql JSON column types


  • Changed the way TableManager outputs Dates in JSON. Dates now use column name and ISO format, rather than an object containing the different date formats/parts


  • Fix an issue in HTMLView and TableManager where queries using an alias were not displaying the alias column name, eg SELECT Name as fname FROM PERSON Would result in the fieldname "Name" being returned rather than "fname"


  • Synchronize access to removing finished actions from queue. Update dead action thread cleaner to look for completed actions as well as those with errors


  • Added new method in ActionRunner: public void streamToClient(byte[] buf, boolean bFlush) throws IOException This allows data to be streamed to a client, with independent buffer flushing


  • Fix issue in mailer task, incorrect join on mailheader/mailbody caused mailer to use excessive cpu when many pending emails


  • Add new functionality to allow a specific keystore to be bound to a specific HTTP SSL port. HTTPSSLKeyRing8443=../config/yourstore.jks HTTPSSLKeyRingPW8443=######


  • Fix an issue in DocumentMultiItem where if the first value in a multi-valued control contained a comma, it was split into individual values.


  • Added ISO date format to JSON output from TableManager (datefieldname.iso)


  • Fix an issue in url parsing where parameters contained an unescaped "://"


  • Fix an issue in AGENDA which would cause the task to abort when cleaning dead actions. 2021-09-17:17:16:41 Exception in thread "Thread-6" 2021-09-17:17:16:41 java.lang.ArrayIndexOutOfBoundsException: 0 >= 0 2021-09-17:17:16:41 at java.util.Vector.elementAt(Unknown Source) 2021-09-17:17:16:41 at puakma.addin.agenda.AGENDA.cleanDeadThreads(AGENDA.java:535)


  • Update mail sending code to not send single LF characters for compliance with RFC 822bis. Reported error: "550 5.6.11 SMTPSEND.BareLinefeedsAreIllegal; message contains bare linefeeds, which cannot be sent via DATA and receiving system does not support BDAT"


  • Added new class to allow BOOSTER to talk TLSv1.2 to back end servers


  • Altered Util.splitString() to return an ArrayList rather than a Vector to improve performance


  • Changed StringBuffers to StringBuilders to improve performance