How to access a ejb from a bean

I need to acces a ejb from a bean, working with iplanet, but I cant open the home object. An NoClassDefFoundError happen.

there is the code:

String JNDIFormulari = "java:comp/env/Formulari";

Object BOFormulari = null;

com.base.formulari.FormulariHome HomeFormulari;

com.base.formulari.Formulari RemoteFormulari;

InitialContext ctx = new InitialContext();

BOFormulari = ctx.lookup(JNDIFormulari);

HomeFormulari = (com.base.formulari.FormulariHome) BOFormulari; <<The thing brokes here!!!

[564 byte] By [JPons] at [2007-9-26 4:36:31]
# 1

> HomeFormulari = (com.base.formulari.FormulariHome)

> BOFormulari; <<The thing brokes here!!!

I think you have to "narrow" the object before you cast it into a HomeFormulari obejct, like so :

HomeFormulari = (com.base.formulari.FormulariHome) javax.rmi.PortableRemoteObject.narrow(BOFormulari, com.base.formulari.FormulariHome.class);

Not entirly sure what the history behind having to narrow is (something to do with CORBA, I think !), but I've just been told it is neccassary to do it !

Hopefully this will help, even if it doesn't solve the probelm, I think narrowing is sitll neccassary.

Cheers,

Ben Turner

bdturne at 2007-6-29 17:54:36 > top of Java-index,Other Topics,Patterns & OO Design...
# 2

Hi,

Try this :

import com.base.formulari.*;

String name = "java:comp/env/Formulari";

FormulariHome home;

Formulari remote;

InitialContext ctx = new InitialContext();

Object obj = ctx.lookup(name);

home = (FormulariHome)javax.rmi.PortableRemoteObject.narrow(obj, FormulariHome.class);

remote = home.create()....

Good Luck,

Adi.

adibaron at 2007-6-29 17:54:36 > top of Java-index,Other Topics,Patterns & OO Design...
# 3
Thanks, but now I narrow the object, but the error is the same.I need more ideas, please!!!!
JPons at 2007-6-29 17:54:36 > top of Java-index,Other Topics,Patterns & OO Design...
# 4
1. It would help if you attached the error.2. What kind of a server are you working with (where are the EJBs deployed)?3. It doesn't matter , but anyway, are you looking for an Entity or a Session Bean?
adibaron at 2007-6-29 17:54:36 > top of Java-index,Other Topics,Patterns & OO Design...
# 5
1. It would help if you attached the error.2. What kind of a server are you working with (where are the EJBs deployed)?3. It doesn't matter , but anyway, are you looking for an Entity or a Session Bean?
adibaron at 2007-6-29 17:54:36 > top of Java-index,Other Topics,Patterns & OO Design...
# 6

> 1. It would help if you attached the error.

Here is the error.

-This is what appear in the Web browser:

Error: 500 SC_INTERNAL_SERVER_ERROR

java.lang.NoClassDefFoundError

-And this is what appear in the KJS log file(is a little long)

[22/Aug/2001 11:45:14:3] error: Exception: SERVLET-run_failed: Failed in running template: /Prova11/prova1.jsp, java.lang.NoClassDefFoundError: com.base.formulari.FormulariHome

Exception Stack Trace:

java.lang.NoClassDefFoundError: com.base.formulari.FormulariHome

at java.lang.Throwable.fillInStackTrace(Native Method)

at java.lang.Throwable.fillInStackTrace(Compiled Code)

at java.lang.Throwable.<init>(Compiled Code)

at java.lang.Error.<init>(Error.java:50)

at java.lang.LinkageError.<init>(LinkageError.java:43)

at java.lang.NoClassDefFoundError.<init>(NoClassDefFoundError.java:47)

at provem.prova.class$(prova.java:18)

at provem.prova.hola(prova.java:66)

at jsp.APPS.Prova11.prova1._jspService(prova1.java:67)

at jsp.APPS.Prova11.prova1.service(prova1.java:35)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)

at com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown Source)

at com.netscape.server.servlet.servletrunner.ServletRunner.callJSP(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callJspCompiler(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callUri(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callUriRestrictOutput(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformRequestDispatcher.forward(Unknown Source)

at com.netscape.server.servlet.jsp.JSPRunner.service(Unknown Source)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)

at com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown Source)

at com.netscape.server.servlet.servletrunner.ServletRunner.execute(Unknown Source)

at com.kivasoft.applogic.AppLogic.execute(Compiled Code)

at com.kivasoft.applogic.AppLogic.execute(Compiled Code)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Compiled Code)

at java.lang.Thread.run(Compiled Code)

[22/Aug/2001 11:45:14:3] error: Exception: SERVLET-run_failed: Failed in running template: [App = Prova11, Servlet = XXXMagicJspCompileServlet], java.lang.ClassCastException: java.lang.NoClassDefFoundError

Exception Stack Trace:

java.lang.ClassCastException: java.lang.NoClassDefFoundError

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callJspCompiler(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callUri(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callUriRestrictOutput(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformRequestDispatcher.forward(Unknown Source)

at com.netscape.server.servlet.jsp.JSPRunner.service(Unknown Source)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)

at com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown Source)

at com.netscape.server.servlet.servletrunner.ServletRunner.execute(Unknown Source)

at com.kivasoft.applogic.AppLogic.execute(Compiled Code)

at com.kivasoft.applogic.AppLogic.execute(Compiled Code)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Compiled Code)

at java.lang.Thread.run(Compiled Code)

[22/Aug/2001 11:45:18:7] error: Exception: SERVLET-run_failed: Failed in running template: /Prova11/prova1.jsp, java.lang.NoClassDefFoundError: com.base.formulari.FormulariHome

Exception Stack Trace:

java.lang.NoClassDefFoundError: com.base.formulari.FormulariHome

at java.lang.Throwable.fillInStackTrace(Native Method)

at java.lang.Throwable.fillInStackTrace(Compiled Code)

at java.lang.Throwable.<init>(Compiled Code)

at java.lang.Error.<init>(Error.java:50)

at java.lang.LinkageError.<init>(LinkageError.java:43)

at java.lang.NoClassDefFoundError.<init>(NoClassDefFoundError.java:47)

at provem.prova.class$(prova.java:18)

at provem.prova.hola(prova.java:66)

at jsp.APPS.Prova11.prova1._jspService(prova1.java:67)

at jsp.APPS.Prova11.prova1.service(prova1.java:35)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)

at com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown Source)

at com.netscape.server.servlet.servletrunner.ServletRunner.callJSP(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callJspCompiler(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callUri(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callUriRestrictOutput(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformRequestDispatcher.forward(Unknown Source)

at com.netscape.server.servlet.jsp.JSPRunner.service(Unknown Source)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)

at com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown Source)

at com.netscape.server.servlet.servletrunner.ServletRunner.execute(Unknown Source)

at com.kivasoft.applogic.AppLogic.execute(Compiled Code)

at com.kivasoft.applogic.AppLogic.execute(Compiled Code)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Compiled Code)

at java.lang.Thread.run(Compiled Code)

[22/Aug/2001 11:45:18:7] error: Exception: SERVLET-run_failed: Failed in running template: [App = Prova11, Servlet = XXXMagicJspCompileServlet], java.lang.ClassCastException: java.lang.NoClassDefFoundError

Exception Stack Trace:

java.lang.ClassCastException: java.lang.NoClassDefFoundError

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callJspCompiler(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callUri(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callUriRestrictOutput(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformRequestDispatcher.forward(Unknown Source)

at com.netscape.server.servlet.jsp.JSPRunner.service(Unknown Source)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)

at com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown Source)

at com.netscape.server.servlet.servletrunner.ServletRunner.execute(Unknown Source)

at com.kivasoft.applogic.AppLogic.execute(Compiled Code)

at com.kivasoft.applogic.AppLogic.execute(Compiled Code)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Compiled Code)

at java.lang.Thread.run(Compiled Code)

[22/Aug/2001 11:45:30:0] error: Exception: SERVLET-run_failed: Failed in running template: /Prova11/prova1.jsp, java.lang.NoClassDefFoundError: com.base.formulari.FormulariHome

Exception Stack Trace:

java.lang.NoClassDefFoundError: com.base.formulari.FormulariHome

at java.lang.Throwable.fillInStackTrace(Native Method)

at java.lang.Throwable.fillInStackTrace(Compiled Code)

at java.lang.Throwable.<init>(Compiled Code)

at java.lang.Error.<init>(Error.java:50)

at java.lang.LinkageError.<init>(LinkageError.java:43)

at java.lang.NoClassDefFoundError.<init>(NoClassDefFoundError.java:47)

at provem.prova.class$(prova.java:18)

at provem.prova.hola(prova.java:66)

at jsp.APPS.Prova11.prova1._jspService(prova1.java:67)

at jsp.APPS.Prova11.prova1.service(prova1.java:35)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)

at com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown Source)

at com.netscape.server.servlet.servletrunner.ServletRunner.callJSP(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callJspCompiler(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callUri(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callUriRestrictOutput(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformRequestDispatcher.forward(Unknown Source)

at com.netscape.server.servlet.jsp.JSPRunner.service(Unknown Source)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)

at com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown Source)

at com.netscape.server.servlet.servletrunner.ServletRunner.execute(Unknown Source)

at com.kivasoft.applogic.AppLogic.execute(Compiled Code)

at com.kivasoft.applogic.AppLogic.execute(Compiled Code)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Compiled Code)

at java.lang.Thread.run(Compiled Code)

[22/Aug/2001 11:45:30:0] error: Exception: SERVLET-run_failed: Failed in running template: [App = Prova11, Servlet = XXXMagicJspCompileServlet], java.lang.ClassCastException: java.lang.NoClassDefFoundError

Exception Stack Trace:

java.lang.ClassCastException: java.lang.NoClassDefFoundError

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callJspCompiler(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callUri(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformHttpServletResponse.callUriRestrictOutput(Unknown Source)

at com.netscape.server.servlet.platformhttp.PlatformRequestDispatcher.forward(Unknown Source)

at com.netscape.server.servlet.jsp.JSPRunner.service(Unknown Source)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)

at com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown Source)

at com.netscape.server.servlet.servletrunner.ServletRunner.execute(Unknown Source)

at com.kivasoft.applogic.AppLogic.execute(Compiled Code)

at com.kivasoft.applogic.AppLogic.execute(Compiled Code)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Native Method)

at com.kivasoft.thread.ThreadBasic.run(Compiled Code)

at java.lang.Thread.run(Compiled Code)

> 2. What kind of a server are you working with (where

> are the EJBs deployed)?

I'm working with iplanet 6.0 sp2. If I try to acces to EJB by Servlets, there are no problem (but this is not what I want)

> 3. It doesn't matter , but anyway, are you looking for

> an Entity or a Session Bean?

The bean I'm trying to work is a Session Bean.

The EJB is a Session Bean, too.

JPons at 2007-6-29 17:54:36 > top of Java-index,Other Topics,Patterns & OO Design...
# 7

It looks like it is not a JNDI problem.

According to the error log - the servlet tries to create an object of type com.base.formulari.FormulariHome.

Your code :

String JNDIFormulari = "java:comp/env/Formulari";

Object BOFormulari = null;

com.base.formulari.FormulariHome HomeFormulari; <-- err

com.base.formulari.Formulari RemoteFormulari;

The problem is on line 3 !

The servlet cannot find com.base.formulari.FormulariHome class in its classpath and fails.

Check if the classpath include com.base.formulari package

Adi.

adibaron at 2007-6-29 17:54:36 > top of Java-index,Other Topics,Patterns & OO Design...
# 8
Thanks. This has worked.Don't like me much to put the ejb in classpath (because as today I didn't need to do this) but If I have to do this to make this work what more I can do?A BIG LOT OF THANKS!
JPons at 2007-6-29 17:54:36 > top of Java-index,Other Topics,Patterns & OO Design...