This release note contains information specific to the VisiBroker Edition and VisiBroker standalone. For release note information that applies to all the Borland Enterprise Server 5.2 Editions, see the Borland Enterprise Server 5.2 Release Notes.
The set of new features for this release includes:
VisiBroker for Java now supports JDK 1.4.1. However support for JDK 1.3.1 is still provided.
VisiBroker for Java and VisiBroker for C++ is now IPv6 enabled. IPv6 support is available in both C++ and Java ORBs on all platforms and JDKs that provide IPv6 support. For more details please refer to the Platform Information section.
Native Messaging provides an intuitive and powerful framework for performing non-blocking and asynchronous method invocations in CORBA/J2EE environments. VisiBroker Native Messaging support is available to all VisiBroker ORB and J2EE (1.3 and up) environments including C++, Java, RMI/EJB and Delphi. Also, VisiBroker Native Messaging is based on an open IDL interface and the standardized IIOP. It can therefore be used by applications built on top of other non-VisiBroker ORBs, older versions of the VisiBroker ORB (3.x, 4.x), and RMI-over-IIOP compliant J2EE environments.
The set of useful enhancements includes:
The VisiBroker for Java and C++ ORBs now attempt connection to different endpoints simultaneously. This speeds up connection time when multiple client threads attempt simultaneous connection to different endpoints. However, connection establishment to the same endpoint is still serialized.
In VisiBroker for C++, PI Request Interceptors are invoked in colocated calls.
client and server request Interceptors are now invoked in colocated calls. This
helps clients and servers to behave uniformly in all cases and to transfer
context information or any additional security information between them. Setting
vbroker.pi.colocStubInvoke to true will enable interceptor invocation and setting
it to false will disable interceptor invocation.
Keeping in line with the resolution of OMG issue 5430 ( http://cgi.omg.org/issues/issue5430.txt ), the interface for Portable IOR interceptor has been changed. The new interface definitions are as follows:
local interface IORInterceptor : Interceptor {
void establish_components( in IORInfo info ) ;
};
local interface IORInterceptor_3_0 : IORInterceptor {
void components_established( in IORInfo info ) ;
void adapter_manager_state_changed( in AdapterManagerId id,
in AdapterState state ) ;
void adapter_state_changed( in ObjectReferenceTemplateSeq templates,
in AdapterState state ) ;
};
Applications using the methods components_established, adapter_manager_state_changed, and adapter_state_changed must be modified to make use of the
new interface (IORInterceptor_3_0). Applications using only the
establish_components method need not change. This change is applicable
to both VisiBroker for Java and VisiBroker for C++.
The Server Manager diagnostic facility provides server statistics and configuration information. This includes thread statistics, connection statistics, environment information and process information (memory usage). This facility is available in both VisiBroker for Java and VisiBroker for C++.
The OSAgent logging facility has automatic rollover capability when the entry size reaches the default or a user-specified value. It also has the ability to control the time interval in VisiBroker client/server processes for discovering whether a Smart Agent has failed, and provides fail-over to nearest Smart Agent.
Configuring the JDK through the VisiBroker Launchers is enhanced :
javahome entry in the <install_dir>/bin/toolsjdk.config file.javavm option if given. Otherwise, it will try to locate from the PATH. If not found in PATH, then it will try to load the VM based on the javahome entry in the <install_dir>/bin/vbj.config file. Note: The toolsjdk.config and .config
should be in the <install_dir>/bin directory and must not be moved out
of this location.
Server Manager support added to RequestAgent so that it can be configured and
monitored through the BES/VisiBroker Console.
Console support is provided to VisiNotify and Native Messaging features and also extended to the Server Manager Diagnostic facility.
In addition, Filter Object persistency is now enabled in VisiNotify for this release.
ITS is now compliant with the CORBA OMG OTS 1.2 specification. This enhancement is for those who have existing system components developed using earlier version of ITS.
OTSPolicy with values REQUIRES, FORBIDS and ADAPTS.InvocationPolicy with values UNSHARED, SHARED
or EITHER (the default).NonTxTargetPolicy with values PERMIT or PREVENT.Security now has the new interfaces for Service Provider to design their own LoginModule, Trust mechanism, Authorization mechanism and/or to provide their own Secure Socket.
VisiBroker for C++
| Property | Default Value | Valid values | Description |
|---|---|---|---|
vbroker.pi.colocStubInvoke |
False |
true|false |
To invoke PI Request Interceptors in a colocated case, set this property
to true. |
vbroker.locationservice.backoffFactor |
1 |
>=1 |
Controls the wait for reply-time interval for the OSAgent's TCP client handler address from an OSAgent. It is an addition factor starting from 1 second. Use when the OSAgent is too busy to reply. |
VisiBroker for Java
| Property | Default Value | Valid values | Description |
|---|---|---|---|
vbroker.poa.manager.threadMin |
0 |
>=0 |
Minimum number of threads that the Adapter Mananger can create. |
vbroker.poa.manager.threadMax |
0 |
>=0 |
Maximum number of threads that the Adapter Mananger can create. 0 means
no limit. |
vbroker.poa.manager.threadMaxIdle |
300 |
>=0 |
Time in seconds before an idle thread is to be destroyed. 0 means to
disable this feature. |
vbroker.agent.clientPort |
0 |
0 to 65535 |
Starting port (lower bound) of the range of ports for the ORB to communicate
with an OSAgent. 0 means the port is randomly assigned by system. |
vbroker.agent.clientPortRange |
0 |
0 to 65535 |
Range of ports within interval (clientPort, clientPort + clientPortRange)
for the ORB to communicate with the OSAgent. This range is effective only
when clientPort > 0. |
vbroker.orb.corbaloc.resolveHosts |
true |
true|false |
When this property is set to true, the ORB will try to resolve
the hostnames specified in the corbaloc string at initialization time. The
default value is true (for backwards compatibility). This behaviour
is deprecated and the next major release will have false as
the default value. |
vbroker.orb.bids.bar |
"" | inprocess |
This property is used to prevent specified bidders from placing bids.
Setting it to inprocess will disable inprocess bidding. Use
this property to disallow optimized inprocess invocations when the client
and server are colocated. Note: Currently only the inprocess bidder can
be barred using this property. Other bidders might be included in the future. |
java2idl, java2iiop-[no_]idlentity_array_mapping off IDLEntity to boxedIDL in
boxedRMI.idl2java, java2iiop-[no_classloader_aware]on vbroker.orb.jdkCPUBug True true in this release. A value of false disables RMI-IIOP dynamic stub loading (not recommended).AnyServiceOrder property as vbroker.naming.anyServiceOrder
for consistency with VisiBroker for C++.The org.omg.PortableServer.ThreadPolicyValue in J2SE 1.4 does
not define the _MAIN_THREAD_MODEL. We provide a version of ThreadPolicyValue
that defines _MAIN_THREAD_MODEL and overrides the one in the Java 2 Platform
by following the Endorsed Standards Override Mechanism.
Our version of ThreadPolicyValue is available in <install_dir>/lib/endorsed/vbjendorse.jar.
By default, our launcher adds this directory to the system property java.endorsed.dirs.
Users are free to add more directories to this property and our launcher appends
them to the existing ones.
If you are not using our launcher but using J2SE 1.4, the directory containing
vbjendorse.jar has to be manually added to the system property java.endorsed.dirs.
This enables you to override the org.omg.PortableServer.ThreadPolicyValue
provided by J2SE 1.4 by our version of the same.
If this mechanism is not followed existing applications using _MAIN_THREAD_MODEL
will not be compatible with J2SE 1.4.
The Borland VisiBroker Object Request Broker (ORB) now combines the Java and C++ packages into a single installation. As a result, it has been necessary to synchronize some of the features and behaviors of the Java and C++ ORBs. This section details the changes in the GateKeeper, the VisiBroker ORB in general, and the Naming Service utility (VisiNaming).
By default, the Security Service is turned off in GateKeeper; this means that the GateKeeper will function as expected in VisiBroker for Java 4.5.x with added features. To enable Security Service in GateKeeper, use:
vbroker.security.disable=false
There is no need to explicitly load the following services using the vbroker.orb.dynamicLib
property in the GateKeeper:
com.inprise.security.Init
com.inprise.vbroker.GateKeeper.ssl.Init
com.inprise.security.hiops.Init
The Security Service is already integrated with GateKeeper. When Security is enabled, the required services are loaded. Specific listener ports can then be specified.
The property vbroker.GateKeeper.load.balancer has been added to
allow a master-only role of the GateKeeper in the Master/Slave configuration
scenario for load balancing. In addition, the following load balancing enhancements
have been made:
vbroker.orb.GateKeeper.ior
property needs to assign proper values for HTML files containing applets.
To upgrade the C++ server/client using VisiTransact do the following:
OTSPolicy values to control transactional requirements
for all target objects. Remove the TransactionalObject interface
from all your IDL files.NonTxTargetPolicy at client side to control the invocations on
non-transactional objects.CORBA::ORB::create_policy() method to create corresponding policies.Because csstring.h has been updated, if your application uses csstring.h we recommend that you recompile your code.
Upgrading from version 5.1., refer to Migrating from Borland Security Service 5.1.
Upgrading from version 4.x., use the executable FileDBMigrate.
As per OMG Specification 2.5, org.omg.PortableServer.POAOperations.create_reference_with_id() does
not throw a WrongPolicy exception. VisiBroker 5.2 is compatible
to this definition. However, for source code back-compatibility we have created
a JAR file called javabackcompat.jar, that contains the older definition
to throw the WrongPolicy exception.
If you still require the older definition, do the following before building and running your applications:
<install_dir>/lib/backcompat/vbjbackcompat.jar
in the classpath.<install_dir>/lib/backcompat/vbjbackcompat.jar
file in the <install_dir>/lib/endorsed directory. If any of the following three types:
java.util.Hashtablejava.util.HashMapjava.util.TreeMapare exchanged across the wire between 5.2 and any older versions, you must set
vbroker.rmi.alternativeMarshall=false on the older VisiBroker for Java side for back compatibility.
ADAPTS OTS policy values in their
IORs.If the objects obtained from OTS52 servers have REQUIRES OTS policy
values in their IORs, any invocation on those objects must happen within the
scope of an active transaction. Also, if the objects obtained from OTS52 servers
have FORBIDS OTS policy values in their IORs, any invocation on
those objects must happen outside the scope of an active transaction.
TransactionalObject, if the
client wants the transaction context to be propagated with the callback from
the previous OTS server.start servers/clients with -Dvbroker.orb.dynamicLibs=com.visigenic.services.CosTranscations.TSServiceLoader. This class is package in asrt.jar. If you are using InpriseDriver, replace com.inprise.its.jdbcDirect.InpriseDriver with com.inprise.visitransact.jdbc1x.InpriseDriver.
-OTSname -Dvbroker.ots.name
-OTScurrent_name -Dvbroker.ots.currentName
-OTScurrent_timeout -Dvbroker.ots.currentTimeout
-OTScurrent_host -Dvbroker.ots.currentHost
-OTScurrent_factory -Dvbroker.ots.currentFactory
-OTSexit_on_shutdown -Dvbroker.ots.exitOnShutdown
-OTSdefault_timeout -Dvbroker.ots.defaultTimeout
-OTSdefault_max_timeout -Dvbroker.ots.defaultMaxTimeout
-OTSlog_dir -Dvbroker.ots.logDir
-OTSlog_purge_transactions -Dvbroker.ots.logPurgeTransactions
-OTSlog_sleep -Dvbroker.ots.logSleep
-OTSlog_cache -Dvbroker.ots.logCache
-OTSlog_unit -Dvbroker.ots.logUnit^C to shutdown ITS, the log file will now not log the information that the ITS is interrupted by a user.Security is on-the-wire compatible with previous BES 5.x versions.
The following changes have been made to the Security implementation that affect back-compatibility:
IdentityWallet and CertificateWallet had a set of accessors that
provided access to information that was used to construct these objects. Since
this information is already available to clients as they provide the information
during construction, these methods are superfluous and have been removed.The following are known VisiBroker issues with this release.
The Java compiler now rejects import statements that import a type from the unnamed namespace. According to the Java Language specification, you cannot have a simple name in an import statement, nor can you import from the unnamed namespace (http://java.sun.com/j2se/1.4/compatibility.html#source). This change will impact applications with IDLs that do not have their definitions in a module.
When security is enabled in a BES 5.2 Partition using the vbroker.security.disable
property, the naming service in that Partition is not secure. This is due to
the default value for property vbroker.naming.security.disable, which has a
default value of true. To enable security, set vbroker.naming.security.disable=false.
The current version of the Request Agent is not security-enabled.
In order to start the RequestAgent with OAD, you'll have to perform following
steps:
RequestAgent as a shared server. VBROKER_ADM is set to point to the adm directory which contains the license files:oadutil reg -i IDL:borland.com/NativeMessaging/RequestAgent:1.0 -o RA
-java com.borland.vbroker.MessageBroker.MessageBroker -e vbroker.orb.admDir=$VBROKER_ADMIn the current release, client side QoS policies, such as RebindPolicy, are not propagated to the RequestAgent.
WChar and WString dataThis issue occures when:
RequestAgent that contains
WChar or WString arguments/return values. A DATA_CONVERSION or MARSHAL exception will be raised by Client as a result
of this invocation. This issue will be resolved in a future release.
If your application runs in a mixed JDK configuration (JDK 1.3.1 and JDK 1.4.x), then you should run the Request Agent with the same JDK as that of the server.
To avoid recursion in the POA lifecycle interceptor, the behavior is changed in case of multiple registrations as follows:
If the same instance of a POA lifecycle interceptor is registered with the ORB multiple times, the interceptor will be called only once when a POA is created. For example, assume the same instance of a POALifeCycleInterceptor "myPOAInterceptor" is registered 3 times with the ORB. When a POA is created, instead of calling the create method of "myPOAInterceptor" 3 times, the ORB will call it only once. If there is a need to call create 3 times, then different instances of "myPOAInterceptor" must be registered with the ORB. Note, however, that there is no change in the ORB behavior when
calling the destroy method. Even if the same instance of the interceptor is registered multiple times, the destroy will be called that number of times.
It is the RMI-IIOP application server's responsibility to instantiate the ORB instance and call the run() method explicitly to have the server wait for client connections.
Applications written to refer to 32 bit libraries on 64 bit deployment platform will not work when compiled. Instead, we recommend using 32 bit platform for compiling 32 bit applications.
$curtime used to return the current time of
day is not currently supported. This will be supported in the next release.
TransactionObject interface from the existing
Client/Server code and still want to compile them with new OTS52, do not use the
BY_POA policy to create POAs on which such objects are to be created. Instead,
you should use the BY_INSTANCE or NONE bind support policy. If you need BY_POA
policy, you should set an explicit ADAPTS policy for the POA on which an object
of TransactionsalObject type is to be created.InvocationPolicy presently does not support UNSHARED mode.CurrentHost option, you will not be able to use the IPv6 address format.TrustManager and Identity at the time of
the creation of the rootPOA. ServerQoPConfig will not be applied for POAs already created.
This can happen when the POAs are created at post_init() of ORBInitializers
or init_completed() of ServiceLoaders.trust-in-client
is enabled, clients must have certificate, even if they want only U/P identities.
U/P identities will take precedence. This is due to a JSSE limitation that
will be fixed with J2SE 1.4. ClientSideDataCollection or CertificateLoginModule in 5.1, in 5.2 the configuration files are not at all required. In this case after running through with a configMigrator application, it should be noted that the application does not remove redundant configuration files.pk server, you need to add the following into the ejb-borland.xml file just after the definition of authorization domain:
<property>
<prop-name>ejb.security.realms</prop-name>
<prop-value>NONE</prop-value>
</property>
BasicLoginModule
port: to specify a port for remote URLs (default : 24470) For example,
port = 24400digesttype: specifies the message digest algorithm used for hashing
password in the table (default : MD5). This value can be any value passed
to java.security.MessageDigest.getInstance method. Some valid values are
MD5 and SHA.TYPE attribute in earlier versions is now deprecated. TYPE=BASIC will translate to digesttype=SHAadmin, he should have access to the bean. But unless admin is a part of a group in the database, for example, a group called "mygroup", the Partition throws an exception and the user is denied access. The workaround is to add a group to admin.When running the securecart example with certificate login, the client throws the following exception: vbj -DORBpropStorage=client_pk.properties com.borland.appclient.Container cart_beans_client.jar java.io.IOException: DerInputStream.getLength(): lengthTag=109, too big. at sun.security.util.DerInputStream.getLength(DerInputStream.java:502) at sun.security.util.DerValue.init(DerValue.java:333) at sun.security.util.DerValue.<init>(DerValue.java:289) at sun.security.provider.X509Factory.parseX509orPKCS7Cert(X509Factory.java:340) at sun.security.provider.X509Factory.engineGenerateCertificates(X509Factory.java:240) at java.security.cert.CertificateFactory.generateCertificates(CertificateFactory.java:511) at com.inprise.security.trust.TrustpointsWrapper.addTrustPoint(TrustpointsWrapper.java:211) at com.inprise.security.trust.TrustpointsWrapper.refresh(TrustpointsWrapper.java:163) at com.inprise.security.CORBAsec.SecurityCurrentImpl.complete_init(SecurityCurrentImpl.java:179) at com.borland.security.core.Init.pre_init(Init.java:475) at com.inprise.vbroker.orb.ORB.initialize(ORB.java:1138) at com.inprise.vbroker.orb.ORB.set_parameters(ORB.java:1310) at org.omg.CORBA.ORB.init(ORB.java:337) at com.inprise.j2ee.Init.orb(Init.java:78) at com.inprise.j2ee.jndi.CtxFactory.getInitialContext(CtxFactory.java:29) at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243) at javax.naming.InitialContext.init(InitialContext.java:219) at javax.naming.InitialContext.<init>(InitialContext.java:175) at com.inprise.j2ee.utils.JndiUtils.registerEjbRefsInJndi(JndiUtils.java:328) at com.inprise.j2ee.utils.JndiUtils.registerInJndi(JndiUtils.java:468) at com.borland.appclient.Container.main(Container.java:136)
Important: For information on minimum hardware requirements, certified operating systems, JDKs, and compilers, please refer to the Product Platforms Page.
The VisiBroker Edition 64-bit port does not provide a C++ security component.
The VisiBroker Edition 64-bit port does not provide a VisiTransact component.
VisiBroker can now be run on dual-stack hosts supporting IPv6 and IPv4. IPv6 is supported on platforms which are IPv6 enabled.
VisiBroker for Java supports IPv6 only on:
VisiBroker for C++ supports IPv6 only on:
In order to make use of the IPv6 feature please do the following for HP platforms:
HP 32-bit platforms:
<install_dir/lib>libvport_ipv6_r.so to libvport_r.soHP 64-bit platforms:
<install_dir/lib>libvport64_ipv6_r.so to libvport64_r.soThe product provides mechanisms for printing version information for the binaries and libraries included in this release. In general, use the executable vbver followed by the file to query version information.
For example osagent.exe prints:
Information for: osagent.exe Product Name: VisiBroker for C++ Version: 05.02.00.C2.09 Copyright: (C) 1996, 2002 Company: Borland Software Corporation Build Date: 01/21/2003 07:58:48
Similarly, vbver vbjorb.jar prints:
Information for: vbjorb.jar Product Name: VisiBroker Developer for Java Version: 05.02.00.C2.09 Copyright: (C) 1996-2001 Company: Borland Software Corp. Build Date: 01/21/2003 13:51:22
To obtain version information for the utilities (such as idl2java, irep,idl2ir, and such), pass the -version argument to the utility.