Sure, here's the code. It's what JDev generates automatically but I have seperated some things into several diffrent lines so I could experiment easier.
...
final Context context = getInitialContext();
Object o=context.lookup( "SessionEJB4" );
Object l= PortableRemoteObject.narrow( o, SessionEJB4Home.class );
final SessionEJB4Home sessionEJB4Home = (SessionEJB4Home)l;
SessionEJB4 sessionEJB4 = sessionEJB4Home.create();
String ret=( sessionEJB4.hello( ) );
...
As I mentioned, for this I have used EJB2.1 bean, because I had same problems with EJB3.0, so I tried earlier versions of Java to make sure that is not the problem.
hello() method just returns string "hello".
Of course, this works in standalone client that is not loaded into database.
Now, I loaded all the jars mentioned in this thread, using loadjava options -v -resolve, and I loaded client using options -v -resolve -genmissing . Select query on user objects in database shows that client class and relevant classes are all valid.
Then I created stub and ran it. First it stopped throwing exception ORA-29532: Java call terminated by uncought Java exception: Java.lang.NoClassDefFoundError.
Method I try to run returns String value which is hello message if it works fine, else it prints the part of the stack trace. In this case, after p[revious error, When I try to run it again, i get return from the method :
Lookup error: java.lang.NoClassDefFoundError; nested exception is:
java.lang.NoClassDefFoundError
com.evermind.server.rmi.RMICall.throwRecordedException(RMICall.java:89)
com.evermind.server.rmi.RMIClientConnection.waitForJndiResponse(RMIClientConnection.java:371)
com.evermind.server.rmi.RMIClientConnection.lookup(RMIClientConnection.java:179)
com.evermind.server.rmi.RMIClient.lookup(RMIClient.java:283)
com.evermind.server.rmi.RMIClientContext.lookup(RMIClientContext.java:51)
javax.naming.InitialContext.lookup(InitialContext.java:347)
simpleejbproject.EJB4Client.hello(EJB4Client.java:35)
Of course, regular version of the client I run frokm command line works fine.
So I'm kind of a stuck here. I followed all directions, tried it on oracle 9 and oracle 10 DB, the problems remain the same. Am I missing something here?
Thanks
Just to add, getInitialContext()
private static Context getInitialContext() throws NamingException {
Hashtable env = new Hashtable();
// Oracle Application Server 10g connection details
env.put( Context.INITIAL_CONTEXT_FACTORY, "oracle.j2ee.rmi.RMIInitialContextFactory" );
env.put( Context.SECURITY_PRINCIPAL, "oc4jadmin" );
env.put( Context.SECURITY_CREDENTIALS, "manager1" );
env.put(Context.PROVIDER_URL, "opmn:ormi://mserv:4005:home/TestEjb4");
return new InitialContext( env );
}
It goes withouth any exceptions.
Message was edited by:
user510152