aspose file tools*
The moose likes EJB and other Java EE Technologies and the fly likes Name TestSession is not bound in this Context Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » EJB and other Java EE Technologies
Bookmark "Name TestSession is not bound in this Context" Watch "Name TestSession is not bound in this Context" New topic
Author

Name TestSession is not bound in this Context

Chris Montgomery
Ranch Hand

Joined: Jan 14, 2004
Posts: 141
Setup:
-EJB running in JBoss - client test code doing same thing works great.
-Struts running OUTSIDE of JBoss.
-Struts Action class (in Tomcat) is trying to connect to EJB (in JBoss).

code is failing here:
-Object o = initial.lookup("TestSession");

jboss.xml:
<session>
<ejb-name>TestSession</ejb-name>
<jndi-name>TestSession</jndi-name>
<local-jndi-name>TestSessionLocal</local-jndi-name>
<resource-ref>
<res-ref-name>jdbc/test</res-ref-name>
<jndi-name>java:/test</jndi-name>
</resource-ref>
</session>

JNDIView Service List:
Global JNDI Namespace
+- TestSession (proxy: $Proxy53 implements interface com.test.TestSessionHome,interface javax.ejb.Handle)


Everything *appears* to be okay, but I'm still quite new to this.

Any ideas?

Thanks!
Kripal Singh
Ranch Hand

Joined: Jul 26, 2001
Posts: 254
can you post both client code and exception


# Help an unprivileged kid.<br /> Whatever u do will make a difference...<br /> ...to a child's life & ur own #<br /><a href="http://www.cry.org/" target="_blank" rel="nofollow">www.cry.org/</a>
Chris Montgomery
Ranch Hand

Joined: Jan 14, 2004
Posts: 141
CLIENT CODE:

import com.test.*;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import javax.ejb.CreateException;

import java.io.IOException;
import java.rmi.RemoteException;
import java.util.Hashtable;

import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class test2 extends Action{

private com.test.TestSessionHome getHome() throws NamingException {
return (com.test.TestSessionHome) getContext().lookup("TestSession");
}

private InitialContext getContext() throws NamingException {
Hashtable props = new Hashtable();

props.put(InitialContext.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
props.put(InitialContext.PROVIDER_URL, "jnp://127.0.0.1:1099");

// This establishes the security for authorization/authentication
// props.put(InitialContext.SECURITY_PRINCIPAL,"username");
// props.put(InitialContext.SECURITY_CREDENTIALS,"password");

InitialContext initialContext = new InitialContext(props);
return initialContext;
}

public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception, RemoteException {

com.test.TestSession myBean = getHome().create();

//--------------------------------------
//This is the place you make your calls.
//System.out.println(myBean.callYourMethod());

//System.out.println("test = " + myBean.test("CHRIS"));

return mapping.findForward("success");

}
}
Chris Montgomery
Ranch Hand

Joined: Jan 14, 2004
Posts: 141
EXCEPTION:
javax.naming.NameNotFoundException: Name TestSession is not bound in this Context
Chris Montgomery
Ranch Hand

Joined: Jan 14, 2004
Posts: 141
Sorry, the previous client code was failing with the same error, so I tried a simpler approach...

CLIENT CODE ("EASIER"):

import com.test.*;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import javax.ejb.CreateException;

import java.io.IOException;
import java.rmi.RemoteException;
import java.util.Hashtable;

import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class test3 extends Action{


public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception, RemoteException {

try
{
System.out.println("Adding properties");
Context initial = new InitialContext();
System.out.println("Got initial context!");
Object o = initial.lookup("TestSession");

System.out.println("got object from lookup");
com.test.TestSessionHome home = (com.test.TestSessionHome)PortableRemoteObject.narrow(o, com.test.TestSessionHome.class);
System.out.println("got home object back and did remote narrow cast");
com.test.TestSession h = home.create();
System.out.println("got component interface");
System.out.println(h.test("CHRIS"));
System.out.println("called business method on component interface");
}
catch(Exception ex)
{
System.out.println("Exception: " + ex.toString());
ex.printStackTrace();
return mapping.findForward("fail");
}

//--------------------------------------
//This is the place you make your calls.
//System.out.println(myBean.callYourMethod());

//System.out.println("test = " + myBean.test("CHRIS"));

return mapping.findForward("success");

}

}
Chris Montgomery
Ranch Hand

Joined: Jan 14, 2004
Posts: 141
just so there isn't any confusion. BOTH client examples FAIL. They both fail with the same error and are both from equivalent environments (EJB lives in JBoss and client call is from Struts Action).

test3 error (console display using println - try catch error):
Exception: javax.naming.NameNotFoundException: Name TestSession is not bound in this Context

test 2 error (struts and much, much longer!):
javax.servlet.ServletException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory
at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:516)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:423)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1158)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
at java.lang.Thread.run(Thread.java:534)


root cause

javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory]
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:652)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243)
at javax.naming.InitialContext.init(InitialContext.java:219)
at javax.naming.InitialContext.(InitialContext.java:195)
at com.test.action.test2.getContext(test2.java:70)
at com.test.action.test2.getHome(test2.java:56)
at com.test.action.test2.execute(test2.java:80)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1158)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1443)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1289)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:219)
at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:42)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:649)
... 41 more







thanks again!
Nathan Pruett
Bartender

Joined: Oct 18, 2000
Posts: 4121

Closed your cross-post in the "Distributed Java" forum, but I'll repost the answer I had for you there. Basically, the problem is with the JNDI lookup. You should be looking up "java:comp/env/TestSession", not just "TestSession". JNDI contains data in a hierarchy, and "java:comp/env" is the root of this hierarchy.


-Nate
Write once, run anywhere, because there's nowhere to hide! - /. A.C.
Chris Montgomery
Ranch Hand

Joined: Jan 14, 2004
Posts: 141
still get same error...

summary:
client code works inside of jboss, so..
Either jboss isn't allowing the outside to see, Tomcat is missing something that prevents it from executing a jndi lookup, or the JVM's can't find each other for some other reason - right? What are some other possible causes?

I have port 1099 open - could it be a firewall issue? Do I need other ports open as well?

are there any "common reasons for name not bound in this Context" resources out there?
 
 
subject: Name TestSession is not bound in this Context