From: Michael R. <mi...@ru...> - 2004-07-29 13:47:50
|
Hi, The Community OpenORB 1.4.0 BETA2 is out! After nearly 8 months of testing and bug-fixing, the OpenORB community is proud to release the second beta of "The Community OpenORB" product suite version 1.4. The archives of all packages can be found at the SF project download area: http://sourceforge.net/project/showfiles.php?group_id=43608 Have fun, The Community OpenORB Team Changes: ======== The following list shows the changes since the first beta release only. The complete list of changes per package is available in the WHATSNEW file included with each module. General: -------- - Fixed various warnings Eclipse 3.0M6 complained about. - Added Eclipse project files (.project and .classpath) the project can now easily be imported by New->Project->Import From existing Source - Placed compiler cache files in build directory, caches are now deleted by invoking the build target "clean" OpenORB: -------- - Fixed bug #955143. The problem of marshaling the array type org.omg.CORBA.Any[] was due to a different behaviour of the parser in the simple case (org.omg.CORBA.Any) and the array type. This problem only appeared when org.omg.CORBA.Any has not been parsed before. But our test case RemoteComplex has another method that just uses the type org.omg.CORBA.Any so that this bug never showed up under UNIX. Only Windows uncovered the problem but it is still not known what the difference between the Windows VM and the UNIX VMs was. - Always use the native library on AIX with VM 1.4.x. - When setting the property UtilDelegateImpl.setLocalCodebaseOnly(true) we don't want any RMIClassloader to attempt to load the class. In normal projects client and server side contain the classes that are necessary for marshaling/unmarshaling the transfered types. I have never seen a project where classes are loaded dynamically from a remote location. Though the UtilDelegateImpl wastes a lot of time trying to load a class using the RMIClassloader. The reason is simply standard compliance because the Java2IDL spec. requires exactly this behaviour. The default behaviour of the method UtilDelegateImpl.loadClass() is the standard compliant. With the property mentioned above the costly class loader operations can be skipped. - Added an optimization to ORB.lookup_value_factory(). This method always perfoms expensive lookups although it should never be used for any RMI type. - Wrapped an unmarshalling call into a PriviledgedAction to make it work even in restricted environments. - Started adding a time measurement wrapper around test cases to be able to detect hanging or long running test cases. - Added missing class org.omg.CORBA.ObjectHelper to src/omg to make OpenORB compile under IBM JDK 1.4.2 as this class seems to be missing from IBM's server.jar in 1.4.2 whereas it was still present in version 1.4.1. - Fixed boolean property parsing for the iiop.useNativeLibrary. OpenORB's getBooleanProperty assumes each value not equal to 'false' or 'no' as true, so when Ant is passing a property like this: iiop.useNativeLibrary=${useNativeLibrary} because the property has not been set OpenORB evaluates the property to true and wants to load the native library later in the tests. - Added a Codec test case to verify a problem reported by Mathieu Vadet (mathieu _dot_ vadet _at_ fr _dot_ thalesgroup _dot_ com). - Fixed a bunch of checkstyle violations. - Added read/write_vale/abstract_interface to LocalInput/OutputStream classes. This fixes a NO_IMPLEMENT exception reported by Sumedh Mungee (sumedh _at_ nms _dot_ fnc _dot_ fujitsu _dot_ com). - In rare instances a thread deadlock can occur between "org.openorb.orb.io.BufferSource.setException()" and "org.openorb.orb.iiop.IIOPClientRequest.lastReplyMessage()". What happens is that "IIOPClientRequest.cancel()" (holding the 'm_sync_state' lock) is called at the same time as "BufferSource.next()" (holding the 'BufferSource' lock) generates a firing of the attached 'LastMessageProcessedListener', calling "IIOPClientRequest.lastReplyMessage()", which needs the 'm_sync_state' lock. The solution I've come up with is to make the "BufferSource.next()" method release the 'BufferSource' thread lock before calling the attached 'LastMessageProcessedListener'. As part of this, I've moved the functionality of the 'BufferSource.lastMessageProcessed()' method into "BufferSource.next()". This fix was contributed by Eric Thomas (e _dot_ thomas _at_ isti _dot_ com). - Fixed a sporadic NPE in Delegate.java. - Added fix for bug #968135 contributed by Dave Raymer (raymerd _at_ users _dot_ sf _dot_ net). - Improved documentation for idl2java Ant task. - Added flag "no-rmi-test" to the build process so that RMI test can be disabled while the Java2IDL compiler is being fixed. - Improved exception message when the types during a PortableRemoteObject.narrow do not match. - Added a message text to the ClassCastException thrown by the method PortableRemoteObjectDelegateImpl.narrowExt(). - Do not signal an unexpected case when there is no server side ORB available. - Fixed order with which the compilers are initialized. The method execute_compiler shows the copyright header and reads a flag that has not been parsed from the commandline at that time. - If a "LOGGER" is provided in the properties that are passed to ORB.init(args, p), that logger is used to initialize the orb and initializer loggers. In that case, the priority setting in the configuration is basically ignored. - Fixed some problems with the debug input and output streams which would not work under Win32 and were prone to overwriting exisiting logs. - Refactored ConfiguredSocketFactory to use a stream decoration strategy for wrapping socket input and output streams. This framework is more powerful and robust than the functionality previously provided by setting the properties: iiop.SocketOutputStreamClass iiop.SocketInputStreamClass The use of these properties is now deprecated. - Fixed some threading errors including use of double-check locking. - Fixed filename to classname convertion in the Java to IDL compiler to handle '\' path separators in addition to '/' path separators. - Fixed problem in the IDL to Java translator for valuetypes that support interfaces from a different module. - Do not show a warning for an unknown policy value during POA creation because it will be handled later on by a policy factory. - Indicate the pool manager thread to shutdown during ORB shutdown. - Set a name for the ServerManagerImpl's PoolThreadManager thread. - Set a name for the UtilDelegateImpl's ORBDaemon thread. - Improved error messages in IIOPTransport in case of connection failures. Thanks to Richard G. Hash <richard _dot hash _at_ openspirit _dot_ com> for bringing this to our attention. - Fixed an alignment problem in CDROutputStream that occured when marshalling an empty long[], bug #902049. Thanks to Michal Jelen <michal _dot_ jelen _at_ aipsafe _dot_ cz> for investigating this problem. - In ORB.init() methods, added checking Applet parameters for the ORB class name and the orb.properties file from user home. - Fixed a marshaling problem in the RMI-IIOP layer that was causing VM crashes. When marshaling a RemoteException the base classes are RemoteException->IOException->Exception->Throwable. Only RemoteException and Throwable have members that are serialized. The special situation is that Throwable has a writeObject() method but no readObject() method. This leads to a code path in ValuHandlerImpl.readValue() that does not seem to be used before. The code path was calling defaultReadObject( ..., sc ) where sc was the object stream class of RemoteException leading to the behaviour that only the detail member of RemoteException was read from the stream. The stack trace elements, a member of Throwable, was never read. This was leading to a VM crash when the VM tried to access the stack trace of the RemoteException. - Added the patch from tigerf _at_ sf _dot_ net for bug #873558. - Fixed the broken IDL reflection example. - Fixed a StackOverflowError (due to an infinite recursion on initCause) when the ORB class is not found. - In OMG's ORB.init(...) operations, added checking for ORB class properties passed through the props parameters to ORB.init(...). - Added the ORB.destroy() operation as it is defined in the CORBA 2.4 spec (Section 4.2.3.5). - Added the ORB.destroy() implementation along with changes to shutdown() and finalize() in order to check for multiple calls to these methods. - Fixed a NPE in idl2java Ant task when verbose="true", Sourceforge bug ID 881983 - Added a property "openorb.rmi.use_native_library" which can be used for deciding whether the RMI-IIOP engine is using the JDK inherent mechanism or a OpenORB native library as its unmarshaling engine. The native library can be found in the CVS module "native" but it must be compiled for the target platform and put on the library path in order to be found by the System.loadLibrary("openorb") call. There are two reasons for adding such a library: 1. The JDK has a problem on a certain platform with accessing private native methods in JDK internal classes. (That was the case for IBM JDK 1.4.1 on IBM AIX 5.2L where a UnsatisfiedLinkError occured although the native library libjava.a was loaded during VM startup. The problem did not occur on the same JDK under SuSE Linux 9) 2. A new JDK comes out and the developers have changed the internal structure of the unmarshaling engine again so that the pure Java mechanism doesn't work. In this case the library can be compiled for the platform (it might even be already compiled for that platform) and used to make the marshaling work with this new JDK. - Fixed the discoverage of the allocateNewObject method for IBM 1.4.x JDKs. - Fixed a bug in the DeserializationKernelFactory which caused no other kernel than the Sun kernel to be created. - Fixed a bug in the DeserializationKernelIBM class which was causing demarshaling of obejcts to fail. - Added support for IBM JDK 1.4.1 by adding a new class DeserializationKernelIBM14 where the new IBM JDK 1.4.x classes will be used internally. - Fixed the calculator rmi example by adding the right property to instantiate the JNDI context factory. - Fixed a ClassCastException when the ManagementBoard was launched via the launch script. - Added a patch from Alexej Vlasov <lexas _at_ bssys _dot_ com> which fixes a problem with fragmented messages. - Added cachefile attribute to idl2java and java2idl ant tasks to allow the user to control the cachefile location (old behaviour and new default is to use the current directory) Tools: ------ - For IBM JDK 1.4.2 the ibmorbapi.jar must be put on the jdk.runtime.jars property otherwise org.omg.CORBA.SystemException will not be found. - Added HSQLDB jar which substitutes the InstantDB formerly available for OTS only. - Added the native library jar to this module. A native library will currently be extracted for AIX only. - Switch to checkstyle 3.4 (because of fix for bug #895072). - Changed the Copyright year from '2003' to '2002-2004'. - Fixed compilation under IBM JDK because the runtime libraries there are not rt.jar, but core.jar and server.jar. - Fixed the service option: writeIORFile to respect file names instead of folders only. Patch contributed by Richard G. Hash (richard _dot_ hash _at_ openspirit _dot_ com). - Optimized NumberCache and CharacterCache, removing the caching of MIN_VALUE and MAX_VALUE. The cache range is now configurable using system properties, see the javadocs for details. - Added JUnit tests for caching. - Added ConfigUtils class to hold any common config code. - In ServerBase, added more searching for the ORB class according to the spec (e.g., system properties and orb.properties file) in deciding whether the OpenORB ORB shall be used or not. - changed ZipUtil method names CreateZip, OpenZip and CloseZip to lowercase (binary incompatible change) - Added the NamingService JNDI jar to the classpath when running orb examples. - Updated Ant to version 1.6.2 as it seems to work with IBM JDK 1.4.1 without problems. The old 1.5.1 version was causing classloader problems during javac tasks and other strange problems. - Upgraded to checkstyle 3.3. InterfaceRepository: -------------------- - Fixed bug #800327 (FullInterfaceDescription: no transient hull). - Fixed the idl2ir script which now passes the openorb.home.path property as VM parameter to the application. NamingService: -------------- - Added a fix for the JNDI context factory to use the fallback if all other ways fail. NotificationService: -------------------- - Fixed copy+paste error that lead to BAD_OPERATION when extracting long long from an Any. This affected filtering NotificationService Events that contained long longs. (EvaluatorUtility) - Added a test case for bug #524478. The exception does not seem to occur anymore. - improved Pusher log messages. - PushConsumers that continue to fail with SystemException for longer than notify.resourcesTimeout are now disconnected. This way the server can free resources for clients that have terminated without properly disconnecting themselves. Contributed by Eric Thomas. - incorporated partial patches from Richard G. Hash to get subscription_change() to work for push events PersistentStateService: ----------------------- - Fixed examples: org.openorb.pss.examples. memory.basic|transactional.* file.basic|transactional.* database.basic|transactional.* - Fixed copy and paste bugs in examples and added loading of OTS profile so that the transactional examples will work. - Added cachefile attribute to psdl ant task to allow the user to control the cachefile location (old behaviour and new default is to use the current directory) TradingService: --------------- - Fixed copy+paste error that lead to BAD_OPERATION when extracting long long from an Any. This affected filtering NotificationService Events that contained long longs. (EvaluatorUtility) - Applied patch for bug #799051. It was not possible to override a property mode. Contributed by Sylvain Leblanc (sleblanc _at_ users _dot_ sf _dot_ net). - Applied various patches contributed by Richard G. Hash (richard _dot_ hash _at_ openspirit _dot_ com): Changes are to not throw exceptions using the default constructor for exceptions that take string args. If you are running against an orb that doesn't allow null strings to be marshalled these cause BAD_PARAM. Also fixed line 210 of the Lookup.query() method where the tbl.get() wasn't using the correct argument to look up the property(s). This would cause a CosTrading.Property[] array to be created with null contents, causing a CORBA_UNKNOWN on the client side. - Fixed a bug in the service tupe compiler. When not using the keyword mandatory then the PROP_NORMAL was used but a trailing semi-colon was not appended. - Added a test case to verify the previous fix. - Fixed bug #905379 (NPE in withdraw_with_constraint). - Added cachefile attribute to stdl2java ant task to allow the user to control the cachefile location (old behaviour and new default is to use the current directory) TransactionService: ------------------- - Substituted InstantDB by HSQLDB 1.7.2. - Added fix for bug #832259. Connections should be registered as resource only when the transaction is active. Contributed by Alex Andrushchak (alan13 _at_ users _dot_ sf _dot_ net). - Use Avalon loggers instead of static methods in Verbose class. Messages will now go to the logging backend and not to System.out. Errors will always result in Exceptions instead of System.exit() TimeService: ------------ - Corrected the wrong implementation of UTC time. The value in a UtcT shall use the time base at 15 October 1582 00:00:00 GMT at a precision of 100 nanoseconds. The old implementation used the Java Date, which has time base 1 January 1970 00:00:00 and a precision of milliseconds. Also updated the spec version to Time Service Spec 1.1 (formal/02-05-06). Bug Reporting: ============== Please report any problem you find to the SourceForge mailing list ope...@li.... When the problem is identified as a bug it will be filed at the SourceForge bug tracking facilities. |