I am investigating using javax.sql.rowset.CachedRowSet
in part of my application, however I can only find information on using the proprietary sun implementation com.sun.rowset.CachedRowSetImpl
or Oracle specific implementations.
The sun implementation is unsupported and subject to change. Using this could also cause problems if I want to deploy to non-Sun virtual machines in the future, and finally it leaves unsuppressible warnings in our build logs which can mask other warnings.
Is there an open source alternative implementation that we I can deploy with my application that will work well across multiple databases? At a minimum something that supports MySQL.
You shouldn't be directly instantiating implementation of CachedRowSet -- use its Provider to obtain an instance: see http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/RowSetProvider.html (available since JDK7)
In fact, CachedRowSet's interface and related factory are standard/portable.
Something like the following shoud do the trick:
Oracle Implementation Is Open-Source
The question incorrectly states that the Oracle RowSet implementation is proprietary. It is not; it already is open-source.
The source code is released as free software under the GNU General Public Library (GPL) version 2 license with "Classpath" exception. Read the source code to see the license.
So they cannot be withdrawn. You and others are free to maintain or modify these classes provided you follow the terms of the GPL.
JDBC Driver Implementation
Also, some JDBC drivers provide an implementation of RowSet. I do not know if any are open-source, but that would be one avenue to explore.
Here is my improved implementation of CachedRowSetImpl to support MySQL 5.x names and labels. Based on the implementation of thiy guy http://tech.groups.yahoo.com/group/Firebird-Java/message/10715