last modified: October 23 2002
Revision History
-
Jonathan 3.x
Jonathan 2.x
Jonathan 3
October 25 2002: Jonathan 3.0 alpha 10
Jonathan
- API modifications
- Other modifications
- The Kernel.kcf file has been modified. It is now more understandable.
David
- API modifications
- The JacORB POA has been integrated in Jonathan. Thanks to Herve Piccione and Sebastien Thiebaud who performed the initial work at France Telecom R&D.
- Other modifications
Jeremie
- API modifications
- Other modifications
October 22 2002: Jonathan 3.0 alpha 9
Jonathan
- API modifications
- New binder and generally protocol graph design: it is now possible to define the protocol graphs in the configuration rather than in the code. Straight IIOP (i.e. GIOP over TCP/IP) is just a fallback option. WARNING: this modification can result in compatibility problems with some jonathan.xml configuration file.
- The Multiplexing Protocol is not a protocol per se, it is only a node in the protocol graph that enables said graph to fork to any (1..n) branches. This may be useful when needing to export an object to several protocols, e.g. TCP/IP and HTTP, or two TCP/IP instances corresponding to different network interfaces (WiFi, LAN, ...) and an HTTP instance, ... Exporting and binding are symmetrical, and performed on all the lower level layers. However sending is only performed on one branch. That branch is picked according to an externalised policy (see the interfaces MultiplexingPolicy and MultiplexingPolicyFactory for details). Two sample policies are provided, namely the SimplePolicy, which always picks the first session, and the RandomPolicy, which picks a random session.
- Other modifications
David
- API modifications
- Other modifications
- Bug fix in the local optimization of RMI/IIOP.
Jeremie
- API modifications
- Add support for nonstandard stub names.
- Other modifications
- Bug fix in Jeremie class loader.
July 19 2002: Jonathan 3.0 alpha 8
Jonathan
- API modifications
- The Configuration Framework is now moved to a separate project called Kilim. Jonathan has been modified to use Kilim rather than the inbuilt framework.
- Other modifications
- Minor ant build modifications (build the compilers in the classes directory rather than in the source directory)
David
- API modifications
- Other modifications
- Bug fix: When high port numbers are reached (over 32k) they could be read as negative by the IIOP Binder.
- Bug fix: correct the preprocessor for the IDL compiler.
Jeremie
- API modifications
- Trying to unexport a nonexistent object will result in a NoSuchObjectException rather than a NullPointerException.
- Non exported Remote object given as parameter is now sent as is instead of throwing a MarshalException, complying with RMI spec. Bugfix courtesy of Simon Nieuviarts.
- Other modifications
- Change the caching in the stub factories (cache indexed on the implementation class rather than on the class' name). Also, skip the caching mechanism altogether on the client side. This fixes a bug occurring in JOnAS when trying to hot redeploy EJBs.
June 18 2002: Jonathan 3.0 alpha 7
Jonathan
- API modifications
- Add the fork() method to Component to create a copy of that component.
- Other modifications
- In the bootstrap configuration compiler (XML2Kernel), added target file sanity check
- Added possibility to include properties files in configurations
- Changed ClassPathFinder to load resources using a URL
- Modified JAssemblage: split instanciation and initialization phases
Jeremie
- API modifications
- Other modifications
- Bugfix in Jeremie stubs: throw a NoSuchObjectException rather than an org.omg.CORBA.OBJECT_NOT_EXIST when querying a nonexistant object
- Bugfix in Jeremie stubs: allow for exceptions inheriting from RuntimeException to be thrown by a remote method
David
Misc
- Added ant tasks and build files for building Jonathan and running examples
April 11 2002: Jonathan 3.0 alpha 6
Jonathan
- API modifications
- Other modifications
- Jonathan runtime exception now provides full components qualified names and full exception stack trace.
- Jonathan XML decoding and compilation now skips unset components.
- In TcpIpProtocol, a deleting TcpIpChunkProvider notifies the relevant session to void its reference towards it.
David
Jeremie
Misc
- Tests and examples are updated to the current APIs.
- Javadoc fixes.
March 8 2002: Jonathan 3.0 alpha 5
(available under CVS only)
-
Jonathan
- API modifications
- Other modifications
- New architecture for the XML decoders and compilers. The new
architecture is open and permits an easy introduction of new tags to
describe configurations.
- new package org.objectweb.jonathan.libs.kernel.decoders
contains XML decoders.
- new package org.objectweb.jonathan.libs.tools.compilers
contains the individual tag compilers used by XML2Kernel.
- KKernel now uses customizable File2Configuration and
Properties2Configuration implementations.
- Improved javadoc.
- Extensions of the configuration mechanism:
- Properties now accept all built-in types.
- added the handling of internal configurations and factories in
Assemblage constructs.
-
David
- API modifications
- Changed the constructor of EventChannelFactory.EStubFactory to take a
ClassPathFinder instead of a ClassLoader as a parameter.
- Changed the constructor of JStubFactory to take a
ClassPathFinder instead of a ClassLoader as a parameter.
- Other modifications
- Implementation adaptations.
- Correction of a bug dealing with the encoding of wide strings (the null
termination was encoded on a single byte)
- Several bug corrections in the GIOP serialization.
-
Jeremie
- API modifications
- Changed the constructor of StdStubFactory to take a
ClassPathFinder instead of a ClassLoader as a parameter.
- Other modifications
- Implementation adaptations.
- Correction of a bug in the stub compiler : if a RuntimeException was
declared, the generated code was not correct.
-
Misc
- Changed the extension of the compiled configuration files to kcf. However,
the expected runtime configuration file is still jonathan.xml.
Oct 9 2001: Jonathan 3.0 alpha 4
(available under CVS only)
This version only contains some bug fixes.
July 31 2001: Jonathan 3.0 alpha 3
(available under CVS only)
This version mainly introduces David RMI, an implementation of RMI/IIOP in David.
-
Jonathan
- API modifications
- Identifier.bind(Identifier[],Object) changed to Identifier.bind(Identifier[],Context)
- NamingContext.export(Object,Object) changed to NamingContext.export(Object,Context)
- StubFactory.newStub(SessionIdentifier,Identifier[],Object) changed to
StubFactory.newStub(SessionIdentifier,Identifier[],Context)
- Added getScope and setScope methods on Context
- InternalException now features the exception wrapping exception of JonathanException
- Kernel.newContext(Class) changed to Kernel.newConfiguration(Class)
- Other modifications
- Changes in the configurations:
- Major changes in the dtd for configurations; previous configurations must be rewritten.
- addition of the "scope" attribute to the CONFIGURATION elements in the dtd
- new property "jonathan/tcpip/use_address_as_name" to overcome a problem with the
reference implementation of RMI/IIOP
- new properties "david/rmi/java_serial" and "david/rmi/prefer_stubs"
- new property "david/iiop/direct_local_optimization" to indicate whether local access to servants
should be provided or not
- new property "david/JStubFactory/verbose" to indicate whether some warning messages
should be written on stderr or not
- a jonathan.xml file may now be imported at runtime, as a replacement for jonathan.prop
- a mechanism to import properties is still present, to let System properties be used. Atoms may
now be properly defined using properties: the name of the propertuy should end with .atom, and
the value of the property should be the type and class of the atom.
- EBinder sets the interface_type parameter in the bind(...) method of its
identifiers
-
David
- API modifications
- added a context argument to all methods encoding or handing service contexts.
(impacts the Service and ServiceHandler interfaces)
- change in the DavidUnMarshaller API : extra parameter of type Class in
read_Object
- DavidDelegate now extends org.omg.CORBA_2_3.portable.Delegate
- added a new interface DefaultStubTable in david/apis/stub_factories containing
the default stub table used by DavidRMI
- Other modifications
- JStubFactory
- takes advantage of the repository_id, local_implementation, codebase
and stub_class properties that may be passed along in the context of newStub.
- local_implementation: if the object is local, and
/david/iiop/direct_local_optimization is false, the value of
local_implementation is the local object implementation;
- codebase: if the IIOP protocol profile contains a codebase tag, its value
is passed to the stub factory.
- repository_id: a string representing the repository id read in the
IOR. JStubFactory now takes advantage of the repository id (when it
begins with "RMI:") to create a stub of the appropriate type.
- stub_class: a stub class, when provided as an argument to read_Object.
- new delegate classes: CodebasedDelegate and LocalDelegate.
- IIOPBinder:
- new property: /david/iiop/direct_local_optimization to indicate whether the
local optimization should be performed via a stub or not
- IIOPBinder now supplies the local_implementation and codebase parameters to
the stub factory:
- change in the CltIdentifier implementation: relevant tagged components are
directly decoded.
- Changes in the IIOP profile format:
- use of the IIOP 1.2 format for IIOP profiles
- transmission of the Java Codebase in IORs
- introduction of the TAG_JAVA_SERIAL tag (value 1721) to be used as a flag
to indicate that a server may accept standard serialization instead of IIOP
serialization.
- ORBClass: when decoding an object reference, ORBClass now supplies the repository_id
and stub_class context parameters to the identifiers (bind method) and/or
stub factory (newStub method)
- Added the Java Serial Service to let servers transparently use java
serialization instead of GIOP serialisation
- IDL compiler:
- introduction of a non standard generation mode : -stub=rmi resulting in the generation
of rmi-iiop like stubs and skeletons, and of options to control the name mapping
convention between IDL and Java (-rmiIName)
- grouping the code of diverse classes has made possible a better identification of important
functions and thus led to simplifications and factorizations. It has led to a complete
reorganization of the standard idl2java compiler : the back end part is now implemented
by a single class : CodeGenerator
- several bug fixes in native and fixed types.
- slight simplification of the code generated in helpers for unions.
- change in the generation of the Type, TypeHelper and stub for union to account for :
- labels followed by an empty definition
- absence of default label (generation of a __default() method in the Type.
- integration of jrmic -iiop as a separate tool.
-
Jeremie
- API modifications
Jeremie now uses the DavidRMI default stub table.
- Other modifications
- StdStubFactory:
- takes advantage of the remote_stub and interface_type parameters
that may be passed along in the context of newStub.
- remote_stub represents a stub instance
- interface_type represents the Java scoped name of the interface type.
- StdStub sets the remote_stub (of type RemoteStub) property in the context passed
to Identifier.bind(...)
- OptStub now inherits from StdStub, which simplifies a lot the code.
- JIOP sets the interface_type (of type String) property in its bind(...) method.
- EventChannelFactory uses the remote_stub (of type RemoteStub) and interface_type
(of type String) properties in its newStub method.
-
Misc
- various bug corrections and improvements
- new example helloRMI featuring DavidRMI
- some modifications of the Makefile rules, and addition of rules to compile
RMI/IIOP stubs with jrmic -iiop and rmic -iiop
- added the missing NanoXML licence and credits
- added the first jUnit tests in a separate hierarchy
March 15 2001: Jonathan 3.0 alpha 2
(available under CVS only)
-
Jonathan
- Modified the XML configuration file, that now features Assemblages, Atoms, etc.
All factories have been modified accordingly.
- Modified JContextFactory : a context is no longer released when a context
element containing it is reset.
- API modification: Added a getContext() method on Job, so that Jobs may be attached
a context containing information specific to a given Job.
- Added a JContextFactoryFactory implementation, used by JScheduler (through the
kernel)
- Marshallers may now be associated with contexts, so that different kind of
information may be associated with messages.
- Corrected two bugs : missing reset() method on TreeContext, and bug in the
getElements() method in JContext.
-
David
- Major rewrite of the IDL compiler front-end and back-end: the type hierarchy of new compiler
has been simplified a lot. It now uses a Visitor pattern.
- Adaptation of the parser and compiler node hierarchy to account for value types.
- Introduction of a generic "context" table in SimpleNode : propertyTab. It is used
to store all information and data which are not strictly related to the idl
specification.
- Generation of IDLEntity in java classes for IDL types.
- Correction of several bugs related to the generation of Holder files.
- Correction of a bug in a constructor of ConstantNode related to boolean values.
- Correction related to the handling of the default value in union types.
-
Misc
- Changed the Makefile rules for IDL generation, and updated the impacted Makefiles accordingly
- Changed the Makefile variable IDLFILES to IDLTARGET
Nov 20 2000: Jonathan 3.0 alpha
(available under CVS only)
Major revision introducing a new configuration mechanism based on contexts represented by XML files.
-
Jonathan
- Added Context, Name, ContextFactory, Element, Factory, Kernel.xml, context.dtd
in jonathan/apis/kernel
- Added ContextHelpers, EmptyEnumeration, GenericFactory, IteratorAdaptor
NameHelpers in jonathan/libs/helpers
- Added JContextFactory, KContextFactory, KKernel, TreeContextFactory in
jonathan/libs/kernel
- Added XML2Kernel and nanoxml in jonathan/tools
- Added SimpleChunkFactory in jonathan/libs/resources
-
David
- Cleaned-up IIOPBinder, using contexts in an appropriate way.
- Removed org/objectweb/david/apis/contexts/simpleoa/ORBConnecter.java
-
Common modifications
- Changed the contexts packages to binding to avoid confusions.
- Introduced factories to instantiate infrastructure components everywhere.
- Changed the remaining port numbers of type short to integers
Jonathan 2
July 31 2001: Jonathan 2.0.6
(available under CVS only)
-
Jonathan
- Correction of a bug that prevented the use of stubs in hashtables.
- Correction of a non-desired behaviour: when an object A was unexported, and a
new object B with the same hashcode exported, object A was apparently still
accessible from clients.
Feb 10 2001: Jonathan 2.0.5
(available under CVS only)
-
Jeremie
Dec 18 2000: Jonathan 2.0.4
(available under CVS only)
-
Jonathan
- Solved a problem with localhost handling:
- if the provided host is localhost or 127.0.0.1, getCanonicalHostname
returns the IP address of the ConnectionFactory (obtained at creation time)
- getCanonicalHostname is called before trying to resolve a client address.
This solves the problems metionned in
this mailing list message.
-
Misc
- Windows 2000 is now supported by the configuration mechanism.
Dec 8 2000: Jonathan 2.0.3
(available under CVS only)
-
Jonathan
- TCP/IP connection management has been improved a lot (several bug
corrections) and should help correcting problems like those mentionned in
this
message
- Changes in the Makefiles. Configure.java must be recompiled.
-
Jeremie
- Added a new unexportObject method on UnicastRemoteObject implementations
(for MOA and SOA).
Jonathan 2.0.2
(available under CVS only)
-
Jonathan
- Correction of the bug mentioned in this message:
missing synchronization when writing to a socket output stream.
- Correction of a bug that occurred when deleting connections.
-
David
- Corrected a bug that occurred when reading arrays of primitive types
Jonathan 2.0.1
-
Jonathan
- Introduction of a new directory and Makefile rules to create distributions of
Jonathan.
- Minor modifications to installation guide and corrected some bad html links
in the examples documentation.
- Corrected code to re-allow compilation under JDK 1.1.
-
David
- Minor bug correction in the writeChunk methods of the PortableMarshallerFactory.
-
Jeremie
- Minor bug correction in the writeChunk methods of the StdMarshallerFactory.
Jonathan 2.0
-
Jonathan
- Introduction of a new tool (Java2TeX) to extract LaTeX comments from Java
files.
Java2TeX (in org.objectweb.jonathan.tools.weavers) is a special instance of a
framework to manipulate arbitrary comments from arbitrary source files.
- Introduction of Makefile rules to generate html and pdf documents from LaTeX
sources.
-
David
-
Misc
Jonathan 2.0 beta 5
-
Jonathan
- API changes:
- Jonathan is now compatible with JDK 1.3: the lock/unlock methods have been
removed from the org.objectweb.jonathan.apis.resources.Scheduler
interface. Users should now use standard Java synchronization mechanisms.
This caused a Scheduler parameter to be useless in some places: they have
been removed in this case.
- Added the wait(Object lock,long delay) method to Scheduler.
- Protocol abstractions:
- jonathan.apis.tcpcip replaced by jonathan.apis.ip;
- introduced abstractions that may be used by TCP or UDP;
- changed the type of port numbers from short to int to be IPv6 ready;
- Tcp connection management has been splitted into managers and factories,
and all the dependencies to the java.net package have been isolated in a
specific connection factory implementation;
- localhost and 127.0.0.1 are now handled as a synonym for the default
local host name;
- Added non trivial equals() and hashCode() methods to the JDomain Identifiers.
-
David
- IDL compiler:
- Added a DSI implementation.
- API changes:
- added the ORBConnecter interface and changed the ORBClass class to
guarantee that when the ORB.connect() method is used, the bindings will
actually be managed by the specified ORB.
- added JDelegateFactory, and properties to associate a DelegateFactory with
moa and soa.
- Modified recursive type code handling to be CORBA 2.3 compliant.
- Changed the implementation of the hash and is_equivalent methods in
org.objectweb.david.libs.stub_factories.std.JDelegate.java
- CORBA Object method implementations are now borne by Delegates rather than
by skeletons.
Jeremie
- Introduction of a dynamic server mechanism (à la DSI) in Jeremie. A
new example (dynhello) has been added to illustrate it.
- API changes:
- Added static toStub method to
org.objectweb.jeremie.libs.contexts.moa.UnicastRemoteObject,
org.objectweb.jeremie.libs.contexts.moa.MOAContext,
org.objectweb.jeremie.libs.contexts.soa.UnicastRemoteObject and
org.objectweb.jeremie.libs.contexts.soa.MOAContext classes.
- Modified constructors of
org.objectweb.jeremie.libs.presentation.std.StdMarshallerFactory to allow
initialization by Jonathan kernel mechanism.
jeremie.presentation.std.domain, jeremie.presentation.std.ChunkFactory,
jeremie.JRMITSHandler.MarshallerFactory, jeremie.jiop.MarshallerFactory and
jeremie.echannel.MarshallerFactory properties have been added.
- Modified encoding/decoding of service contexts to use a marshaller factory
specified as a Jonathan kernel property. This change allows remote objects
to be passed correctly in transaction service contexts.
- Added check for existing security manager before setting one.
in org.objectweb.jeremie.libs.services.registry.JRMIRegistry.
- stub compiler:
- added a -classpath option;
- made exceptions and errors more informative;
- added patch to permit internationalization (i18n) of stdout and stderr messages
from underlying java compiler.
-
CORBA
- Installation of all CORBA 2.3 standard source files (java and IDL)
- Inclusion of the Notification service in the Jonathan sources. The IDL
files are not compiled by default.
- Added a correct implementation of org.omg.CORBA.PrimitiveKind.
-
Misc
- Improved Makefiles and installation mecanism;
- Various bug corrections, including problems with:
- Locate requests (David)
- Forward Exceptions (David)
Jonathan 2.0 beta 4
-
Jonathan
- The EndPoint type has been separated into SessionIdentifier and
ProtocolGraph to make the concepts more explicit.
-
David
- The JacORB event channel implementation has been ported to Jonathan; a new
example using it has been added.
- The org.objectweb.david.apis.contexts.DelegateFactory interface has been
added to ease the introduction of specific delegates.
- A new option (Idl2Pkg) has been added to the IDL compiler to map IDL modules to
specific Java packages.
-
Jeremie
- If a Jeremie stub is not found for a Remote object, an RMI stub is created
and used instead.
- Stub compiler:
- a new option (-opt) has been added to generate efficient stubs (i.e.,
stubs that don't rely on the reflective facilities of the Java language,
but use a compiled approach to marshalling instead);
- rewrote the JRMI stub compiler to make it more modular;
- generated stub class sources may now be immediately compiled with a
specified java compiler.
- JRMIRegistry:
- added verbose and help options, and improved verbose output;
- added missing createRegistry(port) method.
- Introduced the jeremie.apis.contexts.RMIContext interface in order to be
able to plug the standard RMI classes over Jeremie.
-
CORBA
- Major modification of the org.omg structure and classes;
-
Misc
- Improved Makefiles and installation mecanism;
- Various bug corrections.
Jonathan 2.0 beta 3
-
Equality
between Jeremie remote objects is better handled;
-
A new
property "jeremie.registry.verbose" is now taken into account by JRMIRegistry;
-
The Jeremie
stub compiler now compiles the generated java classes automatically. A number
of options have been added, see the documentation for details.
-
Bug fixes in
JRMICompiler and the Jeremie StdMarshallerFactory.
Jonathan 2.0 beta 2
-
Jonathan 2.0
beta 2 features a new configuration utility, and the provided makefiles have
been revised and improved;
-
The event
channel factory may now be used with the David personality;
-
A number of
bugs of the beta 1 version (mainly in the Jeremie naming service and the IDL
compiler) have been corrected.
Jonathan 2.0 beta 1
-
Jonathan 2.0
beta 1 is a (nearly) complete rewrite of Jonathan 1.4, with a new,
more modular organisation of the code, and a new personality, Jeremie, that lets
programmers develop applications in a Java RMI like style.