| <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> <a href="http://wiki.codehaus.org/openejb"><span class="menuTopOff">[ w i k i ]</span></a> <a href="http://archive.openejb.codehaus.org/user/"><span class="menuTopOff">[ l i s t s ]</span></a> <a href="http://cvs.openejb.org/"><span class="menuTopOff">[ c v s ]</span></a> <a href="http://jira.codehaus.org/secure/BrowseProject.jspa?id=10401"><span class="menuTopOff">[ b u g s ]</span></a> <br><img border="0" height="2" width="1" src="images/dotTrans.gif"></td><td align="left" valign="top" height="20" width="120"> </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"> |
| Welcome!</span></a></td></tr><tr><td align="left" valign="top"><a href="download.html"><span class="subMenuOff"> |
| Download</span></a></td></tr><tr><td align="left" valign="top"><a href="lists.html"><span class="subMenuOff"> |
| Mailing Lists</span></a></td></tr><tr><td align="left" valign="top"><a href="cvs.html"><span class="subMenuOff"> |
| Source Code</span></a></td></tr><tr><td align="left" valign="top"><a href="contributors.html"><span class="subMenuOff"> |
| The Team</span></a></td></tr><tr><td align="left" valign="top"><a href="status.html"><span class="subMenuOff"> |
| 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"> |
| Quickstart</span></a></td></tr><tr><td align="left" valign="top"><a href="hello-world.html"><span class="subMenuOff"> |
| Hello World!</span></a></td></tr><tr><td align="left" valign="top"><a href="cmp_entity_postgresql.html"><span class="subMenuOff"> |
| CMP Example</span></a></td></tr><tr><td align="left" valign="top"><a href="cmp_guide.html"><span class="subMenuOff"> |
| CMP Guide</span></a></td></tr><tr><td align="left" valign="top"><a href="deploy.html"><span class="subMenuOff"> |
| Deploy</span></a></td></tr><tr><td align="left" valign="top"><a href="start-command.html"><span class="subMenuOff"> |
| Startup</span></a></td></tr><tr><td align="left" valign="top"><a href="validate.html"><span class="subMenuOff"> |
| Validation</span></a></td></tr><tr><td align="left" valign="top"><a href="config_containers.html"><span class="subMenuOff"> |
| Configuration</span></a></td></tr><tr><td align="left" valign="top"><a href="properties.html"><span class="subMenuOff"> |
| 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"> |
| Local Server</span></a></td></tr><tr><td align="left" valign="top"><a href="remote-server.html"><span class="subMenuOff"> |
| Remote Server</span></a></td></tr><tr><td align="left" valign="top"><a href="tomcat.html"><span class="subMenuOff"> |
| Tomcat</span></a></td></tr><tr><td align="left" valign="top"><a href="geronimo.html"><span class="subMenuOff"> |
| 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"> |
| Why OpenEJB</span></a></td></tr><tr><td align="left" valign="top"><a href="containersystem.html"><span class="subMenuOff"> |
| Overview</span></a></td></tr><tr><td align="left" valign="top"><a href="design_openejb.html"><span class="subMenuOff"> |
| Design</span></a></td></tr><tr><td align="left" valign="top"><a href="OpenEJB_presentaion.ppt"><span class="subMenuOff"> |
| 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"> </td><td align="left" valign="top" width="40"> </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("<html>"); |
| out.println("<body>"); |
| out.println("<head>"); |
| out.println("<title>Hello World!</title>"); |
| out.println("</head>"); |
| out.println("<body>"); |
| out.println("<h1>"+ ejbObject.sayHello() +"</h1>"); |
| out.println("</body>"); |
| out.println("</html>"); |
| } 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> |
| |
| |
| |
| </td></tr><tr height="5"><td align="left" valign="top" bgcolor="#7270c2" height="5" width="20"> </td><td valign="top" bgcolor="#7270c2" height="5" width="95"> </td><td align="left" valign="top" bgcolor="#a9a5de" height="5" width="7"> </td><td align="left" valign="top" height="5" width="40"> </td><td align="left" valign="top" height="5" width="120"> </td></tr><tr><td align="left" valign="top" bgcolor="#7270c2" height="5" width="20"> </td><td align="left" valign="top" bgcolor="#7270c2" width="95"> </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"> </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"> </td><td align="left" valign="top" height="100%" width="40"> </td><td align="left" valign="top" height="100%" width="120"> </td></tr><tr height="5"><td align="left" valign="top" height="25" width="40"> </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> <br></small></span><p></p> |
| |
| </td><td align="left" valign="top" height="25" width="120"> </td></tr></table></body></html> |