JVx 2.3 is out
We're happy to announce that JVx 2.3 is available. The minor version update is more than a small update. It
comes with a bunch of new features. We think it's an update worth:
Here's the list of changes
- Support linking with RoboVM
It wasn't possible to create iOS applications with JVx because it had an internal problem. With 2.3 it will work.
There's still a problem with RoboVM because JVx contains swing UI but if you remove the UI from the jar, everything
will work! - Download via REST
It's now possible to call actions which will return instances of IFileHandle, via generic REST services. The content
will be sent back as binary stream (download). - CORS for REST
Simply set the parameter: cors.origin to the allowed domain names (a comma separeted list).
- Connection pooling
It was possible to use connection pooling with JVx but with some limitations. The current support is an official solution without demand for additional source code. The only thing you should consider is that the initialization of the database should be moved to an event. The DBAccess class got new methods: eventConfigureConnection and eventUnconfigureConnection.
Use configure to prepare the database session before you - Server-side hooks for event processing
JVx 2.3 got invokeLater for server-side calls and we introduced the new interface ICallHandler.
It has some very useful methods for better server control:public CallEventHandler<IBeforeFirstCallListener> eventBeforeFirstCall();
public CallEventHandler<IAfterLastCallListener> eventAfterLastCall();
public CallEventHandler<IBeforeCallListener> eventBeforeCall();
public CallEventHandler<IAfterCallListener> eventAfterCall();public void invokeAfterCall(Runnable pRunnable);
public void invokeAfterLastCall(Runnable pRunnable);
public void invokeFinally(Runnable pRunnable); - Better Deployment support for VFS
We had some crazy tweaks especially for some application servers with virtual file systems like JBoss. We removed the dirty code and replaced it with a more generic approach and now we have nice support for VFS and no more problems with WildFly.
- Filter/Sort events added to IDataBook
public DataBookHandler eventBeforeFilterChanged();
public DataBookHandler eventAfterFilterChanged();public DataBookHandler eventBeforeSortChanged();
public DataBookHandler eventAfterSortChanged(); - Integration of external property files
It's possible to include external property files into your application' config.xml:
<application>
<include>/configuration.properties</include>
<securitymanager>
<accesscontroller>dummy value</accesscontroller>
</securitymanager>
<property name="property.value" value="${value}"/>
</application>The property file (configuration.properties):
securitymanager.class = com.sibvisions.SecurityManager
securitymanager.accesscontroller = com.sibvisions.AccessController
value = value1The virtual result for reading values:
<application>
<securitymanager>
<accesscontroller>com.sibvisions.AccessController</accesscontroller>
<class>com.sibvisions.SecurityManager</class>
</securitymanager>
<property name="property.value" value="value1"/>
<value>value1</value>
</application> - Autodetection of tnsnames.ora
It was possible to set the system property oracle.net.tns_admin for an oracle JDBC driver. New JVx tries to find the location automatically and sets the property if path was found.
- API changes
We did two smaller API changes. The first one:
LoggerFactory.destroy is now public
The class AbstractSessionContext was removed without replacement. The only method, getMasterSession, was moved to ISessionContext. It's now easier to access the current master session in life-cycle object. It shouldn't be a problem for you because AbstractSessionContext was meant as internal class and not for public use. If you had a cast to AbstractSessionContext, simply remove the cast and everything will be fine.
We also have some smaller changes and bugfixes for you, but above list only contains the most important changes. For a full list of changes, please read the Changelog