RE: RE: JNDI naming exception when running app on orion from JBuilder
I have done both of the things mentioned and it still doesn't work. The JNDI properties only need to be set explicitly for jbuilder debugging. I am informed by Borland that this is probably because jbuilder is using it's own JNDI settings. When I run the application in orion normally, it works fine without specifying the JNDI settings,because I have put the ejb-ref tags in the web.xml. The problem is that, as shown below, the jndi.properties file in the META-INF directory of the war file is not being found. I'm pretty sure that if it was found, debugging would work. I just don't understand why it isnt being found. grant try: env.put(Context.PROVIDER_URL, ormi://localhost/flexisale2); instead of: env.put(Context.PROVIDER_URL, http://localhost/flexisale2;); That should give you the correct provider. I still don't understand why you are needing to specify JNDI properties. If you are running both your Servlet and your EJB's in the same instance of Orion specifying the Provider and Context factory should not be required. I debug EJB's, JSP's (using development mode), and Servlets inside of JBuilder 5 Enterprise without a problem. I have never needed to create an application-client.xml file. You do need, however, to specify the ejb-ref in the web.xml file. ejb-ref ejb-ref-nameejb/SPControllerHome/ejb-ref-name ejb-ref-typeSession/ejb-ref-type homeuk.co.britannic.flexisale.server.spcontroller.SPControllerHome/home remoteuk.co.britannic.flexisale.server.spcontroller.SPController/remote /ejb-ref Original Message: - From: DORAN, GRANT [EMAIL PROTECTED] Date: Tue, 19 Mar 2002 10:39:13 - To: [EMAIL PROTECTED] Subject: RE: JNDI naming exception when running app on orion from JBuilder Thanks, I am using JBuilder 6 Enterprise (trial) and debugging using the Non-jpda method described in the article that you mention. I have managed to move on slightly from that problem, by changing the code in the servlet to: Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, com.evermind.server.ApplicationClientInitialContextFactory); env.put(Context.PROVIDER_URL, http://localhost/flexisale2;); // Get the initial JNDI context using our settings Context context; try { context = new InitialContext(env); } catch (Throwable e) { e.printStackTrace(); throw new ServletException( Unable to get initial JNDI context: + e.toString()); } and by creating an application-client.xml file and puttnig it in the .war file in the META-INF directory. The xml file looks like this. ?xml version=1.0 encoding=UTF-8? !DOCTYPE application-client PUBLIC -//Sun Microsystems, Inc.//DTD J2EE Application Client 1.2//EN http://java.sun.com/j2ee/dtds/application-client_1_2.dtd; application-client display-nameSPcontroller/display-name ejb-ref ejb-ref-nameejb/SPControllerHome/res-ref-name ejb-ref-typeSession/res-type homeuk.co.britannic.flexisale.server.spcontroller.SPControllerHome/home remoteuk.co.britannic.flexisale.server.spcontroller.SPController/remote /ejb-ref /application-client But when the line creating the new context is run; context = new InitialContext(env); I get the following exception: javax.naming.NamingException: META-INF/application-client.xml resource not found (see J2EE spec, application-client chapter for requirements and format of the file) at com.evermind.server.ApplicationClientInitialContextFactory.getInitialConte xt (Unknown Source) at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:665) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:246) at javax.naming.InitialContext.init(InitialContext.java:222) at javax.naming.InitialContext.init(InitialContext.java:198) at uk.co.britannic.flexisale.server.test.TestServlet.init(TestServlet.java:46 ) at com.evermind._ah._axe(Unknown Source) at com.evermind._ah._fpd(Unknown Source) at com.evermind._ah._cwc(Unknown Source) at com.evermind._io._twc(Unknown Source) at com.evermind._io._gc(Unknown Source) at com.evermind._if.run(Unknown Source) This error occurs even when I'm running orion by itself. I've looked high and low and cant find any info that indicates why the file can't be found. Every example that I can find defines the provider_url as the root of the web application, like this; env.put(Context.PROVIDER_URL, http://localhost/flexisale2;); If the application-client.xml file is in the META-INF directory of the web application, why do I get this error? Has anyone done this before? Thanks, Grant Doran Contract Java Developer/Architect Britannic Assurance -Original
RE: RE: JNDI naming exception when running app on orion from JBuilder
try: env.put(Context.PROVIDER_URL, ormi://localhost/flexisale2); instead of: env.put(Context.PROVIDER_URL, http://localhost/flexisale2;); That should give you the correct provider. I still don't understand why you are needing to specify JNDI properties. If you are running both your Servlet and your EJB's in the same instance of Orion specifying the Provider and Context factory should not be required. I debug EJB's, JSP's (using development mode), and Servlets inside of JBuilder 5 Enterprise without a problem. I have never needed to create an application-client.xml file. You do need, however, to specify the ejb-ref in the web.xml file. ejb-ref ejb-ref-nameejb/SPControllerHome/ejb-ref-name ejb-ref-typeSession/ejb-ref-type homeuk.co.britannic.flexisale.server.spcontroller.SPControllerHome/home remoteuk.co.britannic.flexisale.server.spcontroller.SPController/remote /ejb-ref Original Message: - From: DORAN, GRANT [EMAIL PROTECTED] Date: Tue, 19 Mar 2002 10:39:13 - To: [EMAIL PROTECTED] Subject: RE: JNDI naming exception when running app on orion from JBuilder Thanks, I am using JBuilder 6 Enterprise (trial) and debugging using the Non-jpda method described in the article that you mention. I have managed to move on slightly from that problem, by changing the code in the servlet to: Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, com.evermind.server.ApplicationClientInitialContextFactory); env.put(Context.PROVIDER_URL, http://localhost/flexisale2;); // Get the initial JNDI context using our settings Context context; try { context = new InitialContext(env); } catch (Throwable e) { e.printStackTrace(); throw new ServletException( Unable to get initial JNDI context: + e.toString()); } and by creating an application-client.xml file and puttnig it in the .war file in the META-INF directory. The xml file looks like this. ?xml version=1.0 encoding=UTF-8? !DOCTYPE application-client PUBLIC -//Sun Microsystems, Inc.//DTD J2EE Application Client 1.2//EN http://java.sun.com/j2ee/dtds/application-client_1_2.dtd; application-client display-nameSPcontroller/display-name ejb-ref ejb-ref-nameejb/SPControllerHome/res-ref-name ejb-ref-typeSession/res-type homeuk.co.britannic.flexisale.server.spcontroller.SPControllerHome/home remoteuk.co.britannic.flexisale.server.spcontroller.SPController/remote /ejb-ref /application-client But when the line creating the new context is run; context = new InitialContext(env); I get the following exception: javax.naming.NamingException: META-INF/application-client.xml resource not found (see J2EE spec, application-client chapter for requirements and format of the file) at com.evermind.server.ApplicationClientInitialContextFactory.getInitialContext (Unknown Source) at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:665) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:246) at javax.naming.InitialContext.init(InitialContext.java:222) at javax.naming.InitialContext.init(InitialContext.java:198) at uk.co.britannic.flexisale.server.test.TestServlet.init(TestServlet.java:46) at com.evermind._ah._axe(Unknown Source) at com.evermind._ah._fpd(Unknown Source) at com.evermind._ah._cwc(Unknown Source) at com.evermind._io._twc(Unknown Source) at com.evermind._io._gc(Unknown Source) at com.evermind._if.run(Unknown Source) This error occurs even when I'm running orion by itself. I've looked high and low and cant find any info that indicates why the file can't be found. Every example that I can find defines the provider_url as the root of the web application, like this; env.put(Context.PROVIDER_URL, http://localhost/flexisale2;); If the application-client.xml file is in the META-INF directory of the web application, why do I get this error? Has anyone done this before? Thanks, Grant Doran Contract Java Developer/Architect Britannic Assurance -Original Message- From: [EMAIL PROTECTED] [SMTP:[EMAIL PROTECTED]] Sent: 18 March 2002 15:05 To: Orion-Interest Subject: RE: JNDI naming exception when running app on orion from JBuilder Are you running the servlet in orion or tomcat ? Does the console in JBuilder say: Orion/1.5.4 initialized (or whichever version you have) You should be able to make it work by replacing the code: java:comp/env/ejb/SPControllerHome with: SPControllerHome It sounds to me like you are running tomcat which is external to your session bean (not in the container) and requires the external context lookup. If this is the case, a better solution would be to debug the servlet in Orion which would mean starting Orion