geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From vrm <vijes...@gmail.com>
Subject Re: jndi lookup in remote client for geronimo v2
Date Wed, 19 Sep 2007 01:57:07 GMT

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.




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.RemoteInitialContextFactory");
> 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