AO Logo
 English Japanese
Developer Tools
Life Cycle
Company Info
AOServ Platform
Data Centers
Client Area
Contact Us
AO Industries, Inc.
Application Infrastructure ProviderApplication Infrastructure Provider
Sign Up What's New Client Area Contact Us Site Map
your location:   home page···what's new
What's New
See What's Old instead.

Date Description

Created a new servlet filter to automatically strip invalid XML characters from all inputs. GET requests are 301 redirected to a URL with the characters stripped. POST, and all other methods, are simply filtered and passed along to the rest of the application.

We have added this new filter to all JSP-based web applications we are currently maintaining.

Please see com.aoindustries.servlet.filter.StripInvalidXmlCharactersFilter for more information.


Separated our set of reusable servlet filters into their own project. Please see the new ao-servlet-filter project at Downloads.


The default Tomcat maxPostSize setting of 2 MiB is too small for real-world data, such as pictures from modern digital cameras. We have specified a maxPostSize of 16 MiB for all Tomcat 6, 7, and 8 installations.

Please see Apache Tomcat 8 Configuration Reference, Common Attributes for more information.


We now support PHP 5.6 in both 32-bit and 64-bit builds. We have compiled PHP against PostgreSQL 9.4 and MySQL 5.7.

In this build we have switched to the 2.X version of the HTTP extension. Older applications may need to be updated for this change before switching to PHP 5.6.


We now support MySQL 5.7 in both 32-bit and 64-bit builds.


We now support Tomcat 8.0 in both single-site and multi-site configurations. We have included the latest PostgreSQL JDBC Driver built for Java 8. We have also included the latest MySQL JDBC Driver.


We now support PostgreSQL 9.4 in both 32-bit and 64-bit builds. We have included the following modules in our build:

  1. cube - Used by the earthdistance module.
  2. earthdistance - Allows spatial indexing of geographical coordinates - (latitide, longitude) pairs.
  3. tsearch2 - Backwards compatibility for applications developed for versions of PostgreSQL prior to 8.3.


We are now using Stripe for our credit card processing. Sage Payments has served us well over the years and may remain a good option for some merchants, but we are attracted to the more predictable fee structure of Stripe.


Our family of sites are now all running 100% over HTTPS. Previous releases of our system supported a mixture of HTTP and HTTPS. Now all communication is encrypted for maximum security.


We have developed a Bandwidth Cost Calculator for the Fremont, California data center.


We have increased our port speed with Hurricane Electric at our Fremont, California data center from 100 Mbps to 1 Gbps. With this upgrade and related renegotiation, we are able to pass on lower bandwidth rates. So, if you have some steaming media or higher resolution images that you have been hesistating to post due to bandwidth cost concerns, open the flood gates and let the data flow.

Please see Fremont, CA Bandwidth Rates for updated rates.


Working with straight JDBC in a robust way can be very tedious. Granted, there are many different ways to represent databases using frameworks and abstractions above JDBC, but sometimes you just want to access or manipulate a database with a simple, direct, and intuitive mechanism. Our com.aoindustries.sql package meets these requirements.

We have recently added an alternate constructor to be able to create a com.aoindustries.sql.Database instance providing it a instance of javax.sql.DataSource. This combination works well with data sources configured in our Web Sites Control Panel and accessed using JNDI.


Since our inception in late 1999 and our initial entry to commercial web hosting in mid 2000, we have provided full source code to the aocode-public Java library. This is our catch-all bag of tricks for any code that may be useful to others and requires no external dependencies. This code is heavily used in our projects and well tested and supported.

It has been our intent all along to allow anybody to use this code for any project. Our licensing, however, did not make this clear. We have released the latest versions of aocode-public and the related ao-taglib under the GNU Lesser General Public License Version 3.


We have created a simple, efficient auto-escaping JSP taglib. The basic premise is to let the tags do the work. The tags interoperate to properly escape data and code, even in complex situations. For example, it is easy and natural to embed arbitrary data from a database into a JavaScript string, contained in a multi-line script inside the onclick attribute of a button. In fact, through careful encoding that tags maintain binary transparency from Java through to JavaScript in this scenario.

The ao-taglib is available for download:

It depends on the aocode-public library:


The Payflow Pro connector for our Processor-Neutral Java Credit Card Processing API has been updated to use PayPal's Payflow SDK version 4.3.1. Please download the updated ao-credit-cards library from the following links:


We have updated the Javatator Database Administration Tool to work better with our PostgreSQL 8.1 and PostgreSQL 8.3 installations.


Our monitoring system now watches all MySQL replications and alerts administrators when replication is delayed or halted.


We have added a routine CHECK TABLE `table_name` FAST QUICK of all MySQL tables to our monitoring systems in order to automatically recover MyISAM tables after an unexpected shutdown. MySQL installations with a typical number of tables will be checked once every five minutes while those with many tables will be scanned less frequently. Administrators will be alerted when any table is in need of manual repair.


We have greatly increased the scalability of our generic pooling code AOPool and its derivative AOConnectionPool. The old version dated back to 1999 and was designed for a relatively low number of connections (in the hundreds) across low-latency links. Over the years, our AOServ management software installation has become larger and more distributed. The system now maintains pools of thousands of connections over higher latency links. This usage pattern exposed the weaknesses in the old, simple design and implementation.

The new version uses many Java features not available in version 1.1, such as generics, AtomicLong, HashSet, PriorityQueue, and ThreadLocal. The improved connection pool data structures, combined with more fine-grained locking, provides a more scalable connection pool.

See What's Old instead.
Copyright © 2000-2018 AO Industries, Inc.