Release 6.2.1 December 2008
This release is just a smooth-up for some of the classes. That is, making
some protected fields private, streamlining some code, etc.
We removed support for the Jini version 1.x examples. Jini version 2.x has
been available for many years now.
Release 6.2 November 2008
This release adds additional functionality for the Run Time Functions:
Notification
Logging
Statistics Repository
The run time functions load at Tymeac start up. We now provide three GUIs
(and command line access) to reset, stop, display and update (change) these
functions.
Tymeac Interface (and all the implementation classes)
changed to accommodate the above. You must recompile any affected modules.
As of the next release, we are removing support for the
Jini version 1.x examples. Jini version 2.x has been available for many years
now.
Release 6.1 September 2008
This release is a cosmetic upgrade to the server. More of a pretty-up for
the com.tymeac.base classes.
The original Java code started in 1998 for JDK1.1. Ten years later some of
that code still functioned as-is (logging, statistics etc.) So we just brought
that old code into line with newer techniques. We changed all public fields from public to private.
We added an uncaught exception handler for the Monitor to shut down Tymeac
in case of fatal Monitor errors.
We fixed a potential bug is the server shut down logic when many requests
for shut down happen concurrently.
Release 6.0 April 2008
This release is a major upgrade to the server. It's been awhile since the
last upgrade. This release is based on JDK 1.6.
We added the timeout variable in the Processing Application Class as an
updateable field in the Queue Data GUI/non-GUI. There was some minor
restructuring to support this in the TyBase Class.
We added a high water mark field in the Wait Lists. This affects the Wait
List GUI/non-GUI and the statistics.
We added logical number of entries to the Wait List structure. This
requires alteration to both the DBMS Queue Table and the User Queues
structure. You must alter these structures to use this
release.
Eliminated printing the name of the rebinding variable in the RMI
Registry and JNDI Rebinding message. It was causing some confusion.
When Queue Threads change status to "Processing" they reset the cancelled
reason.
Removed the "zero asynchronous requests possibly stalled" message
displaying all the time from the Overall display. The message only appears
now when there are possibly stalled requests.
Changed most 'public' constructors and other methods to 'protected' in
com.tymeac.base (for the Tymeac management Classes.) There is no reason
outside packages should access these Classes. We provide access to execution
information in the TymeacInfo and TymeacUserSingleton Classes as well as the
com.tymeac.client and com.tymeac.client.jframe packages.
We added a demo/comparison between Tymeac and the new Fork-Join package
coming in Java 7 for early adapters.
We include the complete source in the /Source directory as a zip file and
eliminate one downloadable file (the product without full source.)
Previously, we only supplied demonstration classes in the /Source. If users
wanted the complete source, then they downloaded that zip file separately.
As with all software over time, we improved the readability,
maintainability and performance of the product.
Release 5.5 August 2007
This release is the last minor internal restructuring to the server that
was started in release 5.0.
We restructured the Start up Class into six related classes. This helps
in maintaining and enhancing.
We restructured the command line start up for the Jini Server. Before,
the command line arguments were in a configuration file. We moved these to
the command line were they really belong. For the Jini
Server, you need to make minor changes.
We renamed and cleaned up several Classes.
This is the last release using the Java5 (or 1.5) JDK. The next release
will be based on JDK 1.6.
Release 5.4 July 2007
This release is a minor internal restructuring to the server.
We restructured the Tymeac Queue Area. We made the "Area" into a three
level structure.
We restructure the Function Array Classes to be in line with the
Collections Framework.
We're beginning the restructuring of the start-up Class. This beast will
be tamed.
Release 5.3 June 2007
This release is a minor upgrade to the server.
We fixed a minor bug in the wait algorithm for Queue Threads to speed up
de-allocation of the thread when no work was present.
We applied the patch that came out for release 5.2 for the NetBeans GUI
Demonstration classes.
We restructured the way Request-Detail objects are created and
maintained. These object hold data associated with each request. The
Eden-Space of the garbage collector is so efficient, we take advantage of
this.
We restructure the Stall Array Classes to be in line with the Concurrency
Classes.
Release 5.2 March 2007
This release is a minor upgrade to the server.
We added the embedded database shutdown for the Activation system. We
missed this in release 5.1.
We added error recovery to the cancel sync request using a callback. See
cancelSyncReq(). The proper term should be that we trapped the errors and
printed a message.
There can be no recovery from such errors. This functionality requires
internal Tymeac classes and if something goes wrong, it means there is
system damage.
We changed the start up configuration file from a home-grown format to
xml. We said this was coming and here it is. Not to worry, we proved a
conversion tool for the old format. See the TyCfg document for the details.
This means, naturally, that you must convert the old
format to xml before running this release.
As stated in release 5.1, we're in the process of restructuring the GUI
classes. In this release we provide three Demonstration GUI's: T1, T3 and
the Internal Server Test in this new format. If the yelling and screaming
doesn't reach lethal levels, then we'll continue using this new format in
future releases.
Release 5.1 January 2007
This release is a minor upgrade to the server.
There are some bug fixes. As we mentioned below, using no-lock/no-wait
logic is not as easy as it looks.
We added support for embedded databases. Derby and Hsql are the ones we
concentrated on. Tymeac was first built with
the DBMS mode only. Using the standalone mode came later. We only tested with
DB2 and ran into some structure problems when adding Derby (DB2 allowed a
semi-colon (;) after commands, YEAR was a valid column name, etc.)
Therefore, there are name changes to the Log and Stats
tables.
We're in the process of restructuring the GUI classes. In the first release
of Tymeac we used AWT and VisualAge-for-Java for building those. Next we used
Swing and VisualCafe for the GUI's. Both those are no longer supported. We
liked both those products since they generated java files that could be
maintained without the products. We've decided on using NetBeans for
maintaining the GUI's. Even though NetBeans requires an
add-on jar file for execution, NetBeans is free and easily obtainable so there won't be a
problem for other developers.
We're in the process of restructuring some of the base classes. Start-up is
one for sure.
Release 5.0 September 2006
This release is a major upgrade to the server. From a functionality
viewpoint, there is no difference. Tymeac looks the same. From an internal
viewpoint there are major differences. This release incorporates the
java.util.concurrent packages.
In prior releases, there was only course grained locking; i.e.
synchronization. The volatile keyword did not work properly in releases prior
to Java5. If multiple threads wanted access to a shared variable, then both
the get() and put() methods needed to be synchronized.
With Java5, volatile works properly so get() functionality need not lock
the variable in order to read the latest version. Tymeac uses volatile for
variables that are set() by one thread but read by many threads.
The biggest boast in performance comes from the concurrency packages.
All [RMI] Connection threads use CountDownLatch when waiting for Queue
Threads to finish processing in the Synchronous Request method. This
results in significant performance improvements.
Queue Threads use Lock.lock() and
Condition.await()/signal() in place of wait()/notify() when waiting for work
from the [RMI] Connection threads.
The Queue Wait Lists use ConcurrentLinkedQueue in place of a home-grown
pop-up list.
All Synchronous/Asynchronous Request arrays and the Queue Threads
use atomic variables in place of synchronization wherever possible. (Which is
just about everywhere.)
The performance is significantly greater. However, testing of this new
environment requires exhaustive work. We've done the best we can. Many strange
things happen in multi-processing -- beyond the ability of mere mortals to
envision. We look forward to your comments, corrections and suggestions.
Added LoginServer:
This is an example of how to use the RMI Server to front-end a login
sequence before the client may use the server. For those who do not use Jini's
extensible RMI (JERI) this is a way to easily do a login.
Changed Monitor:
Every iteration of the Monitor looked to compress the Tymeac internal
tables used for synchronous/asynchronous processing. This was heavy overhead
with very limited benefit. It also impacted the performance. We eliminated
this compression.
Changed CancelParm class:
Added cancel word long integer. There is no difference to users. Before, on
single param constructor, we used the request id to pass the cancel word. With
restructuring on the Server, we separated the two fields.
Release 4.0.5 November 2004
Added the User Singleton class to help applications using persistent storage.
Minor documentation enhancements.
Minor speed and cosmetic code changes.
Release 4.0.4 October 2004
Added a new shut down request method
public String shutRequest(boolean force);
There were times when the server would not shut down because of unresponsive Queue
Threads. This method forces a shutdown when the boolean is set to true.
As started in release 4, a restructuring is taking place.
Changed/restructured TyBase
Added
public int shutOrigin = 0; // shutdown initiated by
public int startType = 0; // type of Server
These were in TymeacInfo. From a pure user standpoint there is no change.
Changed structure from public instance fields to private and added getter/setter
methods.
Changed TymeacInfo
Removed getBase()
Added getJoinManager()
Removed instance fields
private int status = 0;
private int shutOrigin = 0;
These were moved to TyBase.
Removed constant
public final static int NOT_IN_SHUTDOWN = 0;
The above two instance fields worked together. Some replacement logic for getStatus():
Where TymeacInfo info = TymeacInfo.getInstance();
if (info == TymeacInfo.AVAILABLE ) // (not in shut down)
if (info > TymeacInfo.AVAILABLE ) // (in shut down)
if (info == TymeacInfo.INITIALIZATION) // (not available)
Changed the Jini shutdown exit:
com.tymeac.serveruser.JiniShutDownExit
by replacing getBase() with getJoinManager() see the change to TymeacInfo, above.
Changed shutThread
no longer contains inactivate logic, that now is in
TymeacImpl.shutRequest()
Changed TymeacImpl.shutRequest()
as above and streamlined
Changed monitor
added shut_count for handling a shut down in the inactivate logic
Minor documentation enhancements.
Minor speed and cosmetic code changes.
Release 4.0.3 July 2004
Changed the way Queue Threshold values are entered in both the Queue Maintenance and
Live Queue displays. Previously, one had to enter the zero and decimal place for the
floating point number (0.). Now only the fraction is necessary. 25% was 0.25, now is just
25.
N.B. 5% is 05, not 5.
Changed the Monitor to exit in the run() method at the completion of Tymeac shut down.
This only affects the internal server when not using the shut down thread.
Minor documentation enhancements.
Minor speed and cosmetic code changes.
Release 4.0.2 May 2004
Support for java.util.Preference data which may replace the configuration file (for
DBMS mode.)
Added JavaDoc for some Tymeac base classes to help in documentation.
Release 4.0.1 April 2004
Additional field in The Tymeac Parameter clients pass to the server to include the
cancel word for canceling synchronous requests.
Added support for Portable Object Adapter (IIOP).
Release 4.0 March 2004
We support Jini2.0 and JDK1.4.2. This will be a major upgrade and policy shift.
Our policy was that the binary release of Tymeac supported two prior releases of the
JDK That is, when JDK1.3x was the current JDK. We supported backward to JDK1.1x. The
binary classes of Tymeac were compiled with the JDK1.1 compiler. Therefore, customers who
ran on prior releases of Java could still use the product.
Henceforth, we will release versions of Tymeac on the latest version of the JDK.
Those who are running on prior versions of the JDK can download prior versions of
Tymeac. In this way, we can stay on the cutting edge of technology.
This is mainly due to the Jini2.0 upgrade. Jini2.0 adds:
- Support for secure Jini technology-based programs (a greatly enhanced Security
infrastructure)
- Mechanisms to configure applications at run-time (
Configuration)
- Unity of client-side and server-side programming models (
ProxyPreparer and Exporter)
- An RMI implementation that supports pluggable invocation layer behavior and pluggable
transport providers (Jini ERI)
Currently we have different front-ends for each [TCP, IIOP] transport provider. As RMI
supports more and more communication protocols using an exporter is the right way to go.
We add two directories:
com.tymeac.jini.base
com.tymeac.jini.client
It is our belief that Jeri, with its vast array of security options, is the best way to
use a backend server. With this release we focus on the Jini Architecture as an integral
part of the Tymeac System.
Enhancements:
Additional method in TymeacInterface. In order to support the canceling of synchronous
requests we added a new method
cancelSyncReq(). (See the cancel
document for details.)
Altered method in TymeacInterface. In order to support the canceling of asynchronous
requests
idStatus1Request(). By adding an integer, action to the parm. The
action is 1.is to return the status of a request. The action 2 is to cancel the request.
(See the cancel document for details.)
Addition of the TymeacInternalFunctions and Queues. This is to support the canceling of
synchronous requests and any further internal functionality.
Additional field in both the Tymeac Configuration File (for
use with a DBMS) and the Tymeac User Variables Class (for
stand alone mode.) The field is Login Context, for security checking.
Added security checking in the Tymeac Server driven by the above, login context. Added
security checking in the Tymeac Clients with a command line option. For both of these. see
the security document.
Jini is now part of the basic product. There is a JiniServer for both activatable and
non-activation.
Additional fields in the Tymeac Base Storage (TyBase) for security and Jini. The TyBase
fields were all static, they are now instance.
Additional field in The Tymeac Parameter clients pass to the server to include the
callback for canceling synchronous requests.
Bug fixes:
The bug in the Queue Thread when using an asynchronous request with no output agent
queue has been fixed. The thread tried to store the result of processing into an array
that was never initialized.
The bug in the Queue building class method() has been fixed. It never loaded the
PA_timeout value from the parameter.
The bug in the cfg file write() method has been fixed. It output comments in the wrong
order.
The bug in the _impl shutRequest() method has been fixed. It wrote statistics during
Stage 1 and Stage 2 shutdown. Should only be Stage 2.
Messages were restructured and wrong message/action were corrected.
Withdrawal of Support
Directories for the AWT frame classes has been removed. If you need JDK1.x AWT,
download a prior release
Release 3.0.3.1 December 2003
Bug fixes and cosmetic enhancements to the JFrame Help and
About dialogs.
December 2002
Minor bug fixes.
Release 3.0.3 October, 2002
This is the Open Source release now available on SourceForge.net
Project name for the standard edition is TymeacSE
Release 3.0.2 July, 2001
Enhancements:
For the Java2 environment ONLY.
The request for alternatives to the CLASSPATH for user-written classes has been
answered. This is by adding a URLClassLoader for loading classes when necessary.
Please read the class naming and URL document for
more information.
Withdrawal of Support
As of Release 3.0.1, we no longer support the AWT version of the Configuration
File Maintenance Class. The new information no longer fits on a single window.
When Sun releases version 1.4 of the SDK, we will no longer support the AWT
versions, (i.e. JDK1.1), of the frame classes, (com.tymeac.client.frame and
com.tymeac.demo.frame). Support will only be for the Java2 JFrame classes.
Release 3.0.1 June, 2001
Enhancements:
The request for "we'd rather do it ourselves" for the statistics and log
repositories has been answered.
Previously, if you used a DBMS for storing the Queue and Function data, then the only
option for the statistics and log was also a DBMS. If you used the user classes for
storing the Queue and Function data, then the only option for the statistics and log was a
file.
With this release, if you used a DBMS for storing the Queue and Function data, then the
you may use a DBMS, File, or do it yourself with a user exit class, for the statistics and
log repositories. If you used the user classes for storing the Queue and Function
data, then the you may use a File, or do it yourself with a user exit class, for the
statistics and log repositories.
Please read the alternatives document for more
information.
Bug fixes:
The bug in the DBMS Statistics and Log writing thread has been fixed.
The bug in the Configuration file writing thread has been fixed.
Structure changes:
Both these changes affect the starting of Tymeac. You must make these changes
for the new structure before running Tymeac. Failure to do so will result in the following
errors at Tymeac Start Up:
The Configuration File will fail with a
"format" error.
The User Variables Class will fail with a
"NoSuchMethod" Exception.
The Configuration File has been re-structured. The
[EXITS] Section was missing on the previous release. Additionally, the [ALTERNATES]
Section with several sub-sections were added. This means that you must alter this
file for the new structure before running Tymeac.
The UserVariables Class has been re-structured to add
two Strings: The Statistics Alternatives Class and the Log Alternatives Class. This
means that you must alter this class for the new structure before running Tymeac.
Withdrawal of Support
As of Release 3.0.1, we no longer support the AWT version of the Configuration
File Maintenance Class. The new information no longer fits on a single window.
When Sun releases version 1.4 of the SDK, we will no longer support the AWT
versions, (i.e. JDK1.1), of the frame classes, (com.tymeac.client.frame and
com.tymeac.demo.frame). Support will only be for the Java2 JFrame classes.
Release 3.0 May, 2001
Re-Packaging:
The product was completely re-packaged. The following are the six packages:
- com.tymeac.base
- com.tymeac.client
- com.tymeac.client.frame
- com.tymeac.client.jframe
- com.tymeac.common
- com.tymeac.serveruser
Additionally, there are five packages for the demonstration system:
- com.tymeac.demo
- com.tymeac.demo.frame
- com.tymeac.demo.jframe
- com.tymeac.demo.jini.base
- com.tymeac.demo.jini.client
See the directory section for complete details.
IIOP support
Support for the CORBA IIOP requires SDK1.3, minimally.
Start Up -- You may now use the JNDI Registry for IIOP.
Scripts -- One additional directory was added for the IIOP support:
\Scripts\IIOP.
Throughput -- Since there is significant overhead in the CORBA
Marshalling algorithms, performance is lower than when using a pure Java RMI.
Enhancements:
An additional field, milliseconds, is now part of the Tymeac
Parameter to the Tymeac Server. In this way you may specify the time to wait for
synchronous requests in full seconds, full seconds and milliseconds or just milliseconds,
(by setting the seconds to zero.)
Bug fixes:
The bug in starting all queue threads at Tymeac start up was fixed.
The periodic failure of Tymeac stage two shut down to end the JVM was fixed by making
the "structure change", below.
Structure changes:
The shut down thread now starts at the end of stage two shut down.
Previously, the shut down thread started a stage one and was awakened at the end of
stage two.
Release 2.1.1 March, 2001 -- enhancement upgrade
Tymeac times several phases in the life of a Queue Thread. One of those events is
the time a Queue Thread invokes a Processing Application Class. The maximum
allowable time for this event is four times the Tymeac Monitor interval. Such that
if the Tymeac Monitor interval is 60 seconds, than the allowable time is 240 seconds. When
that time expires, Tymeac marks the status of the Queue Thread as
"cancelled". If the Queue Thread resumes processing then this status code
is reset.
For a "process now" system, this allowable time is more than sufficient in
most cases. It is the other cases that customers require an alternative. This
is the enhancement upgrade.
To accommodate an alternative, each Queue may now have a timeout field. When this
field is zero, Tymeac uses the system default. When this field is greater than zero,
Tymeac uses the timeout field in place of the system default.
In order to accommodate an additional field in the Queue definition, it is necessary to
alter the basic structure of several classes in Tymeac. You may not
apply this enhancement by just overlaying the new Queue Classes over the old classes. You
must make changes to any Queue definitions currently in use.
- The DBMS Queue definition -- add integer field PA_TIMEOUT to the end of
the definition. You may optionally use a default value of zero, (0). Nullable may be
yes or no.
- The internal Queue definition Classes:
TymeacIndividualQueue constructor 2, has a new parameter: int
u_pa_timeout This is a read-only class. We mention it here since, when
using the constructor, it contains an additional field.
public TymeacIndividualQueue(
String u_name,
String u_pa_name,
String u_que_type,
String u_start_threads,
int u_pa_timeout,
int
u_nbr_threads,
int
u_nbr_waitlists,
int
u_nbr_entries,
int u_wait_time,
int u_kill_time,
float u_overall,
float
u_individual,
float u_factor,
float u_average)
There is also an accessor and mutator for this new field.
TymeacUserQueues -- First, backup any current definition of this class
and source files.
TymeacUserQueues.class in <home>/classes/server-user and TymeacUserQueues.java
in <home>/source.
When using the constructor 1 for TymeacIndividualQueue, then you must set the timeout
field to an integer value: tiq.setPa_timeout(0);
When using the constructor 2 for TymeacIndividualQueue, above, one must insert the
timeout value as the fifth parameter. For the demonstration Queue AAAA, the
following is the definition:
// *--- Demo Queue AAAA ---*
temp.addElement( new TymeacIndividualQueue(
"AAAA",
"Demo1",
"no",
"no",
new timeout field --> 0,
3,
10,
30,
10,
20,
0.00F,
0.60F,
0.00F,
0.00F));
There is also an accessor and mutator for this new field.
No other changes are necessary.
You may overlay the other classes in the upgrade package.
Then recompile the TymeacUserQueues.java and place the TymeacUserQueues.class file
in <home>/classes/server-user.
Release 2.1 March, 2000 -- minor upgrade
Support for the Java Look and Feel in the product GUI's, (Swing) is now part of the
product. The AWT interface is still available.
Product GUI's -- Swing is the default. The GUI classes are now
in separate directories, \Swing for Swing, \AWT for AWT. In order to execute a frame
class, such as TyMenu, add the \Swing or \AWT directory to the -classpath, or the system
CLASSPATH.
For example, java
<home>\base;\<home>\swing;\<home>\common-user [or wherever the
TyVariable class resides] TyMenu
The AWT windows easily fit on a 15 inch monitor with 640 x 480 pixel resolution.
The Swing windows, although most fit on a 15 inch monitor with 640 x 480 pixel
resolution, 800 x 600 pixel resolution looks much better.
It is the continuing goal of Cooperative Software Systems, Inc. to allow Tymeac to
exist with the smallest footprint.
Samples -- Two additional directories were added for the sample code:
\Swing and \AWT.
The frame classes, TyDemoT1, TyDemoT3 and TyDemoJiniT1 are in both directories for
Swing and AWT.
Release 2.0 October, 1999
This release contains:
- Support for the Java 2 platform Activation Framework.
- Sample code for using Tymeac with the Jini Framework.
- Tighter code in thread handling algorithms.
- A smaller footprint overall.
- Enhanced GUI's.
- Documentation enhancements.
- JavaDoc in Frames/NoFrames.
- Various code/documentation fixes/clarifications requested along the way.