JacORB Frequently Asked Questions

  1. General questions
  2. Help, ...
  3. CORBA interoperability
  4. Free Software and Contributions

General

Bullet Does JacORB work with JDK 1.1 or 1.0.x?
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.
Bullet Does JacORB work on Linux?
Yes, there are currently no known issues with non-beta JDKs. We're also successfully using Jikes as a compiler.
Bullet Does JacORB work on MacOS?
There have been reports of successful operation, but we don't test it ourselves.
Bullet Why doesn't JacORB use host names in it's IOR?
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. z1.inf.fu-berlin.de instead of just z1). But using only the unqualified hostname renders the IOR useless outside of the domain.
Help, ...

Bullet JacORB displays an EOFException. What is wrong?
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.
Bullet When I start my client/server, I get a COMM_FAILURE exception
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.
Bullet When I start my client/server JacORB displays a NullPointerException
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 trough orb.resolve_initial_references() later. You may have to check you properties.
Bullet My file URL doesn't work
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.
Bullet How can I make the server use a specific port number or IP address (in case of multi-homed hosts)?
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.
Bullet Sending data of type wstring does not work. What's wrong?
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.
Bullet Do I really need the properties file?
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.
Bullet Do I really nead the jaco start script?
No, but it is a convenient way to start your programs by doing the following two things:
  1. Setting the -Xbootclasspath option (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.
  2. Setting the properties org.omg.CORBA.ORBClass and org.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.
CORBA interoperability

Bullet Does JacORB interoperate with ORB x?
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.
Bullet How can I share name servers between JacORB and another ORB?
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

Bullet How can I support the project?
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:

Bullet How can I contribute to the development of JacORB?
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