geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Blevins <dblev...@visi.com>
Subject Re: jndi lookup in remote client for geronimo v2
Date Thu, 20 Sep 2007 01:10:11 GMT

On Sep 18, 2007, at 6:57 PM, vrm wrote:

>
> After alot of messing around, I found the answer to my problem. The  
> correct
> way to reference an EJB from an openejb-client is to use the  
> following =
>
> artifactid.jar/beanname/fullpathtointerface
>
> so in my case, inside the EAR was TheEJB.jar =
>
> TheEJB.jar/TheBean/com.mydomain.ejbtest.TheInterface
>
> That seemed to work. Not sure if its my error in setting up the  
> EAR, but
> using the ".jar" at the end solved the problem.

Great to hear it's working.

I think there may be a difference in the default artifactId for an  
ejb jar in an ear vs a standalone ejb jar.  I was chatting with David  
J. about this and we determined that the default artifactId for an  
ejb jar is the same regardless if it was in an ear or out... but it  
doesn't seem like this is the case.  It seems you clearly get  
MyEjbs.jar in an ear and MyEjbs (no .jar) out of an ear.

This is likely something we should fix.

-David

>
>
>
>
> vrm wrote:
>>
>> Thanks for the examples - Is there any difference between the Context
>> Lookup in an EJB-JAR vs an EAR ?
>>
>> I'm still getting a naming exception and I followed both the examples
>> exactly. Here are some files associated with my configuration =
>>
>> ---------------
>> If my geronimo-application.xml =
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <application
>> xmlns="http://geronimo.apache.org/xml/ns/j2ee/application-1.2">
>> 	<environment xmlns="http://geronimo.apache.org/xml/ns/ 
>> deployment-1.2">
>>         <moduleId>
>>             <groupId>com.mydomain.ejbtest</groupId>
>>             <artifactId>EjbTest</artifactId>
>>             <version>1.0o</version>
>>             <type>ear</type>
>>         </moduleId>
>>     </environment>
>> </application>
>>
>> ---------------
>> openejb-jar.xml =
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1">
>> 	<environment xmlns="http://geronimo.apache.org/xml/ns/ 
>> deployment-1.2">
>> 		<moduleId>
>> 			<groupId>com.mydomain.ejbtest</groupId>
>> 			<artifactId>TheEJB</artifactId>
>> 			<version>1.1</version>
>> 			<type>car</type>
>> 		</moduleId>
>> 		<dependencies>
>>             <dependency>
>> 	            <groupId>com.mydomain.ejbtest</groupId>
>> 	            <artifactId>MyQueueConnectionFactory</artifactId>
>>             	<version>1.0</version>
>> 	            <type>rar</type>
>>         	</dependency>
>>             <dependency>
>>                 <groupId>com.mydomain.ejbtest</groupId>
>>                 <artifactId>MysqlDatabase</artifactId>
>>             	<version>1.0</version>
>> 	            <type>rar</type>
>>             </dependency>
>> 		</dependencies>
>> 		<hidden-classes/>
>> 		<non-overridable-classes/>
>> 	</environment>
>> </openejb-jar>
>>
>>
>> ---------------
>> The EJB Bean =
>>
>> @Stateless(name="TheBean")
>> @Remote(TheInterface.class)
>> public class TheBean implements TheInterface{
>>
>>
>> ---------------
>> The Interface =
>>
>> @Remote
>> public interface TheInterface {
>>
>>
>> ---------------
>> The Client =
>>
>> Properties ejbprop = new Properties();
>> ejbprop.put 
>> ("java.naming.factory.initial","org.apache.openejb.client.RemoteIniti 
>> alContextFactory");
>> ejbprop.put("java.naming.provider.url", "ejbd://127.0.0.1:4201");
>> javax.naming.InitialContext ctx = new
>> javax.naming.InitialContext(EJBprops);
>> TheInterface obj =
>> (TheInterface)ctx.lookup("TheEJB/TheBean/ 
>> com.mydomain.ejbtest.TheInterface");
>>
>>
>>
>> 				
>>
>> Jarek Gawor-2 wrote:
>>>
>>> I have some tests in Geronimo that might help.
>>>
>>> If you have a EJB 2.x take a look at:
>>> http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/ 
>>> webservices-testsuite/jaxrpc-tests/jaxrpc-ejb/
>>>
>>> And for the client take a look at the testEJB() function in
>>> http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/ 
>>> webservices-testsuite/jaxrpc-tests/jaxrpc-ejb/src/test/java/org/ 
>>> apache/geronimo/testsuite/testset/JaxRPCTest.java?view=markup
>>>
>>> If you have EJB 3.0 take a look at:
>>> http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/ 
>>> webservices-testsuite/jaxws-tests/jaxws-ejb/
>>>
>>> And for the client take a look at the testEJB() function in
>>> http://svn.apache.org/viewvc/geronimo/server/trunk/testsuite/ 
>>> webservices-testsuite/jaxws-tests/jaxws-ejb/src/test/java/org/ 
>>> apache/geronimo/testsuite/testset/JaxWSTest.java?view=markup
>>>
>>> Jarek
>>>
>>> On 9/14/07, vrm <vijeshmehta@hotmail.com> wrote:
>>>>
>>>> I'm having the exact same issue. I've spent 2 days looking  
>>>> around and
>>>> there
>>>> is no examples or documentations available for a Remote openejb  
>>>> client
>>>> accessing an EJB on Geronimo 2.
>>>>
>>>> Anybody have an EAR for Geronimo2 and an Openejb-Client app  
>>>> accessing
>>>> it?
>>>>
>>>> The Exception I get =
>>>> javax.naming.NameNotFoundException: /TheBean does not exist in the
>>>> system.
>>>> Check that the app was successfully deployed.
>>>>
>>>> I've tried the following for InitialContext.lookup =
>>>> (artifactid)/(TheBean)/(TheInterface)
>>>> (artifactid)/(Interface)
>>>> (ejbBean)/(Interface)
>>>> (artifactid)/(TheBean)/(Full Path to Interface)
>>>> ...and many more variations of this
>>>>
>>>>
>>>> My EJB Interface =
>>>>
>>>> @Remote
>>>> public interface TheInterface {
>>>>
>>>>
>>>> My Bean =
>>>> @Stateless
>>>> public class TheBean implements TheInterface {
>>>>
>>>>
>>>> Anybody get this to work or have examples, please post.
>>>>
>>>>
>>>>
>>>>
>>>> Xiao-fei Song wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> Just wanted to let you know I modified a little bit about the  
>>>>> code:
>>>>>
>>>>>         props.setProperty("java.naming.factory.initial",
>>>>> "org.apache.openejb.client.RemoteInitialContextFactory");
>>>>>         props.setProperty("java.naming.provider.url",
>>>> "127.0.0.1:4201");
>>>>>         props.setProperty("java.naming.security.principal",  
>>>>> "system");
>>>>>         props.setProperty("java.naming.security.credentials",
>>>> "manager");
>>>>>
>>>>>         Context ic = new InitialContext(props);
>>>>>         System.out.println("ic = " + ic);
>>>>>
>>>>>         Object objRef = ic.lookup("MySessionRemoteHome");
>>>>>         System.out.println("objRef = " + objRef);
>>>>>
>>>>>         test.abc.MySessionRemoteHome home =
>>>>> (test.abc.MySessionRemoteHome)PortableRemoteObject.narrow(objRef,
>>>>> test.abc.MySessionRemoteHome.class);
>>>>>         System.out.println("home = " + home);
>>>>>
>>>>>         test.abc.MySessionRemote remote = home.create();
>>>>>         System.out.println("remote = " + remote);
>>>>>
>>>>>         String message = remote.getString();
>>>>>         System.out.println("message = " + message);
>>>>>
>>>>>
>>>>> and it works okay on geronimo 1.2 beta. So this really makes me
>>>> confused,
>>>>> is this a regression or intended to be. Can someone in this alias
>>>> please
>>>>> respond me?
>>>>>
>>>>> Thanks,
>>>>> Chris
>>>>>
>>>>>
>>>>> Xiao-fei Song wrote:
>>>>>>
>>>>>> Hi Mark,
>>>>>>
>>>>>> Thanks for your response.
>>>>>>
>>>>>> 1. For the time being, I don't really care if the client is  
>>>>>> really
>>>>>> "remote". From my tests, it looks like only "127.0.0.1" is  
>>>>>> accepted
>>>>>> otherwise the connects just failed. I don't know where the
>>>> documentation
>>>>>> can be found on this.
>>>>>>
>>>>>> 2. Yes I assume all the libraries are there for the EJB call. And
>>>> they
>>>>>> are:
>>>>>>
>>>>>> cglig-nodep
>>>>>> geronimo-kernel
>>>>>> openejb-core
>>>>>> openejb-client
>>>>>> j2ee.jar (from j2ee ri)
>>>>>>
>>>>>> 3. Unfortunately it does not work with "ejb/ 
>>>>>> MySessionRemoteHome" and
>>>> here
>>>>>> is what I got:
>>>>>>
>>>>>> ic = javax.naming.InitialContext@1e51060
>>>>>> Exception in thread "main" javax.naming.NameNotFoundException:
>>>>>> /ejb/MySessionRemoteHome does not exist in the system.  Check  
>>>>>> that
>>>> the
>>>>>> app was successfully deployed.
>>>>>>         at
>>>>>> org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java: 
>>>>>> 231)
>>>>>>         at javax.naming.InitialContext.lookup(Unknown Source)
>>>>>>         at apachegclient.TestClient.main(TestClient.java:43)
>>>>>>
>>>>>>
>>>>>> I would say my first experiences with Genonimo is frustrated  
>>>>>> because
>>>> I
>>>>>> just spent a whole day on a very simple task. Anyway, if you  
>>>>>> have the
>>>>>> sample code (both the ejb and the ejb client) that works with
>>>> geronimo
>>>>>> v2, please send it to my email address.
>>>>>>
>>>>>> Thanks,
>>>>>> Chris
>>>>>>
>>>>>>
>>>>>>
>>>>>> Mark Aufdencamp wrote:
>>>>>>>
>>>>>>> Hi Chris,
>>>>>>>
>>>>>>> I'll give it a shot at helping you.  I've been able to do this
>>>> thanks to
>>>>>>> much help from others on this list.
>>>>>>>
>>>>>>> Are you truly doing this as a remote client from a different
 
>>>>>>> machine
>>>>>>> than the server?  If so, the IP addres your using for the naming
>>>>>>> provider should be the server address, rather than the local
>>>> loopback
>>>>>>> address.
>>>>>>>
>>>>>>> Do you have all of the required remote client libraries in  
>>>>>>> the class
>>>>>>> path for the remote EJB call?  I can look back at my notes and
>>>> provide
>>>>>>> these if you need them.
>>>>>>>
>>>>>>> I believe the remote name will probably be proceeded by  
>>>>>>> "ejb".  As
>>>> in
>>>>>>> "ejb/MySessionRemoteHome".
>>>>>>>
>>>>>>> I can dig up some code of my own that works if you'ld like.
>>>>>>>
>>>>>>> Hope this helps some.
>>>>>>>
>>>>>>> Mark Aufdencamp
>>>>>>> Mark@Aufdencamp.com
>>>>>>>
>>>>>>>> -------- Original Message --------
>>>>>>>> Subject: jndi lookup in remote client for geronimo v2
>>>>>>>> From: Xiao-fei Song <xfsong_chris@yahoo.com>
>>>>>>>> Date: Fri, June 29, 2007 7:04 am
>>>>>>>> To: user@geronimo.apache.org
>>>>>>>>
>>>>>>>> Hi guys,
>>>>>>>>
>>>>>>>> I have developed an EJB 2.x stateless session using  
>>>>>>>> netbeans, and I
>>>>>>>> want to write a very simple stand alone ejb client to access
 
>>>>>>>> it in
>>>>>>>> geronimo v2. The code looks like below:
>>>>>>>>
>>>>>>>>
>>>>>>>>         props.setProperty("java.naming.factory.initial",
>>>>>>>> "org.openejb.client.RemoteInitialContextFactory");
>>>>>>>>         props.setProperty("java.naming.provider.url",
>>>>>>>> "127.0.0.1:4201");
>>>>>>>>         //props.setProperty("java.naming.security.principal",
>>>>>>>> "testuser");
>>>>>>>>         //props.setProperty("java.naming.security.credentials",
>>>>>>>> "testpassword");
>>>>>>>>
>>>>>>>>         Context ic = new InitialContext(props);
>>>>>>>>         System.out.println("ic = " + ic);
>>>>>>>>
>>>>>>>>         Object objRef = ic.lookup("MySessionRemoteHome");
>>>>>>>>
>>>>>>>> I read the documentation and it looks like the only way to
 
>>>>>>>> lookup
>>>> in
>>>>>>>> the remote client is through jndi-name in openejb-jar.xml.
 
>>>>>>>> And I
>>>> have
>>>>>>>> done that as below:
>>>>>>>>
>>>>>>>> <?xml version="1.0"?>
>>>>>>>>   <openejb-jar
>>>>>>>>     xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1"
>>>>>>>>     xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.1"
>>>>>>>>     xmlns:sys="http://geronimo.apache.org/xml/ns/ 
>>>>>>>> deployment-1.2">
>>>>>>>>
>>>>>>>>    <enterprise-beans>
>>>>>>>>       <session>
>>>>>>>>         <ejb-name>MySessionBean</ejb-name>
>>>>>>>>         <jndi-name>MySessionRemoteHome</jndi-name>
>>>>>>>>       </session>
>>>>>>>>     </enterprise-beans>
>>>>>>>>   </openejb-jar>
>>>>>>>>
>>>>>>>> After the ejb is deployed to geronimo, I ran the client and
 
>>>>>>>> found
>>>>>>>> below error:
>>>>>>>>
>>>>>>>> ic = javax.naming.InitialContext@1e51060
>>>>>>>> Exception in thread "main" javax.naming.NameNotFoundException:
>>>>>>>> /MySessionRemoteHome does not exist in the system.  Check
 
>>>>>>>> that the
>>>> app
>>>>>>>> was successfully deployed.
>>>>>>>>         at
>>>>>>>> org.apache.openejb.client.JNDIContext.lookup 
>>>>>>>> (JNDIContext.java:231)
>>>>>>>>         at javax.naming.InitialContext.lookup(Unknown Source)
>>>>>>>>         at apachegclient.TestClient.main(TestClient.java:43)
>>>>>>>>
>>>>>>>>
>>>>>>>> Anyone has any idea what's going on?
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Chris
>>>>>>>>
>>>>>>>>
>>>>>>>> ---------------------------------
>>>>>>>> Ready for the edge of your seat? Check out tonight's top
 
>>>>>>>> picks on
>>>>>>>> Yahoo! TV.
>>>>>>>>
>>>>>>>> ---------------------------------
>>>>>>>> Now that's room service! Choose from over 150,000 hotels
>>>>>>>> in 45,000 destinations on Yahoo! Travel to find your fit.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/jndi-lookup-in-remote-client-for-geronimo- 
>>>> v2-tf3999496s134.html#a12680611
>>>> Sent from the Apache Geronimo - Users mailing list archive at
>>>> Nabble.com.
>>>>
>>>>
>>>
>>>
>>
>>
>
> -- 
> View this message in context: http://www.nabble.com/jndi-lookup-in- 
> remote-client-for-geronimo-v2-tf3999496s134.html#a12769437
> Sent from the Apache Geronimo - Users mailing list archive at  
> Nabble.com.
>
>


Mime
View raw message