...
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 |
---|
borderStyle | solid |
---|
title | MyTimeBean.java | borderStyle | solid |
---|
| 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 |
---|
borderStyle | solid |
---|
title | MyTimeLocal.java | borderStyle | solid |
---|
| 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 |
---|
borderStyle | solid |
---|
title | openejb-jar.xml | borderStyle | solid |
---|
| 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 |
---|
borderStyle | solid |
---|
title | index.jsp | borderStyle | solid |
---|
| 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 |
---|
borderStyle | solid |
---|
title | geronimo-web.xml | borderStyle | solid |
---|
| 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 |
---|
borderStyle | solid |
---|
title | web.xml | borderStyle | solid |
---|
| 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>
|
...