| <html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>The OpenEJB Container System -- |
| Everything in OpenEJB is pluggable, even OpenEJB itself</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">The OpenEJB Container System</span><br><span class="pageSubTitle">Everything in OpenEJB is pluggable, even OpenEJB itself</span><br><img src="images/dotTrans.gif" hspace="0" height="1" border="0"></td></tr></table><p></p><br><a name="OpenEJB is whatever you want it to be"><h2>OpenEJB is whatever you want it to be</h2></a> |
| |
| <p><span class="bodyBlack"> |
| OpenEJB is a complete EJB Server platform, clients can access beans through |
| the <a href="embedded.html">Local Server</a> or the |
| <a href="remote-server.html">Remote Server</a>. Both of these are focused on |
| ordinary users who just want to create EJBs and need a an EJB Server to run them. |
| This is great, but what if you want more control? |
| </span></p> |
| <p><span class="bodyBlack"> |
| What if you want to customize part of the EJB Server? What if want to create a new |
| enterprise bean type? What if you want to tear out things you don't need? What if |
| you want to re-implement something or make very specific optimizations? |
| </span></p> |
| <p><span class="bodyBlack"> |
| What if you want the EJB Server to directly and tightly use systems |
| in your existing infrastructure, such as a security system or transaction system? |
| </span></p> |
| <p><span class="bodyBlack"> |
| What if you are not looking to create EJBs at all, but rather, you want to create your own |
| EJB Server or add EJB compliance to your existing application server? |
| </span></p> |
| <p><span class="bodyBlack"> |
| If you need any of these things, then OpenEJB is for you. |
| </span></p> |
| <a name="OpenEJB is like a kernel"><h2>OpenEJB is like a kernel</h2></a> |
| |
| <p><span class="bodyBlack"> |
| Just as Linux is actually the kernel for the operating system, OpenEJB is a kernel |
| for an EJB platform. We refer to this EJB specific "kernel" as the container system. |
| It is a framework by which EJB Containers can interoperate but not be dependent on each other. |
| Where an EJB Server can provide remote access to beans in those EJB Containers without |
| being dependent on any of the EJB Containers in the system. |
| </span></p> |
| <p><span class="bodyBlack"> |
| Just like the Linux operating system, OpenEJB is divided into several independent pieces. |
| Every piece can be ripped out and replaced independently of the others. Pieces can be added |
| and combined in a number of different ways to create customized EJB platforms for specific |
| needs. This idea is similar the concept of a Linux distribution. Each distribution is a |
| full working operating system, each has a unique combination of pieces, but all share the |
| same heart, the kernel. |
| </span></p> |
| <a name="Anyone can participate"><h2>Anyone can participate</h2></a> |
| |
| <p><span class="bodyBlack"> |
| The power of OpenEJB, as with Linux, is that many people can play in the same game. Anyone |
| can add a piece. All pieces can play together. |
| </span></p> |
| |
| <p><span class="bodyBlack"> |
| For example, the open source project <a href="http://openorb.sf.net">OpenORB</a>, formerly |
| of <a href="http://www.exolab.org">Exolab</a>, integrated OpenEJB into OpenORB to provide |
| OpenORB users with EJB functionality. Similarly, Apple Computer integrated OpenEJB into its |
| <a href="http://www.apple.com/webobjects/">WebObjects</a> application server to provide |
| WebObjects users with EJB functionality. |
| </span></p> |
| |
| |
| <a name="Vendors can play along"><h2>Vendors can play along</h2></a> |
| <p><span class="bodyBlack"> |
| Vendors are already participating in this game. As mentioned above, Apple Computer |
| put OpenEJB into WebObjects and has been shipping it world over since WebObjects version 5.1. |
| This is great. Imagine the possibilities when more vendors participate.</span></p> |
| <p><span class="bodyBlack"> |
| Let's say Oracle decided to take the part of their application server that provides |
| EntityBeans with lightning-fast Container-Managed Persistence to the Oracle Database and |
| make it an OpenEJB-compatible EJB Container. They could sell that EJB Container separately |
| or packaged with the Oracle Database to anyone using an OpenEJB-based platform. WebObjects |
| users could purchase and plug-in the Oracle CMP Container, as could OpenORB users, and as |
| could users of any other software that uses OpenEJB as its container system. |
| </span></p> |
| |
| <p><span class="bodyBlack"> |
| In the extreme case, IBM or BEA could convert their EJB Containers to OpenEJB-compatible |
| EJB Containers and sell them separately, in combinations, or at different price levels. |
| One container for stateless SessionBeans, one for stateful SessionBeans, one for |
| bean-managed persistence EntityBeans, one for container-managed EntityBeans, and one |
| for JMS MessageDrivenBeans. Along with selling one big platform for $20 grand, they |
| could sell a base platform for $5, for example, and each of the containers |
| for $5 grand. They could sell those containers to their existing customers or users of any |
| other OpenEJB-based EJB platform. |
| </span></p> |
| |
| <a name="Open Source can play along"><h2>Open Source can play along</h2></a> |
| <p><span class="bodyBlack"> |
| Now if someday the developers of the PostgreSQL database server, or the MySQL database |
| server decided to create an EJB Container that supported EntityBeans with container-managed |
| persistence, the same rules apply. Anyone using an OpenEJB-based EJB platform could |
| download, plug-in and use one or both of those those containers for their CMP EntityBeans. |
| Those containers could be written to work as close to the database as possible, cutting out |
| all middle-men like JDBC and providing container-managed persitence in the most performant way |
| possible, taking full advantage of all the features of the database. |
| </span></p> |
| |
| <a name="You can play along"><h2>You can play along</h2></a> |
| |
| <p><span class="bodyBlack"> |
| Let's not forget, OpenEJB is open source and distributed with a business-friendly, |
| non-restrictive, BSD-style license. Anyone can help themselves to as much of |
| our code as they can stomach. You can even sell what you make from it! |
| </span></p> |
| |
| <p><span class="bodyBlack"> |
| Change the code as much as you want. If there is functionality you need, grab |
| the existing piece and edit till your heart is content. We do this very same thing |
| when there is functionality we need, you can too. In fact, all the containers in OpenEJB |
| were created using our stateless SessionBean container as a template. |
| </span></p> |
| |
| <p><span class="bodyBlack"> |
| If you want to be the one to write that PostgreSQL CMP EntityBean Container, just grab |
| our existing Castor CMP EntityBean Container and hack it up. We'll even let you use our CVS |
| if you want to make it available to other OpenEJB users as well. |
| </span></p> |
| <p><span class="bodyBlack"> |
| Perhaps you want to create a CMP EntityBean container that persists beans directly to your |
| mainframe. Grab the code you need to get started, put a few developers on the task, then |
| plug it into an OpenEJB system and put it to work. |
| </span></p> |
| |
| <p><span class="bodyBlack"> |
| Be creative and think outside the box, invent a new EnterpriseBean type! |
| A NativeBean type, for example. Just create an OpenEJB EJB Container that executes |
| your native code according to your specification, and start writing beans in C++. |
| </span></p> |
| |
| <p><span class="bodyBlack"> |
| Want to distribute beans via a special distributed object protocol? Grab the Remote Server |
| code and change it to use another protocol, SOAP for example. Maybe you want to make |
| it an extention to the Remote Server or maybe you want to write it as a brand new |
| org.openejb.spi.ApplicationServer implementation. It's your time and your desicion. |
| </span></p> |
| |
| |
| <p><span class="bodyBlack"> |
| |
| </span></p> |
| |
| </td><td align="left" valign="top" height="5" width="120"><img src="images/diagram-container-system.gif" width="240" height="300" 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> |