| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.misc -> Trouble calling EJB from JWeb Cartridge
I have installed on a SUN box the following:
Oracle Application Server 4.0.7
Apache and JServ 1.0b4
Jonas EJB Server 1.3
rmiregistry on 1199
when I run standalone clients to access the EJB deployed in the EJB
server, all works as expected both
from another machine or locally. I add the client code to a servlet on
Apache and it also works as
expected. I take the same bean code and build a JWeb cartridge and it
throws the following exception:
[Root exception is java.rmi.UnmarshalException: error unmarshalling
return; nested exception is:
java.lang.ClassNotFoundException:
hi.BullHelloHelloHome_Stub]javax.naming.CommunicationException
If I run the application (as per the debugging instructions):
java HelloWorld
it works fine as well. It only throws the exception when running in OAS. I have tried about everything I can think of:
- changed to JDK 1.1.7 ( yes I know it is not supported) - changed classpath to match Apache configuration - checked all permissions - restarted many times
Does OAS have a sandbox type of mentality around the cartridges? It is
like there is no access granted
on the port. Has anyone had any success with RMI or EJB from a JWeb
cartridge?
Any help would be greatly appreciated. You will find the client side
source below (sorry not pretty
stuff, it is prototype code :-).
Jeff Holt
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.ejb.*;
import javax.naming.*;
import java.rmi.*; import java.util.*; import java.util.Properties; import hi.*;
import oracle.html.*;
class HelloWorld {
public static void main (String args[]) throws NamingException {
HtmlHead hd = new HtmlHead("Hello World");
HtmlBody bd = new HtmlBody();
HtmlPage hp = new HtmlPage(hd, bd);
System.err.println("test\n");
bd.addItem("Hello, World<BR>\n");
// Set the properties, usefull huh?
Properties env = System.getProperties();
env.put("java.naming.factory.initial",
"com.sun.jndi.rmi.registry.RegistryContextFactory");
env.put("java.naming.provider.url",
"rmi://xxx.yyy.zzz.aaa:1199");
bd.addItem( env.toString());
// Get JNDI Context
Context initialContext = null;
try {
initialContext = new InitialContext(env);
System.err.println("<BR>\nCreated JNDI Context<BR>\n");
bd.addItem("Created JNDI Context:<BR>\n");
bd.addItem("<BR>");
}
catch (NamingException e){
bd.addItem("Cannot get initial context for JNDI: " + e +
"<BR>\n");
//System.exit(2);
}
// Connect to helloHome the Home boy bean
HelloHome home = null;
bd.addItem( "looking up HelloHome<BR>\n" );
try{
home = (HelloHome) initialContext.lookup("HelloHome");
System.err.println("connected to HelloHome\n");
bd.addItem("Connected to HelloHome.<BR>\n");
}
catch (Exception e){
System.err.println("Cannot lookup HelloHome: " + e + "\n");
bd.addItem( "Cannot lookup HelloHome: " + e + "<BR>\n");
//System.exit(2);
}
// Create the Home bean
HelloRemote homeBean = null;
try{
bd.addItem("Create a bean<BR>\n");
homeBean = home.create();
}
catch (Exception e){
bd.addItem( "Cannot create HomeBean: " + e + "<BR>\n");
//System.exit(2);
}
try {
// Say Hello
bd.addItem(homeBean.sayHello());
}
catch (Exception e) {
bd.addItem( "Can't say Hello today because: " + e +
"<BR>\n");
}
hp.printHeader();
hp.print();
}
Sent via Deja.com http://www.deja.com/
Share what you know. Learn what you don't.
Received on Tue Jul 13 1999 - 16:25:34 CDT
![]() |
![]() |