Fork me on GitHub

Change History

The following sections outline Oracle Tools project changes in reverse chronological order.

Version 1.1.0: 2013-11-20 17:51

Source and Documentation Contributors

  • Brian Oliver

Global and Cross-Module Changes

  • No Changes.


  • ORACLETOOLS-49: Introduced the concept of Capture to capture a single value from an underlying Iterator. This allows said values to be reused without causing new values to the produced by the underlying Iterator.

  • ORACLETOOLS-51: Introduced the CompletionListener and ExceptionListener interfaces together with FutureCompletionListener and DeferredCompletionListener implementations for the RemoteExecutor framework.


  • ORACLETOOLS-51: Introduced the RemoteExecutor framework to support remote execution of Callable and Runnables in Java-based Applications. Implemented support for both Container-based and Native Java Applications.

    eg: application.submit(Callable<T>, CompletionListener<T>)

    Stateful Callables / Runnables will need to be Serializable in order to be successfully executed correctly, for both in-process/Container-based applications and Remote/Native applications.

    Introduced the package together with a Socket-based implementation.

    This framework is also used to implement "orphan" protection (see below).

  • ORACLETOOLS-52: Implemented "Orphan Protection" for Java-based Applications.

    Refactored how Native Java Applications are started so that they may optionally be "orphaned" if the starting process terminates (deliberately or accidentally).

    Added new options to the NativeJavaApplicationBuilder to selectively enable orphan protection (enabled by default) - if a parent process terminates, child processes terminate.



  • ORACLETOOLS-54: Introduced the ability to use Deferreds to represent Remote Callables together with a new Eventually.assertThat method to allow deferred asserts based on submitted Callables.

    eg: Eventually.assertThat(application, callable, matcher);

    will try to eventually match the result of the specified Callable when executed, possibly numerous times, with the provided application.

  • ORACLETOOLS-59: Introduced the static class to replace the now deprecated DeferredAssert class.


  • ORACLETOOLS-50: Introduced the ability to set the "tangosol.coherence.localport" property and have it automatically set when WKA is set.

  • ORACLETOOLS-53: Refactor Coherence-based Tools to use RemoteExecutors to determine Member state instead of relying on JMX/MBeans. It's now possible to use and control ClusterMembers and Clusters with JMX disabled.

  • ORACLETOOLS-55: Upgraded to use Coherence

  • ORACLETOOLS-56: Introduced the ability to ask the name of a ClusterMember cluster.

  • ORACLETOOLS-57: Introduced the ability specify the operational override for a ClusterMember.

  • ORACLETOOLS-58: Introduced the ability to ask a ClusterMember if a particular service is running.


  • Refactored existing tests to take advantage of the new Remote Executables framework and avoid the requirement to use and configure JMX.

  • Refactored existing tests to take advantage of the new Eventually.assertThat method.

  • Refactored existing tests to take advantage of the Captures when creating Clusters using a ClusterBuilder.

  • Introduced new tests for the new features in the oracle-tools-coherence package.


  • No Changes.


  • ORACLETOOLS-47: Introduced initial Coherence Module for Oracle Tools documentation.

Version 1.0.0: 2013-07-30 13:38


Huge thanks to everyone that contributed feedback, suggestions, documentation and ideas for this release. It's great to see broader application adoption, especially outside Oracle Coherence environments. We're looking forward to an even greater release soon, simplifying the testing process even further!

Source and Documentation Contributors

  • Noah Arliss, Jonathan Knight, Paul Makin, Brian Oliver and Patrick Peralta

Global and Cross-Module Changes


  • ORACLETOOLS-34: Introduced to provide a single distribution of Oracle Tools.


  • ORACLETOOLS-14: Removed Notified Deferred implementation as by nature they are unreliable.

  • ORACLETOOLS-39: Introduced numerous configurable strategies for waiting for Deferreds to become available (as implemented by the Ensured class). These include: constant (polling), fibonacci (random and uniform), exponential (random and uniform).

    Configuring these options occurs by setting the "oracletools.deferred.retry.strategy" system property with the values: constant, fibonacci, random.fibonacci, exponential or random.exponential. The default is now random.fibonacci (instead of constant polling)

    Also introduced the ability to use a system property to set the default retry timeout (which is 30 seconds). The property is: "oracletools.defered.retry.timeout". Units of measure include: ms, s, m and h meaning milliseconds, seconds, minutes and hours respectively.

    Breaking Change: While this is a breaking change, the chance of an application being impacted is very minimal, if at all. Only applications making customize time-out calls, which is rare, will be affected.

  • ORACLETOOLS-40: Refactored Deferred.get() semantics to allow returning null as a valid reference.

    Introduced InstanceUnavailableException to represent the concept that a Deferred instance is currently unavailable, but may become available in the future. ie: this is thrown instead of null being returned.

    Replaced the ObjectNotAvailableException with the UnresolveableInstanceException.

    Breaking Change: While this is a breaking change, the chance of an application being impacted is very minimal, if at all. Only applications creating customized Deferred implementations, which is rare, will be affected.


  • ORACLETOOLS-12: Resolved issue when Native processes would fail to execute due to timing and class-path issues (on Windows Platforms).

  • ORACLETOOLS-13: Resolved issue Oracle Tools virtualization would fail to run when classpaths contain whitespace (on Windows Platforms).

  • ORACLETOOLS-21: Refactored and renamed Virtualization package and associated Virtualizeed Application, Virtualized Process and Virtualize Builders to be themed as being "ContainerBased". This was to clear up possible confusion when running Native applications on Virtualized infrastructure. As part of this work we also renamed ExternalJavaApplicationBuilder to be a NativeJavaApplicationBuilder.

  • ORACLETOOLS-26: Refactored the ApplicationConsole interfaces and implementations to allow separate control of stdout, stderr and stdin.

  • ORACLETOOLS-27: Introduced the concept of "diagnostics" to provide application life-cycle information without requiring redirection of ApplicationConsoles.

  • ORACLETOOLS-28: Introduced the ability to enable remote Java debugging (when using Java-based Application Schemas) for Native Java Applications.

  • ORACLETOOLS-29: Resolved issue where the names of Applications created as part of an Group start at 0 instead of 1.

  • ORACLETOOLS-30: Resolves issue where Native Windows NT / XP processes may hang when being destroyed.

  • ORACLETOOLS-32: ApplicationSchemas now default to inheriting environment variables from the underlying process.

  • ORACLETOOLS-36: Resolves issues where having spaces in a System Property may cause a Native Java application not to start.

  • ORACLETOOLS-37: Renamed and refactored PropertiesBuilder.fromCurrentSystemProperties to return only custom properties. The new method is called PropertiesBuilder.fromCurrentNonStandardSystemProperties.

    Breaking Change: While this is a breaking change, the chance of an application being impacted is very minimal, if at all. Applications using the previous method would not support cross-platform deployment. Changing to the new method resolves this.


  • Introduced to encapsulate Functional and Integration Tests.


  • No Changes.


  • ORACLETOOLS-2: Resolved issue when DeferredAssert would hang (wait for a long time) when querying an MBean for a crashed server.

  • ORACLETOOLS-4: Resolved issue when calling "eventually" on a non existent MBean would hang forever (wait for a long time).

  • ORACLETOOLS-10: Add support for specifying a log destination for Coherence when using a Coherence-based MemeberSchema.

  • ORACLETOOLS-35: Add automatic support enabling file-base XSD loading with Coherence using Java 8 (b91) that includes JAXP 1.5 changes.

  • ORACLETOOLS-38: Add automatic support for running in "java.awt.headless" mode.


  • Introduced to encapsulate Functional and Integration Tests.


  • ORACLETOOLS-19: Introduced an AbtractCoherenceTest to support Coherence Test isolation.

Version 0.0.8 @ 2013-02-26 13:12

Global and Cross-Module Changes

  • Initial Release based on work from The Oracle Coherence Incubator.


  • Defines Core and Shared Interfaces, Classes and Resources.


  • Defines Runtime Process Management infrastructure.


  • Defines JUnit Testing Extensions for Deferred Resources.


  • Defines Extensions to manage Oracle Coherence Runtimes.