You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

To run this tutorial, as a minimum you will be required to have installed the following prerequisite software:

  • Sun JDK 5.0+ (J2SE 1.5)
  • Eclipse IDE for Java EE Developers, which is platform specific

Details on installing eclipse are provided in the Development environment section. This tutorial is organized in the following sections:

The application development will take you through the following:

Define New Geronimo Server Runtime

  1. Launch Eclipse and Select New-> Other-> Server -> Server and select Next.




  2. Select Apache -> Apache Geronimo v2.1 Server and select Next.




  3. Specify the installation directory of an existing Geronimo server installation and select Finish.




  4. Start the server from the J2EE perspective.



Creating a EJB Project

  1. Launch Eclipse and Right Click Under the Project Explorer. Select New->EJB Project.





  2. Name the project as CurrencyConvertEJB and Select Next.





  3. Use the default values and Select Finish.











  4. Right Click on ejbModule and Select New->Interface.



  5. Name the package as ejb and Interface as Converter. Select Finish.





  6. Right Click on ejb package and Select New->Class.





  7. Name the class as ConverterBean and select Finish.


Creating a Dynamic Web Project

  1. Launch Eclipse. Select File->New->Project.




  2. Select Web->Dynamic Web Project. Select Next.




  3. On the next screen give the name of the project as WebEJB.




  4. Select default values for all other fields. Finally select Finish.




  5. Right click on WebContent and Select New->JSP.




  6. Name the jsp as index.jsp. Select Next->Finish.







  7. Right Click on JavaResources and Select New->Other.



  8. Select Web->Servlet. Select Next.




  9. Name the package as webejb and Servlet as ConverterHandler. Select Next->Finish.





Adding code to EJB Project

  1. Add the following code to the interface Converter.java.
    Converter.java
    package ejb;
    
    import java.math.BigDecimal;
    import javax.ejb.Remote;
    
    @Remote
    public interface Converter {
    	public BigDecimal dollarToRupees(BigDecimal dollars);
    
    	public BigDecimal rupeesToEuro(BigDecimal rupees);
    }
    
    Here the @Remote annotation is used to declare it as a Remote Interface.
  2. Add the following code to the class ConverterBean.java
    ConverterBean.java
    package ejb;
    
    import java.math.BigDecimal;
    import javax.ejb.*;
    
    @Stateless
    public class ConverterBean implements Converter {
    	private BigDecimal rupeeRate = new BigDecimal("40.58");
    	private BigDecimal euroRate = new BigDecimal("0.018368");
    
    	public BigDecimal dollarToRupees(BigDecimal dollars) {
    		BigDecimal result = dollars.multiply(rupeeRate);
    		return result.setScale(2, BigDecimal.ROUND_UP);
    	}
    
    	public BigDecimal rupeesToEuro(BigDecimal rupees) {
    		BigDecimal result = rupees.multiply(euroRate);
    		return result.setScale(2, BigDecimal.ROUND_UP);
    	}
    }
    
    Here the @Stateless annotation declares the POJO(Plain Old Java Object) as a Stateless session bean.
    This complete the EJB code.

Adding code to Web Project

  1. Add the following code to index.jsp.
    index.jsp
    <html>
    <head>
    <title>Converter</title>
    </head>
    
    <body bgcolor="white">
    <h1>Converter</h1>
    <hr>
    <p>Enter an amount to convert:</p>
    <form method="get" action="index.jsp">
    	<input type="text" name="amount" size="25"><br>
    	<p>
    	<input type="submit" value="Submit">
    
    	<input type="reset" value="Reset">
    </form>
    
    <jsp:include page="/ConverterHandler" />
    
    </body>
    
  1. Add the following code to ConverterHandler servlet.
    ConverterHandler.java
    package webejb;
    import ejb.Converter;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.math.BigDecimal;
    
    import javax.ejb.EJB;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class ConverterHandler extends javax.servlet.http.HttpServlet implements
    		javax.servlet.Servlet {
    	@EJB(name = "ejb/Converter")
    	private Converter converter;
    
    	protected void doGet(HttpServletRequest request,
    			HttpServletResponse response) throws ServletException, IOException {
    		PrintWriter out = response.getWriter();
    		String amount = request.getParameter("amount");
    		if (amount != null && amount.length() > 0) {
    			BigDecimal d = new BigDecimal(amount);
    			BigDecimal rupeeAmount = converter.dollarToRupees(d);
    			out.println("<p>" + amount + " Dollars are " + rupeeAmount + " Rupees.<p>");
    			BigDecimal euroAmount = converter.rupeesToEuro(rupeeAmount);
    			out.println(amount + " Dollars are " + euroAmount + " Euro.");
    		}
    	}
    
    	protected void doPost(HttpServletRequest request,
    			HttpServletResponse response) throws ServletException, IOException {
    		doGet(request, response);
    	}
    }
    

    The @EJB(name = "ejb/Converter") injects the EJB into the servlet.
    This completes the code for Web project.

Some more configurations

  1. Modify the deployment plan that is geronimo-web.xml as follows
    geronimo-web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1" 
    xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.1" 
    xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.1" 
    xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.1">
      <sys:environment>
        <sys:moduleId>
          <sys:groupId>default</sys:groupId>
          <sys:artifactId>WebEJB</sys:artifactId>
          <sys:version>1.0</sys:version>
          <sys:type>car</sys:type>
        </sys:moduleId>
        <sys:dependencies>
           <sys:dependency>
                <sys:groupId>default</sys:groupId>
          		<sys:artifactId>CurrencyConvertEJB</sys:artifactId>
          		<sys:version>1.0</sys:version>
          		<sys:type>car</sys:type>
           </sys:dependency>        
    </sys:dependencies>
    </sys:environment>
      <context-root>/WebEJB</context-root>
      <nam:ejb-ref xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2">
            <nam:ref-name>ejb/Converter</nam:ref-name>
            <nam:pattern>
                <nam:groupId>default</nam:groupId>
                <nam:artifactId>CurrencyConvertEJB</nam:artifactId>
                <nam:version>1.0</nam:version>
                <nam:name>ConverterBean</nam:name>
            </nam:pattern>
        </nam:ejb-ref>
    </web-app>
    
    we have added a dependencies element and a ejb reference element(ejb-ref) to geronimo-web.xml. This step is required to make our CurrencyConvertEJB visible to our web application.
  2. Right Click on WebEJB project and select properties. Select Java Build Path->Projects. Click add and add CurrencyConvertEJB. This is required for the compilation of Client code. This is explained with the following screenshots.

















  3. You need to correct the namespace for openejb-jar.xml.

    Warning

    Due to some limitations in Geronimo Eclipse Plugin the generated deployment plan(openejb-jar.xml) does not have the correct namespace. Replace the existing namespace as shown in the figure with the following
    <openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.2" xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2" xmlns:pkgen="http://www.openejb.org/xml/ns/pkgen-2.0" xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.2" xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2">




Deploy and Run

Warning

Due to limitation with Geronimo Eclipse Plugin, you will have to export the CurrencyConvertEJB EJB project as a jar.

  1. Export the CurrencyConvertEJB project as a jar.
  2. Start the server in Eclipse and Launch the Administrative console using http://localhost:8080/console.
  3. Enter default username and password.
  4. In the welcome page, under Applications. Select Deploy New.





  5. Browse and Select CurrencyConvertEJB.jar. Once done Select Install. This will deploy the EJB application on to server.
  6. In Eclipse right click on WebEJB project and Select Run As-> Run on Server. This will deploy the web application on to the server.





  7. Launch a browser and run the application using http://localhost:8080/WebEJB/. This will give the following page.





  8. Give the amount as 15 and Select Submit.





  9. This will convert the Dollar amount to Rupees and Euro.





  • No labels