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 <[EMAIL PROTECTED]> 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 = [EMAIL PROTECTED]
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
[EMAIL PROTECTED]
-------- Original Message --------
Subject: jndi lookup in remote client for geronimo v2
From: Xiao-fei Song <[EMAIL PROTECTED]>
Date: Fri, June 29, 2007 7:04 am
To: [email protected]
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 = [EMAIL PROTECTED]
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.