This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information

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 = value1

    The 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