Solaris 64-bit on SPARC
Windows on x86 and x64 (64-bit Xeon and Opteron)
RedHat Enterprise Linux 5.0 on x86, x64 (64-bit Xeon and Opteron)
SuSE Enterprise Linux 10.0 on x86, x64 (64-bit Xeon and Opteron)
HP-UX 64-bit on PA-RISC (classical and standard C++)
HP-UX 64-bit on Itanium (classical and standard C++)
AIX 64-bit on PPC (classical and standard C++)
This release note contains information specific to the Borland VisiBroker 8.0 release. This is a major release of the VisiBroker product suite that includes a value-added feature set and also addresses most of the customer-reported problems.
This release note contains the following sections:
Instead of having a single, monolithic ORB library as in
	previous versions, VisiBroker for C++ 8.0 has a kernel library, the
	ORB Core, and six component libraries. The ORB Core needs to be
	linked to any VBC application, while the component libraries can be
	selected on demand by linking or using property.
In addition,
	to reduce the migration effort, VisiBroker for C++ 8.0 also provide
	a library having the same name (The library suffix may be different
	on some platforms) as previous single ORB library. Please see
	Installation changes for more
	information on the library names. 
	
VisiBroker for C++ now conforms to CORBA 3.0 specification. All changes between the earlier 2.6 and 3.0 are implemented. However, please note that CORBA Component Model (CCM) and GIOP 1.3 related features are NOT implemented.
VisiBroker is now supported on IP v6 infrastructure on Windows. On other platforms, the support already exists. A new property, vbroker.se.xxx.scm.yyy.listener.preferIPv4Stack is introduced. This is a C++ only property. The default value is true. The property will be suppressed if vbroker.se.xxx.host is set to be IP address.
VisiBroker for Java now conforms to CORBA 3.0 specification. All changes between the earlier 2.6 and 3.0 are implemented. However, please note that CORBA Component Model (CCM) and GIOP 1.3 related features are NOT implemented.
Compilers java2idl and java2iiop in VisiBroker 8.0 can now parse Java 1.5 language features. This also includes support for marshalling Java Typesafe Enum in the ORB.
VisiBroker for Java now supports true message fragmentation to improve performance and memory utilization in the marshalling engine when request/reply payload is high. In addition to that, if message fragmentation is being used and multiple client threads are writing on the same connection then requests are no longer serialized. Message fragmentation is off by default; it can be turned on using the property vbroker.orb.fragmentSize
VisiBroker is now supported on IP v6 infrastructure on Windows. On other platforms, the support already exists.
VisiTransact completes the transaction successfully if no
	errors are found during the two-phase commit protocol. If any errors
	are encountered, however, it puts the transaction in the retry pool
	so that the Transaction Service can later attempt to run the
	two-phase commit protocol to complete the transaction. The
	transaction is retried based on the retry time. By default, on
	failure, transaction is retried for ever unless a stop completion
	command is issued from VB Console to stop the retry attempts.
In
	VB 8.0 a property vbroker.ots.completionRetryAttempts is
	defined to configure the retry attempts. This poperty takes an
	integer value "n" and behaves the following way:
n <=
	0 : Default behaviour where the txn is forever put in RetryQ
	computing the retrytime.
n > 0 : Transaction is put in retryQ
	and during nth attempt txn is run to completion and no retry
	attempts would be made on it again. 
	
VisiBroker for Java now supports its clients to become OTS clients to become transaction originators and servers to become transactional servers. In earlier versions, for Java clients to interact with OTS, Borland AppServer components were required. This dependency has now been removed. Please note that session management functionality needed for recoverable servers talking to backend resources is not provided as this feature is almost infringing on J2EE realm.
OTS specification compliance is 1.4
To enable this feature set vbroker.orb.enableTransactions=true.
VisiSecure 8.0 for Java, now, ships a GUI based JAAS callback
	handler, which works with all shipped login modules and Certificate
	based credential acquisition. The callback handler is based on Swing
	and works on all supported JDK and platforms uniformly. In order to
	use the callback handler, please set callback handler property to
	the fully qualified class name of the handler, as
	follows.
vbroker.security.authentication.callbackHandler=com.borland.security.provider.authn.DialogCallbackHandler
		
VisiSecure 8.0 for C++ , now, enables applications to specify
	the CRL of the trusted certificate that is being added through
	VBSSLContext::addTrustedCertificate API call (see header file
	vbssp.h)
class _VBSECEXPORT VBSSLContext {
…
virtual
	void
addTrustedCertificate ( const CORBAsec::X509Cert&
	trusted, 
const CORBAsec::ASN1Object* crl = NULL) =
	0;
…
};
The new parameter in VisiSecure 8.0
	for C++ is printed is shown above. It is defaulted to NULL, in which
	case it assumes that there is no CRL associated with the passed
	trusted certificate, which is exactly what happens in the former
	release, in which only the first parameter exists.
The call
	accepts CRL binary DER data that is wrapped in a CORBA octet
	sequence object (CORBAsec::ASN1Object is just a typedef to
	CORBA::OctetSequence).
For converting a CRL form B64 text to
	binary DER format, a method is added into the
	CertificateFactory.
class _VBSECEXPORT CertificateFactory
	{
…
virtual CORBAsec::ASN1Object*
importCRL( const
	CORBAsec::ASN1Object& b64crl ) const = 0;
…
};
The
	property vbroker.security.CRLRepository in former release is
	deprecated in 8.0, for CRLs, applications are expected to use the
	new API that provides explicit association between the trusted
	certificate and its CRL. 
	
Borland VisiBroker must be licensed and registered before it will run; there is no grace period. However, you may start the LM Administrator tool and then license the application remotely. For instructions on how to register your license, go to http://support.borland.com/kbshow.php?q=30254
For VisiBroker platform information, go to: http://support.borland.com/kbshow.php?q=29385
Native code set for char (tcsc) = ISO-LATIN-1 (ISO-8859-1)
Conversion code sets for char = -Nil-
Native code set for wide char (tcsw) = UTF-16
Conversion code sets for wide char = -Nil-
As the charset of UCS-2 Level 1 is compatible with UTF-16, UCS-2 Level 1 is also supported for VisiBroker for C++.
Please see the Client Basics chapter of the VisiBroker for Java Developer's Guide.
Instead of having a single ORB
	library in previous versions, VisiBroker for C++ 8.0 has a kernel
	library, the ORB Core, and six component libraries. The ORB Core
	needs to be linked to any VBC application, while the component
	libraries can be selected on demand by linking or using
	property. 
In addition, to reduce the migration effort,
	VisiBroker for C++ 8.0 also provide a library having the same name
	(The library suffix may be different on some platforms) as previous
	single ORB library.
| Component name | Library base name | How to enable | Exported header file | Name of property | Default value | Comments | 
| Interface repository | ir | Linking | ir_c.hh * | 
 | 
 | 
 | 
| DSUser | dsuser | Property | 
 | vbroker.agent.enableLocator | True | 
 | 
| Server manager | srvrmgr | Property ** | servermgr_c.hh, servermgr_s.hh | vbroker.orb.enableServerManager | False | 
 | 
| Dynamic any | dynany | Linking | dynany.h | 
 | 
 | 
 | 
| Firewall | fw | Property | firewall_c.hh | vbroker.orb.enableFirewall | False | New property in 8.0 | 
| Location service | locsvc | Linking | 
 | 
 | 
 | 
 | 
| Core ORB | orbcore | 
 | 
 | 
 | 
 | 
 | 
| Complete ORB wrapper | orb | 
 | 
 | 
 | 
 | Static library wrapping all the components. Provided for backwards compatibility.*** | 
* An application needs to include “ir_c.hh”
	explicitly, or define _VIS_INCLUDE_IR before including “corba.h”.
	
** Linking if application explicitly uses definitions in Server
	Manager Header files. 
*** For HP-UX PA-RISC platform, the
	library is dynamic link library with .sl extension, while for HP-UX
	Itanium platform, the library is dynamic link library with .so
	extension. 
	
VisiBroker for C++ is not binary compatible with previous releases including VisiBroker 7.0. In this release, the monolithic ORB has been componentized as explained in Installation changes section. Because of this feature, it was difficult to maintain binary compatibility.
The libraries' naming convention in VisiBroker for C++ of HP-UX Itanium platform has been changed from VisiBroker 7.0. They are now following the VisiBroker 8.0 standardization, which is: standard libraries will be having _p infix, while classical libraries do not have. E.g. liborb64_pr.so.8.0 is the standard library, while liborb64_r.so.8.0 is the classical one.
idl2java compiler has introduced a fix related to the section
	4.18.2 in IDL2Java specification 1.3. As shown below, if you have an
	IDL using typedefs on the typedef of a sequence or an array and they
	are later used as a parameter to an operation: 
typedef
	XXX A; // XXX is a sequence or array
typedef A B;
interface
	I {
void op(inout B param);
};
then the method
	parameters in interface I's stub and skeleton are different from
	those generated in VisiBroker 7.0. The difference is shown
	below: 
void op(BHolder param) { ... } // in
	VisiBroker 7.0
void op(AHoler param) { ... } // in VisiBroker
	8.0
As per IDL2Java specification, idl2java compiler in
	VisiBroker 8.0 will NOT generate holder class for B; it is required
	that you update the client and server code and make use of A's
	holder class 
	
Compilers java2idl and java2iiop in VisiBroker 8.0 can now parse Java 1.5 language features. This also includes support for marshalling Java Typesafe Enum in the ORB.
| Property | Default | Description | 
| vbroker.orb.enableFirewall | False | Loads the required firewall library. | 
| Property | Default | Description | 
| vbroker.orb.enableTransactions | false | Enables transaction support. Loads the required transaction interceptors. | 
| vbroker.ots.currentName | NULL | The Smart Agent will find the named VisiTransact Transaction Service instance anywhere on the network | 
| vbroker.ots.currentHost | NULL | The Smart Agent will find any available VisiTransact Transaction Service instance that is located on the specified host | 
| vbroker.ots.currentFactory | NULL | VisiTransact uses the specified IOR for the requested Transaction Service (CosTransactions::TransactionFactory) to locate the desired instance of the VisiTransact Transaction Service on the network. This argument enables VisiTransact to operate without the use of a Smart Agent (osagent). | 
| vbroker.ots.currentTimeout | 0 | Sets the transaction timeout value for Current. If the transaction is still alive after the timeout expires, the transaction is automatically rolled back. | 
| Property | Default | Description | 
| vbroker.ots.completionRetryAttempts | 0 | Property to configure the retry attempts of failed transaction completion. | 
The readme.html bundled with the product has invalid links, the following links need to be accessed instead:
Release Notes - http://techpubs.borland.com/am/visibroker/v80/en/VBroker_80_ReleaseNotes.html
VisiBroker documentation on the web - http://techpubs.borland.com/am/v80/
Newsgroups - http://support.borland.com/community/index.php?t=index&cat=35&
Request is not serviced when using Main Thread Model with LIOP in Windows(CR9186). To work around the problem, please specify the property vbroker.se.liop_tm.scm.liop_tm.manager.enabled=false. This issue will be resolved in a future release.
For IOR that is registered with OAD using oadutil, we will need to omit the "-e -vbroker.oad.locateAlways=true" property to allow spawned Server to locate OAD. Hence, Server will be slow in starting up.(CR9449)
(On Win and Solaris)Applets with callback objects will fail to load because of API changes in org.omg.PortableServer.POAManager interface. These changes were done as part of CORBA 3.0 specification. To work around the problem use the vbjendorse.jar. This issue will be resolved in a future release.
For VBJ Server that is registerd with OAD using oadutil will now need to have "-e -vbroker.oad.locateAlways=true" added, else client will not be able to locate the VBJ Server that is started by OAD and returned with CORBA::NO_RESPONSE. (CR9443)
When a multi threaded java OTS client interacts with a PMT enabled VBC server, the results are not consistent (CR8989). This issue will be resolved in a future release. This will be resolved in future release.
When Notification Service is used with Priority and OrderPolicy equal to PriorityOrder, in some scenarios, CORBA::MARSHAL exception is thrown (CR9284). This issue will be resolved in a future release.
The last merged VBE Service Pack was VBE 7.0 SP 1
| Change request | Description | Comments | 
| 6107 | failover should happen to a newly started rmi-iiop server | |
| 7786 | [RHEL4 (Power5)] NativeMessing Callback throws CORBA::OBJECT_NOT_EXIST exception | |
| 5714 | VBJ6.5: defining 0/null as client host does not work | |
| 4480 | VBJ converts the hostname string into an IP address but VBC does not | |
| 6964 | VBJ rmi-iiop does not support the marshaling of JDK1.5 Enum type | |
| 6352 | When using SSL client/server with bi-dir communications, the SSL server callback does not reuse an existing client-server connection. It opens a new TCP connection | Limitation: In the scenario where both the client and server are security enabled, but secure transport is disabled, the server still uses a new connection while making a callback | 
| 7893 | Memory leak in Security | |
| 1671 | Visi portable interceptors example is incorrect | |
| 4816 | [HV50751] CORBA::Marshal exception is raised, illegally | |
| 4475 | [HV50710] If the timeout is less than 1ms, it isn't be abled. | |
| 7364 | check incoming context length and compare against allocated buffer length | |
| 5797 | property to change the stack size of an ORB thread | |
| 4424 | The Any constructor doesn't deep-copy the parameter's value | |
| 4526 | [HV50724] 'is_equivalent' method is coredump | |
| 4794 | [HV50743] Free Memory Read occurs in TypeCodeTableCbCleanup(). | |
| 4901 | IDL's Compile error occurs with '-type_code_info' option | |
| 5739 | Process down in calling CORBA::ORB::create_recursive_sequence_tc() | |
| 904 | Shared memory segment does not get cleanup after the server dies. | |
| 4501 | [HV50719] If the timeout is too large, it isn't be enabled | |
| 4694 | [HV50728] There is the potential of core dump. | |
| 4794 | [HV50743] Free Memory Read occurs in TypeCodeTableCbCleanup(). | |
| 5632 | PortableServer::POA::AdapterAlreadyExists is thrown during processing the PortableServer::POA::find_POA method, without returning the found POA. | |
| 4731 | Uncaught exception from VISPSA::unpublish() |