JDK 1.1 is ok, 1.0.x is not. Some parts require JDK 1.2 (SSL), others at least Swing (all GUI tools do: NameManager, KeyStoreManager, ImR GUI), but if you don't need them, JacORB will compile and run on JDK 1.1.
Yes, there are currently no known issues with non-beta JDKs. We're also successfully using Jikes as a compiler.
There have been reports of successful operation, but we don't test it ourselves.
The reason we're using IP numbers instead of human readable host names is that the jdk doesn't provide a way (unless implementing the DNS protocol ourselves / using an external library) to get the fully qualified hostname (that is e.g.Help, ...z1.inf.fu-berlin.deinstead of justz1). But using only the unqualified hostname renders the IOR useless outside of the domain.
If you get a stack trace that looks similar to the following
(line numbers may vary) at a verbosity of >= 3
############################ StackTrace ############################
java.io.EOFException
at org.jacorb.orb.connection.ClientConnection.abort(ClientConnection.java:269)
at org.jacorb.orb.connection.ClientConnection.readBuffer(ClientConnection.java:301)
at org.jacorb.orb.connection.ClientConnection.receiveReply(ClientConnection.java:389)
at org.jacorb.orb.connection.ReplyReceptor.run(ReplyReceptor.java:100)
####################################################################
you can safely ignore it. This just indicates that a connection has
been closed. The reason may have been a timeout, for example the
name server closes connections after about 30 seconds of inactivity.
If you get a stack trace that looks similar to the following
(line numbers may vary)
org.omg.CORBA.COMM_FAILURE: minor code: 1398079490 completed: No
at com.sun.corba.se.internal.iiop.IIOPConnection.writeLock(IIOPConnection.java:919)
at com.sun.corba.se.internal.iiop.IIOPConnection.send(IIOPConnection.java:980)
at com.sun.corba.se.internal.iiop.IIOPOutputStream.invoke(IIOPOutputStream.java:76)
at com.sun.corba.se.internal.iiop.ClientRequestImpl.invoke(ClientRequestImpl.java:74)
at com.sun.corba.se.internal.corba.ClientDelegate.invoke(ClientDelegate.java:152)
at com.sun.corba.se.internal.corba.InitialNamingClient.resolve(InitialNamingClient.java:200)
at com.sun.corba.se.internal.corba.InitialNamingClient.cachedInitialReferences(InitialNamingClient.java:265)
at com.sun.corba.se.internal.corba.InitialNamingClient.resolve_initial_references(InitialNamingClient.java:188)
at com.sun.corba.se.internal.corba.ORB.resolve_initial_references(ORB.java:1423)
you have probably not used the jaco script to start your
program. As the trace indicates, java has used its internal ORB
(com.sun.corba. ...), that comes along with the jdk instead of
JacORB.
If you get two stack traces that looks similar to the following (line numbers may vary) at a verbosity of >= 3############################ StackTrace ############################ [some exception e.g. FileNotFoundException, UnknownHostException] #################################################################### [ Unable to create initial reference from ORBInitRef.NameService=http://www.inf.fu-berlin.de/~noffke/NS_Ref] ############################ StackTrace ############################ java.lang.NullPointerException at org.jacorb.orb.ParsedIOR.parse(ParsedIOR.java:431) at org.jacorb.orb.ParsedIOR.parse(ParsedIOR.java:465) at org.jacorb.orb.ParsedIOR.<init>(ParsedIOR.java:225) at org.jacorb.orb.ORB.string_to_object(ORB.java:1298) at org.jacorb.orb.ORB.initialReferencesInit(ORB.java:1028) at org.jacorb.orb.ORB.set_parameters(ORB.java:1103) at org.omg.CORBA.ORB.init(ORB.java:71) at org.jacorb.naming.NameServer.main(NameServer.java:190) ####################################################################you don't have to worry. This means that JacORB was unable to create a reference from an ORBInitRef, but the exceptions are handled and cause no harm, although they aren't available troughorb.resolve_initial_references()later. You may have to check you properties.
This is generally only a problem of windows users. We
successfully used the following on both Win2k and WinNT.
ORBInitRef.NameService=file:/c:/NS_Ref
As far as we know, you don't need the pipe character instead
of the drive colon (like Netscape). Please make sure that the
URL points to a vaild, readable file.
JacORB provides two properties that can be set to select a port number and IP address for servers to listen on. These properties are OAPort and OAIAddr. Thy can be set on the commandline using the -D switch to the Java interpreter, in the properties file, or in the source code of the server. In this last case, they are passed as arguments to the ORB.init() call.
Please make sure the following property is set in the
jacorb.properties file:
org.omg.PortableInterceptor.ORBInitializerClass.standard_init=org.jacorb.orb.standardInterceptors.IORInterceptorInitializer
While it is possible to run JacORB without any interceptors
configured, the above interceptor initialization is required
for wstring (and GIOP 1.2 and SSL) to work.
Yes, we generally discourage people from not using the properties file. This file contains a lot of default values, that should be present and may cause problems at unexpected points if omitted.
No, but it is a convenient way to start your programs by doing the following two things:CORBA interoperability
- Setting the
-Xbootclasspathoption (useful for jdk1.2). This makes the VM search JacORBs classes prior to javas own classes, which is needed because the rt.jar of java 1.2 comes along with a lot of faulty classes generated from the standard OMG interfaces.- Setting the properties
org.omg.CORBA.ORBClassandorg.omg.CORBA.ORBSingletonClass. This makes java load the JacORB orb instead of suns own implementation. See this question for the result of omitting these properties.
Basically, JacORB interoperates with any CORBA compliant ORB over IIOP. In practice, JacORB has been used successfully with at least the following ORBs (if you know of another ORB not on this list, please let me know): MICO, TAO, Orbacus, OrbixWeb, VisiBroker, ORBit, omniORB, Vitria C++ and Java ORBs.
Basically, it is very simple: use a single name server, either JacORB's or ORB X's. JacORB is easy to use with a foreign name service, all you need to do is to place the "foreign service's" IOR in the file where JacORB looks up the name server IOR. (This is configured in jacorb.properties.) To use the JacORB name service from clients running on another OR, please consult the configuration documentation of that ORB.
Free Software and Contributions
Do you think that we are adding value to the world of software? Do you believe that free lunches are a nice thing but our work still deserves recognition? Would you like to support us and further our project?There are a number of options:
- Donations - both money and hardware are welcome. Since we are a university, you might be able to get tax refunds for donations. Donations can also be invoiced as "consulting". Hardware could be labelled "long term loaned" or similar.
- Advertising - Tell others about us. If you are running a project based on JacORB, let us put up a link to it on our "customers" page.
- Support - Free or commercial, always welcome. Please contact us.
- Contributions - see below.
The most helpful things are code inspection, application development and bug reporting. This is an enourmous help in improving the stability of the software! Answering day-to-day quastions on the developer list also helps.Extending JacORB by developing code yourself, however, would be easiest for tasks that are totally independent of the ORB core and the IDL compiler, e.g. implementing new services such as the Notification Service. If people came up with new service implementations for JacORB, that would simply be great, especially as we do not plan to add to the list of services ourselves (the only exception being the Security Service).
I am a little reluctant, however, to coordinate work in more central areas as I simply cannot afford to spend time on the integration of too many tightly interwoven ORB-level activities (yes, we do use CVS, and we do have a CVS server running). Help would be welcome in the areas of documentation and perhaps the development of a comprehensive test suite (in contrast to the ad hoc one we are using now) that could be used to check every new release against. If you still think you want to join in and contribute, please mail me.
Nicolas Noffke, Gerald Brose, 27.3.2001