Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

MyTimeBean.java is an EJB that can tell time. I have put my EJB in a package that I call org.apache.geronimo.samples.mytimepak. By using the @Stateless annotation Geronimo will recognize that this is a stateless session bean. There is no need for a ejb-jar.xml.

Code Block
java
borderStylesolid
titleMyTimeBean.javaborderStylesolid
java
package org.apache.geronimo.samples.mytimepak;

import javax.ejb.Stateless;

@Stateless
public class MyTimeBean implements MyTimeLocal {

	public String getTime() {
		String s = new java.util.Date().toString();
		return s;
	}
}

MyTimeLocal.java is the Local interface. As this EJB will only be used from a JSP-page that is running in the same server (same JVM) I use a Local interface that do not make use of the network.

Code Block
java
borderStylesolid
titleMyTimeLocal.javaborderStylesolid
java
package org.apache.geronimo.samples.mytimepak;
public interface MyTimeLocal {
   public java.lang.String getTime() ;
}

openejb-jar.xml does nothing but specifies the module's information.

Code Block
xml
borderStylesolid
titleopenejb-jar.xmlborderStylesolid
xml
<?xml version="1.0" encoding="UTF-8"?>
<openejb-jar
		xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1"
		xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.1"
		xmlns:pkgen="http://www.openejb.org/xml/ns/pkgen-2.0"
		xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.1"
		xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2">
  <sys:environment>
    <sys:moduleId>
      <sys:groupId>${pom.groupId}</sys:groupId>
      <sys:artifactId>${pom.artifactId}</sys:artifactId>
      <sys:version>${version}</sys:version>
      <sys:type>jar</sys:type>
    </sys:moduleId>
  </sys:environment>
</openejb-jar>

index.jsp utilizes the MyTimeBean to tell time.

Code Block
java
borderStylesolid
titleindex.jspborderStylesolid
java
<%@ page contentType="text/html" import="org.apache.geronimo.samples.mytimepak.*, javax.naming.* " %>
<html<head><title>Time</title></head><body>
<%
	String s="-"; // Just declare a string
	try {
		// This creates a context, it can be used to lookup EJBs. Using normal RMI you would
		// have to know port number and stuff. The InitialContext holds info like
		// server names, ports and stuff I guess.
		Context context = new InitialContext();
		// MyTimeLocalHome is a reference to the EJB
		MyTimeLocal myTimeLocal = (MyTimeLocal)context.lookup("java:comp/env/ejb/MyTimeBean");
	        // So, just go ahead and call a method (in this case the only method).
		s =  myTimeLocal.getTime();
	}
	catch (Exception e) {
		s=e.toString();
	}
%>
This is the time returned from the EJB: <%=s%>
</body></html>

geronimo-web.xml specifies the module's information and the url for the web-app.

Code Block
xml
borderStylesolid
titlegeronimo-web.xmlborderStylesolid
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>${pom.groupId}</sys:groupId>
      <sys:artifactId>${pom.artifactId}</sys:artifactId>
      <sys:version>${version}</sys:version>
      <sys:type>war</sys:type>
    </sys:moduleId>
  </sys:environment>
  <context-root>/mytime</context-root>
</web-app>

web.xml references the EJB present in the WEB-INF/classes/org/apache/geronimo/samples/mytimepak directory.

Code Block
xml
borderStylesolid
titleweb.xmlborderStylesolid
xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    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/web-app_2_4.xsd">
	<display-name>MyTimeWeb</display-name>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<!-- To refer local EJB's  -->
	<ejb-local-ref>
		<ejb-ref-name>ejb/MyTimeBean</ejb-ref-name>
		<ejb-ref-type>Session</ejb-ref-type>
		<local>org.apache.geronimo.samples.mytimepak.MyTimeLocal</local>
	</ejb-local-ref>
</web-app>

...