geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From wanyna <wan...@hotmail.com>
Subject Re: AW: ejb client jndi problem
Date Thu, 27 Sep 2007 08:19:30 GMT

Thanks.
In my test simple-ejb2-1.0.jar wrapped in an ear, test passed with jndi name 
"simple-ejb2-1.0.jar/Echo/org.apache.openejb.examples.counter.ejb2.Echo".

I am used to configure jndi name in openejb-jar.xml or other j2ee server's
application description file. Whaterver ejb wrapped in, and what type client
is, the same is jndi name.  I feel it's simple and easy to use.

I'm glad to hear you will make this consistent in next version.
But can you tell me why openejb3's jndi name was designed more complex now? 



djencks wrote:
> 
> 
> On Sep 25, 2007, at 6:47 PM, wanyna wrote:
> 
>>
>> Thanks.
>> By using jndi name like
>> "simple-ejb3/Echo/ 
>> org.apache.openejb.examples.counter.ejb3.EchoRemote",
>> client lookup success both ejb2 and ejb3 test.
>>
>> But when I wrap this ejb jar in an ear, my test application failed  
>> again.
>> What's correct jndi name in this case?
> 
> (I could be wrong in my answer).  In an ear, the first component of  
> the jndi name is the ejb jar name.  So if your ejb jar is called  
> simple-ejb3.jar, the jndi name would be
> 
> simple-ejb3.jar/Echo/org.apache.openejb.examples.counter.ejb3.EchoRemote
> 
> For a standalone ejb jar, the first component is the artifactId  
> specified in the geronimo plan for the app.  If you don't supply a  
> plan or don't supply a moduleId for the plan (it might be required,  
> I'm not sure), the default is the name of the jar with the extension  
> removed, in this case simple.ejb3.
> 
> So, you can get the same name in and out of the ear by setting the  
> artifactId to simple-ejb3.jar in the geronimo plan.
> 
> We're considering if and how to make this more consistent in 2.0.2  
> and/or 2.1
> 
> thanks
> david jencks
> 
>>
>>
>>
>>
>> Ueberbach, Michael wrote:
>>>
>>> Hi,
>>>
>>> I don't know exactly your situation, please check the following
>>> conditions:
>>> - you deployed a EJB 3.0 application in an xxx-ejb.jar
>>> - you configured an openejb-jar.xml deployment plan where you set an
>>> artifactId for your app, let's say "MyApp"
>>> - you have a session bean you want connect to, let's say  
>>> "MySessionBean"
>>> - you have build a remote interface for your session bean (EJB 3.0  
>>> means a
>>> simple interface), let's say "MySessionRemote"
>>>
>>> then the following is the right jndi name to get a connection to  
>>> your bean
>>>
>>> "MyApp/MySessionBean/my.package.MySessionRemote"
>>>
>>> You have to use the fully qualified class name for the Interface!
>>>
>>> Regards
>>> Michael
>>>
>>>
>>> -----Urspr√ľngliche Nachricht-----
>>> Von: wanyna [mailto:wanyna@hotmail.com]
>>> Gesendet: Freitag, 21. September 2007 11:47
>>> An: user@geronimo.apache.org
>>> Betreff: ejb client jndi problem
>>>
>>>
>>> I deploy ejb jar in geronimo2.0.1, this is a ejb2 test
>>> http://www.nabble.com/file/p12813817/simple-ejb2-1.0.jar
>>> simple-ejb2-1.0.jar , and this is a ejb3 test
>>> http://www.nabble.com/file/p12813817/simple-ejb3-1.0.jar
>>> simple-ejb3-1.0.jar .
>>>
>>> Both of them deploy no error.
>>>
>>> My client is a standalone application. Test code:
>>> public class ClientTest {
>>>
>>> 	public static EchoRemote getEchoService(String url,
>>> 			String contextFactory) throws Exception {
>>> 		Context context = getInitialContext(contextFactory, url);
>>> 		Object obj = context.lookup("Echo");
>>> 		return (EchoRemote) obj;
>>> 	}
>>>
>>> 	public static CounterRemote getCounterService(String url,
>>> 			String contextFactory) throws Exception {
>>> 		Context context = getInitialContext(contextFactory, url);
>>> 		Object obj = context.lookup("SuperCounterBusinessRemote");
>>> 		return (CounterRemote) obj;
>>> 	}
>>>
>>> 	private static Context getInitialContext(String initContextFactory,
>>> 			String url) throws Exception {
>>> 		Properties properties = new Properties();
>>> 		properties.put(Context.INITIAL_CONTEXT_FACTORY,  
>>> initContextFactory);
>>> 		properties.put(Context.PROVIDER_URL, url);
>>>
>>> 		return new InitialContext(properties);
>>> 	}
>>> 	
>>> 	public static void main(String[] args) throws Exception{
>>> 		String url = "ejbd://localhost:4201";
>>> 		String factory = "org.openejb.client.RemoteInitialContextFactory";
>>> 		EchoRemote echo = getEchoService(url, factory);
>>> 		assert("cba".equals(echo.echo("abc")));
>>> //		CounterRemote counter = getCounterService(url, factory);
>>> //		assert(counter.reset()==0);
>>> //		assert(counter.increment()==1);
>>> //		assert(counter.increment()==2);
>>> //		assert(counter.reset()==0);
>>> 	}
>>>
>>> }
>>>
>>> exception:
>>> Exception in thread "main" javax.naming.NameNotFoundException: / 
>>> Echo does
>>> not exist in the system.  Check that the app was successfully  
>>> deployed.
>>> 	at org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java: 
>>> 237)
>>> 	at javax.naming.InitialContext.lookup(InitialContext.java:351)
>>> 	at test.ClientTest.getEchoService(ClientTest.java:17)
>>> 	at test.ClientTest.main(ClientTest.java:40)
>>>
>>> What's the right jndi name?
>>>
>>> I see some other messages talk about ejb jndi, but still can't  
>>> resolve my
>>> problem.
>>>
>>> I deploy ejb2 test in geronimo 1.x, client lookup no problem.
>>> --
>>> View this message in context:
>>> http://www.nabble.com/ejb-client-jndi-problem- 
>>> tf4492931s134.html#a12813817
>>> Sent from the Apache Geronimo - Users mailing list archive at  
>>> Nabble.com.
>>>
>>>
>>
>> -- 
>> View this message in context: http://www.nabble.com/ejb-client-jndi- 
>> problem-tf4492931s134.html#a12892325
>> Sent from the Apache Geronimo - Users mailing list archive at  
>> Nabble.com.
>>
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/ejb-client-jndi-problem-tf4492931s134.html#a12916830
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.


Mime
View raw message