blob: fcb2dd806216bac8b146f81896bdd5143ad8319d [file] [log] [blame]
<html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>David's notes on setting up Tomcat with OpenEJB</title><link href="default.css" rel="stylesheet"><link href="/images/favicon.ico" rel="SHORTCUT ICON"></head><body marginwidth="0" marginheight="0" leftmargin="0" bottommargin="0" topmargin="0" vlink="#6763a9" link="#6763a9" bgcolor="#ffffff"><a name="top"></a><table height="400" width="712" cellspacing="0" cellpadding="0" border="0"><tr><td bgcolor="#7270c2" align="left" valign="top" width="20"><img border="0" height="1" width="1" src="images/dotTrans.gif"></td><td bgcolor="#7270c2" align="left" valign="top" width="95"><img border="0" height="1" width="1" src="images/dotTrans.gif"></td><td align="left" valign="top" width="7"><img height="1" width="1" border="0" src="images/dotTrans.gif"></td><td align="left" valign="top" width="40"><img border="0" height="6" width="40" src="images/dotTrans.gif"></td><td bgcolor="#5A5CB8" align="left" valign="top" width="430"><img border="0" height="6" width="430" src="images/top_2.gif"></td><td bgcolor="#E24717" align="left" valign="top" width="120"><img src="images/top_3.gif" width="120" height="6" border="0"></td></tr><tr><td align="left" valign="top" bgcolor="#7270c2" width="20"><img height="1" width="1" border="0" src="images/dotTrans.gif"></td><td align="left" valign="top" bgcolor="#7270c2" width="95"><img height="1" width="1" border="0" src="images/dotTrans.gif"></td><td align="left" valign="top" bgcolor="#ffffff" width="7"></td><td align="left" valign="top" width="40"><img border="0" height="1" width="1" src="images/dotTrans.gif"></td><td align="left" valign="middle" width="430"><a href="faq.html"><span class="menuTopOff">[ f a q ]</span></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://wiki.codehaus.org/openejb"><span class="menuTopOff">[ w i k i ]</span></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://archive.openejb.codehaus.org/user/"><span class="menuTopOff">[ l i s t s ]</span></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://cvs.openejb.org/"><span class="menuTopOff">[ c v s ]</span></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://jira.codehaus.org/secure/BrowseProject.jspa?id=10401"><span class="menuTopOff">[ b u g s ]</span></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img border="0" height="2" width="1" src="images/dotTrans.gif"></td><td align="left" valign="top" height="20" width="120">&nbsp;</td></tr><tr><td align="left" valign="top" bgcolor="#7270c2" width="20"><img border="0" height="3" width="20" src="images/dotTrans.gif"></td><td align="left" valign="top" bgcolor="#7270c2" width="95"><img border="0" height="3" width="105" src="images/line_sm.gif"></td><td align="left" valign="top" bgcolor="#a9a5de" width="7"><img border="0" height="3" width="7" src="images/line_sm.gif"></td><td align="left" valign="top" width="40"><img border="0" height="3" width="40" src="images/line_light.gif"></td><td align="left" valign="top" width="430"><img border="0" height="3" width="430" src="images/line_light.gif"></td><td align="left" valign="top" width="120"><img height="1" width="1" border="0" src="images/dotTrans.gif"></td></tr><tr><td align="left" valign="top" bgcolor="#7270c2"><img border="0" height="10" width="20" src="images/dotTrans.gif"></td><td align="left" valign="top" bgcolor="#7270c2" width="95"><img border="0" height="2" width="1" src="images/dotTrans.gif"><br><table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top"><span class="subMenuOn">Main</span></td></tr><tr><td align="left" valign="top"><a href="index.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Welcome!</span></a></td></tr><tr><td align="left" valign="top"><a href="download.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Download</span></a></td></tr><tr><td align="left" valign="top"><a href="lists.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Mailing Lists</span></a></td></tr><tr><td align="left" valign="top"><a href="cvs.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Source Code</span></a></td></tr><tr><td align="left" valign="top"><a href="contributors.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
The Team</span></a></td></tr><tr><td align="left" valign="top"><a href="status.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Status</span></a></td></tr></table><table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top"><span class="subMenuOn">Users</span></td></tr><tr><td align="left" valign="top"><a href="quickstart.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Quickstart</span></a></td></tr><tr><td align="left" valign="top"><a href="hello-world.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Hello World!</span></a></td></tr><tr><td align="left" valign="top"><a href="cmp_entity_postgresql.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
CMP Example</span></a></td></tr><tr><td align="left" valign="top"><a href="cmp_guide.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
CMP Guide</span></a></td></tr><tr><td align="left" valign="top"><a href="deploy.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Deploy</span></a></td></tr><tr><td align="left" valign="top"><a href="start-command.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Startup</span></a></td></tr><tr><td align="left" valign="top"><a href="validate.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Validation</span></a></td></tr><tr><td align="left" valign="top"><a href="config_containers.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Configuration</span></a></td></tr><tr><td align="left" valign="top"><a href="properties.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Properties</span></a></td></tr></table><table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top"><span class="subMenuOn">Servers</span></td></tr><tr><td align="left" valign="top"><a href="embedded.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Local Server</span></a></td></tr><tr><td align="left" valign="top"><a href="remote-server.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Remote Server</span></a></td></tr><tr><td align="left" valign="top"><a href="tomcat.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Tomcat</span></a></td></tr><tr><td align="left" valign="top"><a href="geronimo.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Geronimo</span></a></td></tr></table><table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top"><span class="subMenuOn">Integrators</span></td></tr><tr><td align="left" valign="top"><a href="whyopenejb.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Why OpenEJB</span></a></td></tr><tr><td align="left" valign="top"><a href="containersystem.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Overview</span></a></td></tr><tr><td align="left" valign="top"><a href="design_openejb.html"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Design</span></a></td></tr><tr><td align="left" valign="top"><a href="OpenEJB_presentaion.ppt"><span class="subMenuOff">&nbsp;&nbsp;&nbsp;
Presentation</span></a></td></tr></table><img border="0" height="15" width="1" src="images/dotTrans.gif"><br><img border="0" height="3" width="105" src="images/line_sm.gif"><br><A href="http://codehaus.org"><IMG alt="The Codehaus" border="0" height="17" width="88" src="http://www.openejb.org/codehaus-smaller.png"></A></td><td align="left" valign="top" bgcolor="#a9a5de" width="7">&nbsp;</td><td align="left" valign="top" width="40">&nbsp;</td><td valign="top" width="430" rowspan="4"><table width="430" cellspacing="0" cellpadding="0" border="0" rows="2" cols="1"><tr><td align="left" valign="top"><br><img width="200" vspace="0" src="./images/logo_ejb2.gif" hspace="0" height="55" border="0"><br><img src="images/dotTrans.gif" hspace="0" height="7" border="0"><br><span class="pageTitle">David's notes on setting up Tomcat with OpenEJB</span><br><img src="images/dotTrans.gif" hspace="0" height="1" border="0"></td></tr></table><p></p><p></p><br><span class="toc"><a href="#intro">Notes</a><br></span><span class="toc"><a href="#intro">Before we start</a><br></span><span class="toc"><a href="#intro">Installing Everything</a><br></span><span class="toc"><img border="0" height="1" width="15" src="images/dotTrans.gif"><a href="#download.tomcat">Install Tomcat</a><br></span><span class="toc"><img border="0" height="1" width="15" src="images/dotTrans.gif"><a href="#download.openejb">Install OpenEJB</a><br></span><span class="toc"><img border="0" height="1" width="15" src="images/dotTrans.gif"><a href="#download.openejb">Hook them together</a><br></span><span class="toc"><a href="#example">Example Servlet</a><br></span><br><a name="intro"><h2>Notes</h2></a>
<p><span class="bodyBlack">
These are my notes from writing the Tomcat/OpenEJB integration. These are
the minimum steps for integrating OpenEJB into Tomcat. The commands in this
document are specifically for a bash shell in either Linux, Unix, Mac OS X
or Windows with Cygwin.
</span></p>
<p><span class="bodyBlack">
The steps will be the same for the Windows Command Prompt, but the
syntax of the commands themselves will obviously be different. Aside from
that, there isn't a whole lot of information on what is going on behind
the sences. So, I encourage *anyone* to feel completely welcome (perhaps
obligated) to rewrite this document.
</span></p>
<p><span class="bodyBlack">
<i>Anyone...anyone...Bueller...Bueller....</i>
</span></p>
<p><span class="bodyBlack">
Regardless, this should help people get started. So here goes.
</span></p>
<a name="intro"><h2>Before we start</h2></a>
<p><span class="bodyBlack">
We always tell users to send us info on their OS and what version of
OpenEJB, Java, or any other programs they are using when they submit
support requests. So, I guess it's only fair I do the same.
</span></p>
<p><span class="bodyBlack">
Here is some
information about my setup </span></p>
<p><span class="bodyBlack">
<table width="440" cellspacing="0" cellpadding="0" border="0"><tr><td bgcolor="#e0e0e0"><span class="code-block"><pre>
dblevins@Miles /home/j2ee
$ pwd
/home/j2ee
dblevins@Miles /home/j2ee
$ uname -a
CYGWIN_NT-5.0 Miles 1.3.12(0.54/3/2) 2002-07-06 02:16 i686 unknown
dblevins@Miles /home/j2ee
$ java -version
java version "1.3.1"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1-b24)
Java HotSpot(TM) Client VM (build 1.3.1-b24, mixed mode)
</pre></span></td></tr></table>
</span></p>
<a name="intro"><h2>Installing Everything</h2></a>
<a name="download.tomcat"><h3>Install Tomcat</h3></a>
<p><span class="bodyBlack">
If you don't already have Tomcat on your machine, download the
Tomcat version of your choice from Apache we recommend the latest
version as it has the most up-to-date libraries) In our example,
we'll be using version 4.1.12.
</span></p>
<p><span class="bodyBlack">
<a href="http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/" target="_blank">
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/</a>
</span></p>
<p><span class="bodyBlack">
Unpack Tomcat
</span></p>
<p><span class="bodyBlack">
<table width="440" cellspacing="0" cellpadding="0" border="0"><tr><td bgcolor="#e0e0e0"><span class="code-block"><pre>
dblevins@Miles /home/j2ee
$ tar xzvf jakarta-tomcat-4.1.12.tar.gz
</pre></span></td></tr></table>
</span></p>
<a name="download.openejb"><h3>Install OpenEJB</h3></a>
<p><span class="bodyBlack">
You need OpenEJB 0.9.0 or higher, any older versions of OpenEJB will not
work. You can get that here: <a href="http://www.openejb.org/download.html" target="_blank">
http://www.openejb.org/download.html</a>
</span></p>
<p><span class="bodyBlack">
Unpack OpenEJB
</span></p>
<p><span class="bodyBlack">
<table width="440" cellspacing="0" cellpadding="0" border="0"><tr><td bgcolor="#e0e0e0"><span class="code-block"><pre>
dblevins@Miles /home/j2ee
$ tar xzvf openejb-0.9.0.tar.gz
</pre></span></td></tr></table>
</span></p>
<a name="download.openejb"><h3>Hook them together</h3></a>
<p><span class="bodyBlack">
Go to the Tomcat Dir
</span></p>
<p><span class="bodyBlack">
<table width="440" cellspacing="0" cellpadding="0" border="0"><tr><td bgcolor="#e0e0e0"><span class="code-block"><pre>
dblevins@Miles /home/j2ee
$ cd jakarta-tomcat-4.1.12
</pre></span></td></tr></table>
</span></p>
<p><span class="bodyBlack">
Pass the OPENEJB_HOME dir into Tomcat
using the CATALINA_OPTS environment variable
</span></p>
<p><span class="bodyBlack">
<table width="440" cellspacing="0" cellpadding="0" border="0"><tr><td bgcolor="#e0e0e0"><span class="code-block"><pre>
dblevins@Miles /home/j2ee/jakarta-tomcat-4.1.12
$ export CATALINA_OPTS='-Dopenejb.home=/home/j2ee/openejb-0.9.0'
</pre></span></td></tr></table>
</span></p>
<p><span class="bodyBlack">
Add the OpenEJB Loader to Tomcat
</span></p>
<p><span class="bodyBlack">
<table width="440" cellspacing="0" cellpadding="0" border="0"><tr><td bgcolor="#e0e0e0"><span class="code-block"><pre>
dblevins@Miles /home/j2ee/jakarta-tomcat-4.1.12
$ cp ../openejb-0.9.0/dist/openejb_loader-0.9.0.war webapps/
</pre></span></td></tr></table>
</span></p>
<p><span class="bodyBlack">
At this point, you're actually finished.
All the libraries you need are in place.
Your servlets should use the following
InitialContextFactory when creating
an InitialContext to lookup beans
</span></p>
<p><span class="bodyBlack">
<table width="440" cellspacing="0" cellpadding="0" border="0"><tr><td bgcolor="#e0e0e0"><span class="code-block"><pre>org.openejb.client.LocalInitialContextFactory</pre></span></td></tr></table>
</span></p>
<p><span class="bodyBlack">
The openejb.home is taken care of for us
with the CATALINA_OPTS variable, so no other
JNDI options are needed to get an
InitialContext from OpenEJB
</span></p>
<a name="example"><h2>Example Servlet</h2></a>
<p><span class="bodyBlack">
You can use the OpenEJB Hello World as an
example EJB to test things out. You won't
need to do anything differently. Deploy
the myHelloEjb.jar just as described.
</span></p>
<p><span class="bodyBlack">
<a href="http://www.openejb.org/hello-world.html" target="_blank">http://www.openejb.org/hello-world.html</a>
</span></p>
<p><span class="bodyBlack">
Once deployed, the myHelloEjb.jar should be in the beans directory.
</span></p>
<p><span class="bodyBlack">
<table width="440" cellspacing="0" cellpadding="0" border="0"><tr><td bgcolor="#e0e0e0"><span class="code-block"><pre>
openejb-0.9.0/beans/myHelloEjb.jar
</pre></span></td></tr></table>
</span></p>
<p><span class="bodyBlack">
You can use the HelloOpenEJB servlet
below as an example of a
servlet that looks up beans from OpenEJB.
</span></p>
<p><span class="bodyBlack">
It uses the HelloBean created in the
OpenEJB Hello World document, so you'll
need to run through that first.
You can put the servlet in the following
webapps directory
</span></p>
<p><span class="bodyBlack">
<table width="440" cellspacing="0" cellpadding="0" border="0"><tr><td bgcolor="#e0e0e0"><span class="code-block"><pre>
jakarta-tomcat-4.1.12/webapps/examples/WEB-INF/classes
</pre></span></td></tr></table>
</span></p>
<p><span class="bodyBlack">
<table width="440" cellspacing="0" cellpadding="0" border="0"><tr><td bgcolor="#c0c0c0"><i><span class="code-title">HelloOpenEJB.java</span></i></td></tr><tr><td bgcolor="#e0e0e0"><span class="code-block"><pre>
import javax.servlet.http.*;
import javax.naming.*;
import javax.rmi.PortableRemoteObject;
import org.acme.*;
public class HelloOpenEJB extends HttpServlet {
String factory = "org.openejb.client.LocalInitialContextFactory";
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
PrintWriter out = response.getWriter();
try{
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, factory );
InitialContext ctx = new InitialContext( p );
//Lookup the bean using it's deployment id
Object obj = ctx.lookup("/Hello");
HelloHome ejbHome = (HelloHome)
PortableRemoteObject.narrow(obj, HelloHome.class);
//Use the HelloHome to create a HelloObject
HelloObject ejbObject = ejbHome.create();
// Set content type. If not done, only IE will be able
// to interpret that it's HTML. Otherwise, you'll
// get nothing but tags and content, not HTML.
response.setContentType("text/html");
//The part we've all been wainting for...
out.println("&lt;html&gt;");
out.println("&lt;body&gt;");
out.println("&lt;head&gt;");
out.println("&lt;title&gt;Hello World!&lt;/title&gt;");
out.println("&lt;/head&gt;");
out.println("&lt;body&gt;");
out.println("&lt;h1&gt;"+ ejbObject.sayHello() +"&lt;/h1&gt;");
out.println("&lt;/body&gt;");
out.println("&lt;/html&gt;");
} catch (Exception e){
response.setContentType("text/plain");
e.printStackTrace(out);
}
}
}
</pre></span></td></tr></table>
</span></p>
<p><span class="bodyBlack">
Now you can start Tomcat...
</span></p>
<p><span class="bodyBlack">
<table width="440" cellspacing="0" cellpadding="0" border="0"><tr><td bgcolor="#e0e0e0"><span class="code-block"><pre>
dblevins@Miles /home/j2ee/jakarta-tomcat-4.1.12
$ ./bin/startup.sh
Using CATALINA_BASE: C:\home\j2ee\jakarta-tomcat-4.1.12
Using CATALINA_HOME: C:\home\j2ee\jakarta-tomcat-4.1.12
Using CATALINA_TMPDIR: /home/j2ee/jakarta-tomcat-4.1.12/temp
Using JAVA_HOME: C:\program_files\jdk1.3.1
</pre></span></td></tr></table>
</span></p>
<p><span class="bodyBlack">
Now, pop open your browser and go to the
following URL.
</span></p>
<p><span class="bodyBlack">
<table width="440" cellspacing="0" cellpadding="0" border="0"><tr><td bgcolor="#e0e0e0"><span class="code-block"><pre>
<a href="http://localhost:8080/examples/servlet/HelloOpenEJB" target="_blank">http://localhost:8080/examples/servlet/HelloOpenEJB</a>
</pre></span></td></tr></table>
</span></p>
<p><span class="bodyBlack">
Should say "Hello World!!!" on the screen
</span></p>
</td><td align="left" valign="top" height="5" width="120"><img src="images/diagram-tomcat-adapter.gif" width="240" height="500" border="0"><br>
&nbsp;
</td></tr><tr height="5"><td align="left" valign="top" bgcolor="#7270c2" height="5" width="20">&nbsp;</td><td valign="top" bgcolor="#7270c2" height="5" width="95">&nbsp;</td><td align="left" valign="top" bgcolor="#a9a5de" height="5" width="7">&nbsp;</td><td align="left" valign="top" height="5" width="40">&nbsp;</td><td align="left" valign="top" height="5" width="120">&nbsp;</td></tr><tr><td align="left" valign="top" bgcolor="#7270c2" height="5" width="20">&nbsp;</td><td align="left" valign="top" bgcolor="#7270c2" width="95">&nbsp;</td><td align="left" valign="top" bgcolor="#a9a5de" width="7"><img border="0" height="25" width="1" src="images/dotTrans.gif"></td><td align="left" valign="top" width="40"><img border="0" height="25" width="1" src="images/dotTrans.gif"></td><td align="left" valign="top" width="120">&nbsp;</td></tr><tr height="5"><td align="left" valign="bottom" bgcolor="#7270c2" height="100%" rowspan="2" width="20"><img border="0" height="125" width="20" src="images/stripes1.gif"></td><td align="left" valign="bottom" bgcolor="#7270c2" height="100%" rowspan="2" width="95"><img border="0" height="125" width="105" src="images/stripe105.gif"></td><td align="left" valign="top" bgcolor="#a9a5de" height="100%" rowspan="2" width="7">&nbsp;</td><td align="left" valign="top" height="100%" width="40">&nbsp;</td><td align="left" valign="top" height="100%" width="120">&nbsp;</td></tr><tr height="5"><td align="left" valign="top" height="25" width="40">&nbsp;</td><td align="left" valign="bottom" height="25" width="430"><br><br><img height="3" width="430" border="0" src="images/line_light.gif"><br><p></p><span class="bodyGrey"><small><notice>
OpenEJB is a trademark of the OpenEJB Group.
Java, EJB, JDBC, JNDI, JTA, Sun, Sun Microsystems are trademarks or registered
trademarks of Sun Microsystems, Inc. in the United States and in other
countries. XML, XML Schema, XSLT and related standards are trademarks or registered
trademarks of MIT, INRIA, Keio or others, and a product of the World Wide Web
Consortium. All other product names mentioned herein are trademarks of their respective
owners.
</notice><br>&nbsp;<br></small></span><p></p>
&nbsp;
</td><td align="left" valign="top" height="25" width="120">&nbsp;</td></tr></table></body></html>