Note | ||
---|---|---|
| ||
Restrictions |
Install Tomcat 6
If you already have Tomcat 6 installed, skip to Install OpenEJB.
Unpack Tomcat
Unpack the Tomcat zip file which will create a new directory containing the complete Tomcat installation.
...
$ jar -xvf apache-tomcat-6.0.14.zip
created: apache-tomcat-6.0.14/
created: apache-tomcat-6.0.14/bin/
created: apache-tomcat-6.0.14/conf/
...snip...
Change to the new Tomcat installation directory.
...
$ cd apache-tomcat-6.0.14/
The Tomcat installation should contain the following files:
...
apache-tomcat-6.0.14$ ls
LICENSE RELEASE-NOTES bin/ lib/ temp/ work/
NOTICE RUNNING.txt conf/ logs/ webapps/
| |
Instructions on OpenEJB Tomcat Installation can be found at Tomcat |
Make shell scripts executable
The shell scripts in the Tomcat installation are not executable by default, so in order to execute them, you must set mark them as executable. If you unpacked the Tomcat tar.gz file, the scripts are already executable. The following command will make all shell scripts executable:
Code Block |
---|
apache-tomcat-6.0.14$ chmod u+x bin/*.sh |
Start Tomcat
Execute the following command to start the Tomcat server to verify it is functioning properly:
...
apache-tomcat-6.0.14$ bin/startup.sh
Using CATALINA_BASE: /your/tomcat/installation/apache-tomcat-6.0.14
Using CATALINA_HOME: /your/tomcat/installation/apache-tomcat-6.0.14
Using CATALINA_TMPDIR: /your/tomcat/installation/apache-tomcat-6.0.14/temp
Using JRE_HOME: /your/java/installation
NOTE: Your output will be different from the example above due to differences in installation location.
Verify Tomcat is Running
Visit http://localhost:8080/ and you should see the Tomcat welcome page.
Stop Tomcat
Shutdown Tomcat by executing the following command:
...
apache-tomcat-6.0.14$ bin/shutdown.sh
Using CATALINA_BASE: /your/tomcat/installation/apache-tomcat-6.0.14
Using CATALINA_HOME: /your/tomcat/installation/apache-tomcat-6.0.14
Using CATALINA_TMPDIR: /your/tomcat/installation/apache-tomcat-6.0.14/temp
Using JRE_HOME: /your/java/installation
NOTE: Your output will be different from the example above due to differences in installation location.
...
Once Tomcat has been installed, the OpenEJB plugin for Tomcat can be installed. The commands in this example are executed within the Tomcat installation directory.
Unpack OpenEJB Tomcat plugin in Tomcat webapps directory
1. Change to the webapps directory:
...
apache-tomcat-6.0.14$ cd webapps
2. Unpack the openejb-tomcat-3.0.0-SNAPSHOT-bin.zip file.
...
apache-tomcat-6.0.14/webapps$ jar -xvf ../openejb-tomcat-3.0.0-SNAPSHOT-bin.zip
created: openejb/
created: openejb/WEB-INF/
created: openejb/lib/
inflated: openejb/lib/geronimo-javamail_1.4_spec-1.1.jar
inflated: openejb/lib/xbean-finder-3.1.jar
...snip...
3. The OpenEJB directory should contain the following files:
...
apache-tomcat-6.0.14/webapps$ ls openejb
WEB-INF/ lib/ openejb.xml
4. Start tomcat again
5. Visit http://localhost:8080/openejb/installer and click on the install button
6. Assuming you don't get any errors, reboot tomcat
At this point OpenEJB will be installed
Info | ||
---|---|---|
| ||
|
Test an example application
Create a stateless session bean
Create an interface
...
package org.acme;
import javax.ejb.*;
@Remote
public interface Greeting{
public String greet();
}
Create the bean class
...
package org.acme;
import javax.ejb.*;
@Stateless
public class GreetingBean implements Greeting{
public String greet(){
return "I just greeted you buddy";
}
}
Create a servlet
...
package org.acme;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.naming.*;
import java.io.*;
import java.util.*;
public class TestServlet extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response){
try{
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
Properties p = new Properties();
p.put("java.naming.factory.initial","org.apache.openejb.client.LocalInitialContextFactory");
InitialContext ctx = new InitialContext(p);
Greeting g = (Greeting)ctx.lookup("GreetingBeanBusinessRemote");
writer.print(g.greet());
}catch(Exception e){
e.printStackTrace();
}
}
}
Register the servlet in web.xml
...
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Test Application</display-name>
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>org.acme.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
</web-app>
Package the war
Compile the above classes into the WEB-INF/classes directory and package everything into testweb.war (or a file name of your liking)
Drop the war in the tomcat webapps directory
Drop the testweb.war in the tomcat webapps directory
Send a request to the servlet
#Open the browser
#Send a request to http://localhost:8080/testweb/test
#You should now see the message "I just greeted you buddy"
Wiki Markup |
---|
\[OPTIONAL\] Run OpenEJB iTests |
Install iTests
Simply copy the OpenEJB iTests war to the Tomcat webapp directory.
...
apache-tomcat-6.0.14$ cp openejb-tomcat-3.0.0-SNAPSHOT-itests.war webapps/
Start Tomcat
...
apache-tomcat-6.0.14$ bin/startup.sh
Using CATALINA_BASE: /your/tomcat/installation/apache-tomcat-6.0.14
Using CATALINA_HOME: /your/tomcat/installation/apache-tomcat-6.0.14
Using CATALINA_TMPDIR: /your/tomcat/installation/apache-tomcat-6.0.14/temp
Using JRE_HOME: /your/java/installation
NOTE: Your output will be different from the example above due to differences in installation location.
Execute the test client
Code Block | none | none |
---|---|---|
$ java -Dtomcat.home=. -Dremote.servlet.url=http://127.0.0.1:8080/openejb/remote -jar openejb-tomcat-3.0.0-SNAPSHOT-test.jar tomcat
_________________________________________________
|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|
Running EJB compliance tests on HTTP/Tomcat Server
_________________________________________________
WARNING: No test suite configuration file specified, assuming system properties contain all needed
information. To specify a test suite configuration file by setting its location using the system
property "openejb.testsuite.properties"
test server = org.apache.openejb.test.TomcatRemoteTestServer
entry = java.naming.provider.url:http://127.0.0.1:8080/openejb/remote
entry = java.naming.factory.initial:org.apache.openejb.client.RemoteInitialContextFactory
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
.........................................
........................
Time: 10.853
OK (885 tests)
_________________________________________________
CLIENT JNDI PROPERTIES
java.naming.provider.url = http://127.0.0.1:8080/openejb/remote
java.naming.factory.initial = org.apache.openejb.client.RemoteInitialContextFactory
_________________________________________________
| ||
Tip | ||
| ||
The tests should completely pass the first time they are run. If you execute the test client a second time, 21 tests fail for some unknown reason. |