You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geronimo.apache.org by thomas2004 <th...@yahoo.de> on 2008/04/01 17:39:47 UTC
Exception by using EJB3 on Geronimo 2
Hi all,
I am learning the EJB3. I follow a tutorial under:
http://www.webagesolutions.com/knowledgebase/javakb/jkb005/index.html
and it runs quite well since I use the SUN Application Server.
So I deployed the EJB Jars onto Geronimo 2. Bu tas I try to start the client
I got exception as follow:
Caused by: java.net.ConnectException: Connection refused: connect
at sun.nio.ch.Net.connect(Native Method)
at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:464)
at
com.sun.corba.ee.impl.orbutil.ORBUtility.openSocketChannel(ORBUtility.java:105)
at
com.sun.enterprise.iiop.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:332)
... 16 more
Here is my session bean:
[code]
@Stateless(name = "Example", mappedName = "ejb/SimpleBeanJNDI")
public class SimpleBeanImpl implements SimpleBean {
public String sayHello(String name) {
return "Hello, the text you enter is: " + name + "!";
}
}
[/code]
And here is the client and lookup:
[code]
public class TestClient {
public void runTest() throws Exception {
InitialContext ctx = new InitialContext();
SimpleBean bean = (SimpleBean) ctx.lookup("ejb/SimpleBeanJNDI");
String result = bean.sayHello("Billy Bob, Wei Chen");
System.out.println(result);
}
public static void main(String[] args) {
try {
TestClient cli = new TestClient();
cli.runTest();
} catch (Exception e) {
e.printStackTrace();
}
}
}
[/code]
Has someone idea?
Regards
Thomas
--
View this message in context: http://www.nabble.com/Exception-by-using-EJB3-on-Geronimo-2-tp16418687s134p16418687.html
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.
Re: Exception by using EJB3 on Geronimo 2
Posted by David Blevins <da...@visi.com>.
Additionally, you'll want to update your client code as follows:
public void runTest() throws Exception {
Properties p = new Properties();
p.put("java.naming.factory.initial",
"org.apache.openejb.client.RemoteInitialContextFactory");
p.put("java.naming.provider.url", "ejbd://localhost:4201");
InitialContext ctx = new InitialContext(p);
SimpleBean bean = (SimpleBean) ctx.lookup("ExampleLocal");
String result = bean.sayHello("Billy Bob");
System.out.println(result);
}
Couple notes on the differences.
First, as David J. mentions, the global JNDI names of EJBs are not
standard (for that you need an official app client), however if you
like the way it is in the Sun example, you can setup Geronimo to use
that style [1]. Just set a system property in Geronimo
"openejb.jndiname.format={deploymentId}"
Second, you can alternately set "java.naming.factory.initial" and
"java.naming.provider.url" in three different ways:
1. as plain java system properties either via System.setProperty
in java client code
2. via vm flags such as "-Djava.naming.provider.url=ejbd://
localhost:4201" on your client vm
3. creating a jndi.properties file containing the above values and
including it in your client classpath.
That said, I'll point out we do have some far better examples for
learning EJB 3.0. First, the above example requires you to manually
start the server, manually deploy, manually run the client (which is
not a junit test), and then to manually undeploy, manually stop.. etc.
etc.
Download these examples and give them a try:
http://www.apache.org/dyn/closer.cgi/openejb/3.0-beta-2/openejb-examples-3.0-beta-2.zip
I recommend the simple-stateless to start. All come with Ant and
Maven build files (use what you like) and all examples come with
ordinary JUnit test cases that will do all the start/stop/deploy/
undeploy work for you. You'll be amazed at how much is happening with
so little work on your part and you'll be amazed at how fast they run.
Give them a try and if you run into any issues, just ping the list and
we'll help you out.
-David
[1] http://cwiki.apache.org/GMOxDOC21/client-jndi-names.html
On Apr 2, 2008, at 11:51 PM, David Jencks wrote:
> Thanks for resending with comprehensible formatting :-)
>
> I think you left out some information about your environment. I
> think there is a jndi.properties file in the client's classpath that
> is directing the use of a corba name service for jndi lookups, using
> the sun ee corba implementation in the client. It's somewhat tricky
> to get that to work.
>
> Access to ejbs from anything other than a javaee module in the same
> javaee application is not standardized. I recommend taking the
> corba and sun stuff out of your client and including the openejb3
> client jar in its classpath. This should set the jndi properties
> correctly for the openejb transport.
>
> If you look in the server log as your application starts you should
> see the global jndi names your ejbs are bound under and that you can
> use with the openejb jndi provider to look up your ejbs.
>
> hope this helps
> david jencks
>
> On Apr 1, 2008, at 8:41 AM, thomas2004 wrote:
>
>>
>> Hi all,
>>
>> I am learning the EJB3. I follow a tutorial under:
>> http://www.webagesolutions.com/knowledgebase/javakb/jkb005/index.html
>>
>> and it runs quite well since I use the SUN Application Server.
>>
>> So I deployed the EJB Jars onto Geronimo 2. Bu tas I try to start
>> the client
>> I got exception as follow:
>>
>> Caused by: java.net.ConnectException: Connection refused: connect
>> at sun.nio.ch.Net.connect(Native Method)
>> at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:464)
>> at
>> com
>> .sun
>> .corba.ee.impl.orbutil.ORBUtility.openSocketChannel(ORBUtility.java:
>> 105)
>> at
>> com
>> .sun
>> .enterprise
>> .iiop.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:
>> 332)
>> ... 16 more
>>
>> Here is my session bean:
>>
>> @Stateless(name = "Example", mappedName = "ejb/SimpleBeanJNDI")
>> public class SimpleBeanImpl implements SimpleBean {
>> public String sayHello(String name) {
>> return "Hello, the text you enter is: " + name + "!";
>> }
>> }
>>
>>
>> And here is the client and lookup:
>>
>> public class TestClient {
>>
>> public void runTest() throws Exception {
>> InitialContext ctx = new InitialContext();
>> SimpleBean bean = (SimpleBean) ctx.lookup("ejb/SimpleBeanJNDI");
>> String result = bean.sayHello("Billy Bob, Wei Chen");
>> System.out.println(result);
>> }
>>
>> public static void main(String[] args) {
>> try {
>> TestClient cli = new TestClient();
>> cli.runTest();
>>
>> } catch (Exception e) {
>> e.printStackTrace();
>> }
>> }
>> }
>>
>> Has someone idea?
>>
>> Regards
>>
>> Thomas
>>
>>
>> --
>> View this message in context: http://www.nabble.com/Exception-by-using-EJB3-on-Geronimo-2-tp16418687s134p16418687.html
>> Sent from the Apache Geronimo - Users mailing list archive at
>> Nabble.com.
>>
>
>
Re: Exception by using EJB3 on Geronimo 2
Posted by David Jencks <da...@yahoo.com>.
Thanks for resending with comprehensible formatting :-)
I think you left out some information about your environment. I
think there is a jndi.properties file in the client's classpath that
is directing the use of a corba name service for jndi lookups, using
the sun ee corba implementation in the client. It's somewhat tricky
to get that to work.
Access to ejbs from anything other than a javaee module in the same
javaee application is not standardized. I recommend taking the corba
and sun stuff out of your client and including the openejb3 client
jar in its classpath. This should set the jndi properties correctly
for the openejb transport.
If you look in the server log as your application starts you should
see the global jndi names your ejbs are bound under and that you can
use with the openejb jndi provider to look up your ejbs.
hope this helps
david jencks
On Apr 1, 2008, at 8:41 AM, thomas2004 wrote:
>
> Hi all,
>
> I am learning the EJB3. I follow a tutorial under:
> http://www.webagesolutions.com/knowledgebase/javakb/jkb005/index.html
>
> and it runs quite well since I use the SUN Application Server.
>
> So I deployed the EJB Jars onto Geronimo 2. Bu tas I try to start
> the client
> I got exception as follow:
>
> Caused by: java.net.ConnectException: Connection refused: connect
> at sun.nio.ch.Net.connect(Native Method)
> at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:464)
> at
> com.sun.corba.ee.impl.orbutil.ORBUtility.openSocketChannel
> (ORBUtility.java:105)
> at
> com.sun.enterprise.iiop.IIOPSSLSocketFactory.createSocket
> (IIOPSSLSocketFactory.java:332)
> ... 16 more
>
> Here is my session bean:
>
> @Stateless(name = "Example", mappedName = "ejb/SimpleBeanJNDI")
> public class SimpleBeanImpl implements SimpleBean {
> public String sayHello(String name) {
> return "Hello, the text you enter is: " + name + "!";
> }
> }
>
>
> And here is the client and lookup:
>
> public class TestClient {
>
> public void runTest() throws Exception {
> InitialContext ctx = new InitialContext();
> SimpleBean bean = (SimpleBean) ctx.lookup("ejb/SimpleBeanJNDI");
> String result = bean.sayHello("Billy Bob, Wei Chen");
> System.out.println(result);
> }
>
> public static void main(String[] args) {
> try {
> TestClient cli = new TestClient();
> cli.runTest();
>
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> }
>
> Has someone idea?
>
> Regards
>
> Thomas
>
>
> --
> View this message in context: http://www.nabble.com/Exception-by-
> using-EJB3-on-Geronimo-2-tp16418687s134p16418687.html
> Sent from the Apache Geronimo - Users mailing list archive at
> Nabble.com.
>