You'd think that when Oracle packages a jar called oc4jclient.jar, you'd be safe using it within your client (ejb client, jms client) applications with no problems whatsoever.... well, if you did, you'd be ...well...WRONG!
You might also encounter stacktraces like these after deploying your EJB/JMS client:
Exception in thread "main" java.lang.NoClassDefFoundError: com/evermind/server/jms/EvermindXAConnectionFactory
at com.evermind.server.jms.ConnectInfo.getPass(ConnectInfo.java:98)
at com.evermind.server.jms.EvermindQueueConnectionFactory.createQueueConnection(
EvermindQueueConnectionFactory.java:83)
There are a number of things to note before you even try to use the oc4jclient.jar:
- Oracle packages the client in a zip file. This file contains the oc4jclient.jar file and al lot of additional supporting libraries that it needs. Just check out the manifest.mf file present in oc4jclient.jar to marvel at the horrendous dependency list.
- In addition to the above, you will need to download an additional jar (ojdl.jar) required for the oc4jclient's internal logging purpose!. (How daft can this be!)
- You CANNOT distribute the OC4JClient (and its supporting libraries like dms.jar, optic.jar etc) unless you are an Oracle Customer and your client is an Oracle Customer. So be extremely careful while packaging and deploying your application.
- The OC4JClient (oc4jclient.jar along with supporting jars) is INADEQUATE if you want to build a client application that uses JMS (not OJMS). For this to work, you'll have to add oc4j.jar (i.e. the entire core runtime of the application server) just to make a standalone JMS client run (How clever is that?!)
The above definitely holds true for Oracle10gAS 10.1.2.02. I believe that with 10.1.3, some of these problems have been alleviated. However.....
The next time you develop an oc4j client application please keep the above points. This will avoid significant pain grief especially when trying to liaise with metalink/oracle tech support.
0 comments:
Post a Comment