1. GemBuilder for Java 3.1.2 Release Notes

GemBuilder for Java (GBJ) version 3.1.2 is a new release of the GemBuilder for Java product. This release provides compatibility with GemStone/S 64 Bit version 3.3, and includes several bug fixes.

These release notes provide details of the changes between the previous version of GBJ, version 3.1.1, and this release. Please read through them before installing, to acquaint yourself with the changes. If you are upgrading from a version earlier than 3.1.1, please refer to the Release Notes for each intermediate release as well. In particular, version 3.1 contained substantial internal redesign and significant changes.

To install GemBuilder for Java v3.1.2, follow the instructions in the GemBuilder for Java Installation Guidefor v3.1.2.

This version of GemBuilder for Java supports GemStone/S 64 Bit v3.3 and later only, and cannot be used with 32-Bit GemStone/S.

Server keyfiles and GBJ

With versions of GemStone/S 64 Bit v3.2 and later and GemBuilder for Java v3.1.2, authorization for using GemBuilder for Java is provided by the GS/64 keyfile. You will need to have a keyfile that provides authorization for use with GemBuilder for Java in order to use GemBuilder for Java.

Keyfiles for versions earlier than GemStone/S 64 Bit 3.3 cannot be used in version 3.3.

If you require a keyfile, write to keyfiles@gemtalksystems.com, or contact GemTalk Technical Support.

Supported Platforms

GemBuilder for Java version 3.1.2 is tested and supported on the following GemStone server product versions and platforms:

GemStone/S 64 Bit 3.3

  • Solaris 10 and 11 on SPARC
  • Solaris 10 on x86
  • AIX 6.1 and 7.1
  • Red Hat Enterprise Linux Server 6.4, 6.5, and 7.1
  • Ubuntu 12.04
  • SUSE Linux Enterprise 12, on x86
  • OS X 10.9.5 (Mavericks), with Darwin 13.4.0 kernel

Changes and Bugs Fixed

Updated version of Java JDK required

v3.1.2 of GBJ requires Java version 8. It was built and tested using 1.8.0_51.

Support for using GemStone notify set to notify GBJ of object changes.

GBJ now supports a more java-centric way of receiving notifications for changed objects; this notification is similar to how transactional events and gem-to-gem signals are handled.

This is activated by setting the GbjSession field objChgNotify to true.

The objects for which you want notification on changes are set using the standard GemStone server mechanisms, e.g. System class >> addToNotifySet:. For more on this mechanism, See the Programmers Guide for GemStone/S 64 Bit.

The application then uses an application-specific subclass of GbjObserver, overriding the method update() to catch object notify signals via the notify message "ObjChg". For more detail, see the javadocs for the GbjObserver class.

Using monitorChangedObjects can result in GCI Error 2203

When activating object change monitoring via a GbjSession's monitorChangedObjects flag, if the GbjSession connect() call is immediately followed by another server interaction, it was possible to encounter a GbjException on GemStone error 2203 - "GCI operation requested while a nonblocking or thread safe call in progress for the session". (#44646)

GbjLauncher occasionally triggered NullPointerException

When starting the GbjLauncher, it will occasionally trip over a NullPointerException during initialization of its Java Swing graphics components. (#40614)

Some GBJ Exceptions produce stack traces without message

Some GbjException stack traces returned null, rather than the appropriate message. Now, these messages are included; the header format has also changed slightly, from "GCI Interface Error/" to "GBJ Error:". (#44705)

GbjSession registerStub() broken

Using the GbjSession method registerStub( ) caused the GbjGciException: "GCI Interface Error/Object table put on oop zero". (#44618)

ClassCastException when using client forwarders

Trying to use a client forwarder in GS smalltalk code to a java method on the client triggered a java.lang.ClassCastException. (#45749)

GbjSession.montiorSessionSignals triggered "GBJ classes not loaded" error

Gem-to-gem and object change notification are activated by setting the flag monitorSessionSignals to true. This triggered a GBJ classes not loaded error during login. (#44659)

Android-related issues

GbjTest now formatted for Android Studio

The GbjTest.zip containing the Android example now uses the IntelliJ IDEA based setup, Android Studio, rather than the Eclipse/ADT environment. (#44891, #44523)

Android getObjs( ) call can overflow internal table

Android applications calling function getObjs( ) that retrieve more than 512 objects can exceed the capacity of the JNI internal local reference table. (#44577)

GbjTest Android demo does a force close on orientation changes

The supplied Android demo application GbjTest does a force close when the orientation of the phone changes from portrait to landscape. (#44576)