Hi SK,

For EJB 2.x you just need to use xml in the deployment descriptor (web.xml or ejb-jar.xml). Here are a couple examples:

 http://openejb.apache.org/3.0/ejb-ref.html
 http://openejb.apache.org/3.0/ejb-local-ref.html

-David

On Oct 5, 2009, at 6:13 AM, SK Leung wrote:


Hi Jean-Louis,
My OpenEJB version is 3.0.
The examples that I got are all with EJB3. Do you have the example for
EJB2.x? If yes, please send it to me or email me the URL link. Much thanks.

SK

Jean-Louis MONTEIRO wrote:

Hi,

Actually, i don't have a big experience with EJB 2.x.
Which OpenEJB version are you using?

Did you have a look to examples?
As far as i know, there are EJB 2.x examples.

Jean-Louis


SK Leung wrote:

I have created two session beans.
One is ejbuser.HelloEJB.java
package ejbuser;

import java.rmi.RemoteException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;

public class HelloEJB implements SessionBean {
        public HelloEJB() {}
        public void ejbCreate() {}
        public void ejbRemove() {}
        public void ejbActivate() {}
        public void ejbPassivate() {}
        public void setSessionContext(SessionContext sc) {}

        public String helloWorld() throws RemoteException {
                String v = System.getProperty("java.vm.name");
                return "Hello client, your javavm Name is " + v + ".";
        }

}

The other one is ejbuser.OrderSBEJB.java
package ejbuser;

import java.rmi.RemoteException;
import javax.rmi.PortableRemoteObject;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.naming.InitialContext;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Collection;

public class OrderSBEJB implements SessionBean {
        public OrderSBEJB() {}
        public void ejbCreate() {}
        public void ejbRemove() {}
        public void ejbActivate() {}
        public void ejbPassivate() {}
        public void setSessionContext(SessionContext sc) {}

        public String showGreeting() throws RemoteException {
                return "This is the greeting message.";
        }

        public String helloWorld() throws RemoteException {
                String sResult = null;
                try {
                        InitialContext icHello = new InitialContext();
                        Object objHello = icHello.lookup("Hello");
HelloHome helloHome = (HelloHome)PortableRemoteObject.narrow(objHello,
HelloHome.class);
                        Hello hello = helloHome.create();
                        sResult = hello.helloWorld();
                } catch(Exception e) {
                        e.printStackTrace();
                } finally {
                }
                return sResult;
        }

}

I can call these two session beans from the servlet as below.
InitialContext icHello = new InitialContext();
Object objHello = icHello.lookup("java:comp/env/ejb/ejbuser/ HelloHome"); HelloHome helloHome = (HelloHome)PortableRemoteObject.narrow(objHello,
HelloHome.class);
Hello hello = helloHome.create();
System.out.println(hello.helloWorld());
InitialContext icOrderSB = new InitialContext();
Object objOrderSB =
icOrderSB.lookup("java:comp/env/ejb/ejbuser/OrderSBHome");
OrderSBHome orderSBHome =
(OrderSBHome)PortableRemoteObject.narrow(objOrderSB, OrderSBHome.class);
OrderSB orderSB = orderSBHome.create();
System.out.println(orderSB.showGreeting());

But when I call
System.out.println(orderSB.helloWorld());
There is the error message.
1) Name "Hello" is not bound in this context.

The ejb-jar.xml file is:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"; version="2.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd";>
        <enterprise-beans>
                <session>
                        <display-name>OrderSB</display-name>
                        <ejb-name>OrderSB</ejb-name>
                        <home>ejbuser.OrderSBHome</home>
                        <remote>ejbuser.OrderSB</remote>
                        <ejb-class>ejbuser.OrderSBEJB</ejb-class>
                        <session-type>Stateless</session-type>
                        <transaction-type>Container</transaction-type>
                </session>
                <session>
                        <display-name>Hello</display-name>
                        <ejb-name>Hello</ejb-name>
                        <home>ejbuser.HelloHome</home>
                        <remote>ejbuser.Hello</remote>
                        <ejb-class>ejbuser.HelloEJB</ejb-class>
                        <session-type>Stateless</session-type>
                </session>
        </enterprise-beans>
</ejb-jar>

There is something wrong when calling session bean HelloEJB from method
helloWorld() in OrderSBEJB. What is the correct way in looking up
HelloEJB from inside OrderSBEJB? Please advise, thanks.
SK




--
View this message in context: 
http://www.nabble.com/How-to-call-session-bean-from-another-session-bean-tp25715830p25750609.html
Sent from the OpenEJB User mailing list archive at Nabble.com.



Reply via email to