Home Python C Language C ++ HTML 5 CSS Javascript Java Kotlin SQL DJango Bootstrap React.js R C# PHP ASP.Net Numpy Dart Pandas Digital Marketing

Introduction to EJB, Stateless and Stateful Beans, and Message-Driven Beans


Enterprise JavaBeans (EJB) is a server-side software component architecture that simplifies the development of enterprise-level distributed applications. This article provides an introduction to EJB and explains the differences between stateless, stateful, and message-driven beans.

Step 1: What is EJB?

EJB is a part of the Java EE framework and is used to build scalable, transactional, and secure server-side applications. It simplifies development by providing built-in support for services like transactions, security, and concurrency.

EJB is divided into three main types:

Step 2: Setting Up EJB

Before working with EJB, ensure that you have a Java EE server like WildFly or GlassFish. Create a Java EE project in your preferred IDE and configure it to support EJB.

Step 3: Stateless Session Beans

Stateless session beans are used for tasks that do not require maintaining state between method calls. They are lightweight and can handle multiple client requests.

Example:

            import javax.ejb.Stateless;

            @Stateless
            public class CalculatorBean {
                public int add(int a, int b) {
                    return a + b;
                }

                public int subtract(int a, int b) {
                    return a - b;
                }
            }
        

To access this bean, use the EJB client:

            import javax.naming.InitialContext;

            public class ClientApp {
                public static void main(String[] args) throws Exception {
                    InitialContext ctx = new InitialContext();
                    CalculatorBean calculator = (CalculatorBean) ctx.lookup("java:global/YourAppName/CalculatorBean");
                    System.out.println("Addition: " + calculator.add(5, 3));
                }
            }
        

Step 4: Stateful Session Beans

Stateful session beans maintain a conversational state with the client. This is useful for scenarios like shopping carts or user sessions.

Example:

            import javax.ejb.Stateful;

            @Stateful
            public class ShoppingCartBean {
                private List items = new ArrayList<>();

                public void addItem(String item) {
                    items.add(item);
                }

                public List getItems() {
                    return items;
                }
            }
        

Client to interact with the stateful bean:

            import javax.naming.InitialContext;

            public class ShoppingCartClient {
                public static void main(String[] args) throws Exception {
                    InitialContext ctx = new InitialContext();
                    ShoppingCartBean cart = (ShoppingCartBean) ctx.lookup("java:global/YourAppName/ShoppingCartBean");

                    cart.addItem("Laptop");
                    cart.addItem("Mouse");

                    System.out.println("Cart Items: " + cart.getItems());
                }
            }
        

Step 5: Message-Driven Beans (MDBs)

Message-Driven Beans are used to handle asynchronous messages sent via JMS. They are not directly invoked by the client but listen to a specific JMS queue or topic.

Example:

            import javax.ejb.ActivationConfigProperty;
            import javax.ejb.MessageDriven;
            import javax.jms.Message;
            import javax.jms.MessageListener;

            @MessageDriven(activationConfig = {
                @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
                @ActivationConfigProperty(propertyName = "destination", propertyValue = "java:/jms/queue/TestQueue")
            })
            public class MessageBean implements MessageListener {
                public void onMessage(Message message) {
                    try {
                        String msgText = message.getBody(String.class);
                        System.out.println("Received Message: " + msgText);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        

To send a message to the queue:

            import javax.jms.*;
            import javax.naming.InitialContext;

            public class JMSClient {
                public static void main(String[] args) throws Exception {
                    InitialContext ctx = new InitialContext();
                    ConnectionFactory factory = (ConnectionFactory) ctx.lookup("java:/ConnectionFactory");
                    Queue queue = (Queue) ctx.lookup("java:/jms/queue/TestQueue");

                    Connection connection = factory.createConnection();
                    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
                    MessageProducer producer = session.createProducer(queue);

                    TextMessage message = session.createTextMessage("Hello, EJB!");
                    producer.send(message);

                    System.out.println("Message sent.");
                    session.close();
                    connection.close();
                }
            }
        

Conclusion

EJB simplifies enterprise application development by providing built-in support for transactions, security, and scalability. Stateless beans are ideal for lightweight operations, stateful beans manage client-specific state, and message-driven beans handle asynchronous processing. By using these components, developers can create robust, distributed applications.



Advertisement





Q3 Schools : India


Online Complier

HTML 5

Python

java

C++

C

JavaScript

Website Development

HTML

CSS

JavaScript

Python

SQL

Campus Learning

C

C#

java