RE: Problems with JNDI lookups of ejb-ref-name defined inapplication-client.xml from a client application...
I think application-client.xml is broken in Orion. The whole purpose of having application-client.xml is to be able to map a client written by one vendor, to the EJB written by another vendor. Has any one been able to "properly" use application-clientejb-ref to map ejb-ref-name to ejb-link where both are NOT the same string? Thanks. -AP_ -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Alex Paransky Sent: Thursday, March 15, 2001 2:11 PM To: Orion-Interest Subject: Problems with JNDI lookups of ejb-ref-name defined in application-client.xml from a client application... I have a client application which has META-INF with the following application-client.xml definition: application-client ejb-ref ejb-ref-nameejb/id/ejb-ref-name ejb-ref-typeSession/ejb-ref-type homecom.indnet.model.id.IdSessionHome/home remotecom.indnet.model.id.IdSession/remote ejb-linkId/ejb-link /ejb-ref /application-client In the client, I attempt to do the following: new InitialContext().lookup("ejb/id"); The above fails with the naming exception, telling me that ejb/id cannot be found: Exception in thread "main" javax.naming.NameNotFoundException: ejb/id not found at com.evermind.server.rmi.RMIContext.lookup(JAX) at com.evermind.naming.jz.lookup(JAX) at javax.naming.InitialContext.lookup(InitialContext.java:350) at com.indnet.model.id.test.Client.main(Client.java:16) If I change my client line to read: new InitialContext().lookup("Id"); Things work correctly. "Id" is the ejb-name used for my object: enterprise-beans session ejb-nameId/ejb-name homecom.indnet.model.id.IdSessionHome/home remotecom.indnet.model.id.IdSession/remote ejb-classcom.indnet.model.id.IdSessionBean/ejb-class session-typeStateless/session-type ... What is the purpose of application-client.xml if I cannot create references and use the name specified in ejb-ref-name to lookup the components? Or am I missing something? Thanks. -AP_
RE: Problems with JNDI lookups of ejb-ref-name defined inapplication-client.xml from a client application...
You are exactly correct. This IS how it is working in Orion but this does not seem to the correct. Suppose you have an EJB that implements some STANDARD interface already defined, deployed and used by many applications and from many places. You buy a client application from a vendor who has implemented a new GUI to work with this STANDARD interface. The vendor defines application-client.xml and you need to augment it with ejb-link to point to the actual bean. The vendor DOES NOT know what is the REAL PHYSICAL name of the bean which implemented the STANDARD interface in your environment, so there is no way for the vendor to do a lookup based on "beanName". The client vendor writes his application to lookup on the value in ejb-ref-name. If this is the way Orion is working, this appears to be somewhat of a serious bug. By the way, when I try to use "java:comp/env" from my client, I get the following exception: Exception in thread "main" javax.naming.NamingException: java:comp/env namespace is only available from within a J2EE component at com.sun.enterprise.naming.java.javaURLContext.getComponentContext(javaURLCon text.java:392) at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:51) at javax.naming.InitialContext.lookup(InitialContext.java:350) at client.PersonClient.main(PersonClient.java:25) Should I record this as a bug, or does any one have other ideas? Thanks to all that replied -AP_ -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Bruno Baloi Sent: Friday, March 16, 2001 6:54 AM To: Orion-Interest Subject: RE: Problems with JNDI lookups of ejb-ref-name defined in application-client.xml from a client application... Hia guys, Here is a bit of my experience with this stuff - I found out that if I have a regular Java client it's the ejb-jar.xml's ejb-name that is being used to lookup the bean name without the comp/env. The comp/env is only to be used by J2ee clients i.e. servlets or JSPs. For the J2EE clients, it is the ejb-ref name that is used in the lookup. It's weird as all hell !! But that how I found out about this. IN other words whatever you are using for the Home's lookup will depend on the type of client you are using. To recap - for Java clients use lookup("beanName") for J2EE clients ("java:comp/env/beanName") Try giving this a try Good Luck -Original Message- From: Magnus Rydin [SMTP:[EMAIL PROTECTED]] Sent: Friday, March 16, 2001 4:30 AM To: Orion-Interest Subject:SV: Problems with JNDI lookups of ejb-ref-name defined in application-client.xml from a client application... Did you try looking up "java:comp/env/ejb/id" ? WR -Ursprungligt meddelande- Frn: Alex Paransky [ mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] ] Skickat: den 15 mars 2001 14:11 Till: Orion-Interest mne: Problems with JNDI lookups of ejb-ref-name defined in application-client.xml from a client application... I have a client application which has META-INF with the following application-client.xml definition: application-client ejb-ref ejb-ref-nameejb/id/ejb-ref-name ejb-ref-typeSession/ejb-ref-type homecom.indnet.model.id.IdSessionHome/home remotecom.indnet.model.id.IdSession/remote ejb-linkId/ejb-link /ejb-ref /application-client In the client, I attempt to do the following: new InitialContext().lookup("ejb/id"); The above fails with the naming exception, telling me that ejb/id cannot be found: Exception in thread "main" javax.naming.NameNotFoundException: ejb/id not found at com.evermind.server.rmi.RMIContext.lookup(JAX) at com.evermind.naming.jz.lookup(JAX) at javax.naming.InitialContext.lookup(InitialContext.java:350) at com.indnet.model.id.test.Client.main(Client.java:16) If I change my client line to read: new InitialContext().lookup("Id"); Things work correctly. "Id" is the ejb-name used for my object: enterprise-beans session ejb-nameId/ejb-name homecom.indnet.model.id.IdSessionHome/home remotecom.indnet.model.id.IdSession/remote ejb-classcom.indnet.model.id.IdSessionBean/ejb-class session-typeStateless/session-type ... What is the purpose of application-client.xml if I cannot create references and use the name specified in ejb-ref-name to lookup the components? Or am I missing something?
RE: Problems with JNDI lookups of ejb-ref-name defined inapplication-client.xml from a client application...
Well, if that's the case, then what's the point of putting ejb-ref in to the application-client? The client can just always lookup by absolute name inthe JNDI namespace. And how would an independent client developer possibly know the EJB names deployed in your custom environment? -AP_ -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Jeff Hubbach Sent: Friday, March 16, 2001 8:00 AM To: Orion-Interest Subject: Re: Problems with JNDI lookups of ejb-ref-name defined in application-client.xml from a client application... Just a sidenote, maybe it's your problem. From page 377 of Enterprise JavaBeans, 2nd Edition (Oreilly): "The ejb-link value must match one of the ejb-name values declared in the same deployment descriptor." That is, it's only valid if you're using an ejb-jar.xml to define multiple beans. Jeff Hubbach. Alex Paransky wrote: I have a client application which has META-INF with the following application-client.xml definition: application-client ejb-ref ejb-ref-nameejb/id/ejb-ref-name ejb-ref-typeSession/ejb-ref-type homecom.indnet.model.id.IdSessionHome/home remotecom.indnet.model.id.IdSession/remote ejb-linkId/ejb-link /ejb-ref /application-client In the client, I attempt to do the following: new InitialContext().lookup("ejb/id"); The above fails with the naming exception, telling me that ejb/id cannot be found: Exception in thread "main" javax.naming.NameNotFoundException: ejb/id not found at com.evermind.server.rmi.RMIContext.lookup(JAX) at com.evermind.naming.jz.lookup(JAX) at javax.naming.InitialContext.lookup(InitialContext.java:350) at com.indnet.model.id.test.Client.main(Client.java:16) If I change my client line to read: new InitialContext().lookup("Id"); Things work correctly. "Id" is the ejb-name used for my object: enterprise-beans session ejb-nameId/ejb-name homecom.indnet.model.id.IdSessionHome/home remotecom.indnet.model.id.IdSession/remote ejb-classcom.indnet.model.id.IdSessionBean/ejb-class session-typeStateless/session-type ... What is the purpose of application-client.xml if I cannot create references and use the name specified in ejb-ref-name to lookup the components? Or am I missing something? Thanks. -AP_ -- Jeff Hubbach Internet Developer New Media Designs, Inc. www.nmd.com