You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by bu...@apache.org on 2011/07/10 06:35:00 UTC

svn commit: r792464 [12/23] - /websites/staging/openejb/trunk/content/

Added: websites/staging/openejb/trunk/content/latest-unstable.html
==============================================================================
--- websites/staging/openejb/trunk/content/latest-unstable.html (added)
+++ websites/staging/openejb/trunk/content/latest-unstable.html Sun Jul 10 04:34:53 2011
@@ -0,0 +1,127 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+    <title>Latest Unstable</title>
+    <link rel="stylesheet" type="text/css" media="screen" href="http://incubator.apache.org/lucy/css/lucy.css">
+  </head>
+
+  <body>
+
+    <div id="lucy-rigid_wrapper">
+
+      <div id="lucy-top" class="container_16 lucy-white_box_3d">
+
+        <div id="lucy-logo_box" class="grid_8">
+          <a href="/OpenEJB/"><img src="http://openejb.apache.org/images/logo_openejb.gif" alt="Apache OpenEJB™"></a>
+        </div> <!-- lucy-logo_box -->
+
+        <div #id="lucy-top_nav_box" class="grid_8">
+          <div id="lucy-top_nav_bar" class="container_8">
+            <ul>
+              <li><a href="http://www.apache.org/" title="Apache Software Foundation">Apache Software Foundation</a></li>
+              <li><a href="http://www.apache.org/licenses/" title="License">License</a></li>
+              <li><a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsorship">Sponsorship</a></li>
+              <li><a href="http://www.apache.org/foundation/thanks.html" title="Thanks">Thanks</a></li>
+              <li><a href="http://www.apache.org/security/ " title="Security">Security</a></li>
+            </ul>
+          </div> <!-- lucy-top_nav_bar -->
+          <p><a href="http://www.apache.org/">Apache</a>&nbsp;&raquo&nbsp;<a href="/">Incubator</a></p>
+          <form name="lucy-top_search_box" id="lucy-top_search_box" action="http://www.google.com/search" method="get">
+            <input value="*.apache.org" name="sitesearch" type="hidden"/>
+            <input type="text" name="q" id="query" style="width:85%">
+            <input type="submit" id="submit" value="Search">
+          </form>
+        </div> <!-- lucy-top_nav_box -->
+
+        <div class="clear"></div>
+
+      </div> <!-- lucy-top -->
+
+      <div id="lucy-main_content" class="container_16 lucy-white_box_3d">
+
+        <div class="grid_4" id="lucy-left_nav_box">
+          <h6>About</h6>
+            <ul>
+              <li><a href="/lucy/">Welcome</a></li>
+              <li><a href="/lucy/faq.html">FAQ</a></li>
+              <li><a href="/lucy/people.html">People</a></li>
+            </ul>
+          <h6>Resources</h6>
+            <ul>
+              <li><a href="/lucy/download.html">Download</a></li>
+              <li><a href="/lucy/mailing_lists.html">Mailing Lists</a></li>
+              <li><a href="/lucy/docs/perl/">Documentation</a></li>
+              <li><a href="http://wiki.apache.org/lucy/">Wiki</a></li>
+              <li><a href="https://issues.apache.org/jira/browse/LUCY">Issue Tracker</a></li>
+              <li><a href="/lucy/version_control.html">Version Control</a></li>
+            </ul>
+          <h6>Related Projects</h6>
+            <ul>
+              <li><a href="http://lucene.apache.org/java/">Lucene</a></li>
+              <li><a href="http://lucene.apache.org/solr/">Solr</a></li>
+              <li><a href="http://incubator.apache.org/lucene.net/">Lucene.NET</a></li>
+              <li><a href="http://lucene.apache.org/pylucene/">PyLucene</a></li>
+              <li><a href="http://lucene.apache.org/openrelevance/">Open Relevance</a></li>
+            </ul>
+        </div> <!-- lucy-left_nav_box -->
+
+        <div id="lucy-main_content_box" class="grid_9">
+          <p><a name="LatestUnstable-Goodtoknow"></a></p>
+
+<h1>Good to know</h1>
+
+<p><em>First-time Users</em> of OpenEJB should try out a stable release unless
+otherwise noted.</p>
+
+<p><em>People currently in development</em> with OpenEJB are encouraged to try out
+unstable builds from time to time and get us feedback.  This really helps
+us increase the stability of our official releases and reduce surprises to
+you when upgrading.</p>
+
+<p><em>Builds will be deleted</em> and are only available till the next official
+release comes out, then it will disappear.  This includes unstable jars
+published to our maven repo and ibiblio.org's maven repo.</p>
+
+<p><a href="http://docs.codehaus.org/pages/addpagenotification.action?pageId=32806">Watch This Page</a>
+ for an easy way to be notified when new unstable builds are published.</p>
+
+<p><a name="LatestUnstable-Download"></a></p>
+
+<h1>Download</h1>
+
+<p>{excerpt}
+<a href="latest-unstable.html">OpenEJB 1.1 20060421 </a>
+ - April 21st, 2006</p>
+
+<ul>
+<li><a href="http://openejb.org/unstable/v1.1-20060421/openejb-1.1-20060421.zip">openejb-1.1-20060421.zip</a></li>
+<li><a href="http://openejb.org/unstable/v1.1-20060421/openejb-1.1-20060421.tar.gz">openejb-1.1-20060421.tar.gz</a></li>
+<li><a href="http://openejb.org/unstable/v1.1-20060421/openejb-1.1-20060421-src.zip">openejb-1.1-20060421-src.zip</a></li>
+<li><a href="http://openejb.org/unstable/v1.1-20060421/openejb-1.1-20060421-src.tar.gz">openejb-1.1-20060421-src.tar.gz</a>
+{excerpt}</li>
+</ul>
+
+<p><a name="LatestUnstable-Changelog"></a></p>
+
+<h1>Changelog</h1>
+
+<p>{jiraissues:url=https://issues.apache.org/jira/sr/jira.issueviews:searchrequest-xml/temp/SearchRequest.xml?&amp;pid=12310530&amp;updated%3Abefore=22%2FApr%2F06&amp;updated%3Aafter=15%2FMar%2F06&amp;status=5&amp;status=6&amp;resolution=1&amp;sorter/field=issuekey&amp;sorter/order=DESC&amp;sorter/field=priority&amp;sorter/order=DESC&amp;tempMax=25&amp;reset=true&amp;decorator=none|columns=type;key;summary}</p>
+
+        </div> <!-- lucy-main_content_box --> 
+        <div class="clear"></div>
+
+      </div> <!-- lucy-main_content -->
+
+      <div id="lucy-copyright" class="container_16">
+        <p>Copyright &#169; 2010-2011 The Apache Software Foundation, Licensed under the 
+           <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+           <br/>
+          
+        </p>
+      </div> <!-- lucy-copyright -->
+
+    </div> <!-- lucy-rigid_wrapper -->
+
+  </body>
+</html>

Added: websites/staging/openejb/trunk/content/lightening-demos.cwiki
==============================================================================
--- websites/staging/openejb/trunk/content/lightening-demos.cwiki (added)
+++ websites/staging/openejb/trunk/content/lightening-demos.cwiki Sun Jul 10 04:34:53 2011
@@ -0,0 +1,17 @@
+h3.Lightening Demos Details
+
+|| Demo Name                                      || Description || Sponsor      || Links/Comments                    ||
+| TestCase Injection                              |              | David Blevins | [Youtube | http://www.youtube.com/watch?v=g5l14G9RBCM], [Vimeo | http://vimeo.com/16876983] |
+| Simple @WebService                              |              | David Blevins | [Youtube | http://www.youtube.com/watch?v=ZcSnhVlOxJc], [Vimeo | http://vimeo.com/16876894] |
+| Simple @Stateless bean                          |              | David Blevins | [Youtube | http://www.youtube.com/watch?v=aLx2jta96xU], [Vimeo | http://vimeo.com/16876787] |
+| Simple @Stateful bean                           |              | David Blevins | [Youtube | http://www.youtube.com/watch?v=9JqxbfzsWOQ], [Vimeo | http://vimeo.com/16876733] |
+| Simple @MessageDriven bean                      |              | David Blevins | [Youtube | http://www.youtube.com/watch?v=HmXFxMDLCJQ], [Vimeo | http://vimeo.com/16876667] |
+| EntityManager injection and usage               |              | David Blevins | [Youtube | http://www.youtube.com/watch?v=s4uiIoAehgQ], [Vimeo | http://vimeo.com/16876564] |
+| DataSource injection and usage                  |              | David Blevins | [Youtube | http://www.youtube.com/watch?v=g3lIPlegDJk], [Vimeo | http://vimeo.com/16876492] |
+| Alternate Descriptors                           |              | David Blevins | [Youtube | http://www.youtube.com/watch?v=r1lDC40ESug], [Vimeo | http://vimeo.com/16876426] |
+| Getting started with the OpenEJB Eclipse Plugin |              | David Blevins | [Vimeo | http://vimeo.com/7393498]  |
+| EJB Unit Testing with Eclipse and OpenEJB       |              | David Blevins | [Vimeo | http://vimeo.com/6149008]  |
+| ScreenFlow720                                   |              | David Blevins | [Vimeo | http://vimeo.com/16872034] |
+
+
+*NOTE: For more details about the idea behind Lightening Demos, please read [this | http://markmail.org/message/5jq5xun44kt7tcni] e-mail thread.*
\ No newline at end of file

Added: websites/staging/openejb/trunk/content/lightening-demos.html
==============================================================================
--- websites/staging/openejb/trunk/content/lightening-demos.html (added)
+++ websites/staging/openejb/trunk/content/lightening-demos.html Sun Jul 10 04:34:53 2011
@@ -0,0 +1,139 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+    <title>Lightening Demos</title>
+    <link rel="stylesheet" type="text/css" media="screen" href="http://incubator.apache.org/lucy/css/lucy.css">
+  </head>
+
+  <body>
+
+    <div id="lucy-rigid_wrapper">
+
+      <div id="lucy-top" class="container_16 lucy-white_box_3d">
+
+        <div id="lucy-logo_box" class="grid_8">
+          <a href="/OpenEJB/"><img src="http://openejb.apache.org/images/logo_openejb.gif" alt="Apache OpenEJB™"></a>
+        </div> <!-- lucy-logo_box -->
+
+        <div #id="lucy-top_nav_box" class="grid_8">
+          <div id="lucy-top_nav_bar" class="container_8">
+            <ul>
+              <li><a href="http://www.apache.org/" title="Apache Software Foundation">Apache Software Foundation</a></li>
+              <li><a href="http://www.apache.org/licenses/" title="License">License</a></li>
+              <li><a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsorship">Sponsorship</a></li>
+              <li><a href="http://www.apache.org/foundation/thanks.html" title="Thanks">Thanks</a></li>
+              <li><a href="http://www.apache.org/security/ " title="Security">Security</a></li>
+            </ul>
+          </div> <!-- lucy-top_nav_bar -->
+          <p><a href="http://www.apache.org/">Apache</a>&nbsp;&raquo&nbsp;<a href="/">Incubator</a></p>
+          <form name="lucy-top_search_box" id="lucy-top_search_box" action="http://www.google.com/search" method="get">
+            <input value="*.apache.org" name="sitesearch" type="hidden"/>
+            <input type="text" name="q" id="query" style="width:85%">
+            <input type="submit" id="submit" value="Search">
+          </form>
+        </div> <!-- lucy-top_nav_box -->
+
+        <div class="clear"></div>
+
+      </div> <!-- lucy-top -->
+
+      <div id="lucy-main_content" class="container_16 lucy-white_box_3d">
+
+        <div class="grid_4" id="lucy-left_nav_box">
+          <h6>About</h6>
+            <ul>
+              <li><a href="/lucy/">Welcome</a></li>
+              <li><a href="/lucy/faq.html">FAQ</a></li>
+              <li><a href="/lucy/people.html">People</a></li>
+            </ul>
+          <h6>Resources</h6>
+            <ul>
+              <li><a href="/lucy/download.html">Download</a></li>
+              <li><a href="/lucy/mailing_lists.html">Mailing Lists</a></li>
+              <li><a href="/lucy/docs/perl/">Documentation</a></li>
+              <li><a href="http://wiki.apache.org/lucy/">Wiki</a></li>
+              <li><a href="https://issues.apache.org/jira/browse/LUCY">Issue Tracker</a></li>
+              <li><a href="/lucy/version_control.html">Version Control</a></li>
+            </ul>
+          <h6>Related Projects</h6>
+            <ul>
+              <li><a href="http://lucene.apache.org/java/">Lucene</a></li>
+              <li><a href="http://lucene.apache.org/solr/">Solr</a></li>
+              <li><a href="http://incubator.apache.org/lucene.net/">Lucene.NET</a></li>
+              <li><a href="http://lucene.apache.org/pylucene/">PyLucene</a></li>
+              <li><a href="http://lucene.apache.org/openrelevance/">Open Relevance</a></li>
+            </ul>
+        </div> <!-- lucy-left_nav_box -->
+
+        <div id="lucy-main_content_box" class="grid_9">
+          <p><a name="LighteningDemos-LighteningDemosDetails"></a></p>
+
+<h3>Lightening Demos Details</h3>
+
+<table>
+<tr><th> Demo Name                    </th><th> Description </th><th> Sponsor
+     </th><th> Links/Comments             </th></tr>
+<tr><td> TestCase Injection               </td><td>      </td><td> David
+Blevins </td><td> [Youtube ](-http://www.youtube.com/watch?v=g5l14g9rbcm.html)
+, [Vimeo </td><td> http://vimeo.com/16876983]
+ </td></tr>
+<tr><td> Simple @WebService               </td><td>      </td><td> David
+Blevins </td><td> [Youtube ](-http://www.youtube.com/watch?v=zcsnhvloxjc.html)
+, [Vimeo </td><td> http://vimeo.com/16876894]
+ </td></tr>
+<tr><td> Simple @Stateless bean           </td><td>      </td><td> David
+Blevins </td><td> [Youtube ](-http://www.youtube.com/watch?v=alx2jta96xu.html)
+, [Vimeo </td><td> http://vimeo.com/16876787]
+ </td></tr>
+<tr><td> Simple @Stateful bean            </td><td>      </td><td> David
+Blevins </td><td> [Youtube ](-http://www.youtube.com/watch?v=9jqxbfzswoq.html)
+, [Vimeo </td><td> http://vimeo.com/16876733]
+ </td></tr>
+<tr><td> Simple @MessageDriven bean           </td><td>      </td><td> David
+Blevins </td><td> [Youtube ](-http://www.youtube.com/watch?v=hmxfxmdlcjq.html)
+, [Vimeo </td><td> http://vimeo.com/16876667]
+ </td></tr>
+<tr><td> EntityManager injection and usage        </td><td>      </td><td> David
+Blevins </td><td> [Youtube ](-http://www.youtube.com/watch?v=s4uiioaehgq.html)
+, [Vimeo </td><td> http://vimeo.com/16876564]
+ </td></tr>
+<tr><td> DataSource injection and usage       </td><td>      </td><td> David
+Blevins </td><td> [Youtube ](-http://www.youtube.com/watch?v=g3liplegdjk.html)
+, [Vimeo </td><td> http://vimeo.com/16876492]
+ </td></tr>
+<tr><td> Alternate Descriptors            </td><td>      </td><td> David
+Blevins </td><td> [Youtube ](-http://www.youtube.com/watch?v=r1ldc40esug.html)
+, [Vimeo </td><td> http://vimeo.com/16876426]
+ </td></tr>
+<tr><td> Getting started with the OpenEJB Eclipse Plugin </td><td>       </td><td> David
+Blevins </td><td> [Vimeo ](-http://vimeo.com/7393498.html)
+  </td></tr>
+<tr><td> EJB Unit Testing with Eclipse and OpenEJB    </td><td>      </td><td> David
+Blevins </td><td> [Vimeo ](-http://vimeo.com/6149008.html)
+  </td></tr>
+<tr><td> ScreenFlow720                </td><td>      </td><td> David
+Blevins </td><td> [Vimeo ](-http://vimeo.com/16872034.html)
+ </td></tr>
+</table>
+
+<p><em>NOTE: For more details about the idea behind Lightening Demos, please read <a href="-http://markmail.org/message/5jq5xun44kt7tcni.html">this </a>
+ e-mail thread.</em></p>
+
+        </div> <!-- lucy-main_content_box --> 
+        <div class="clear"></div>
+
+      </div> <!-- lucy-main_content -->
+
+      <div id="lucy-copyright" class="container_16">
+        <p>Copyright &#169; 2010-2011 The Apache Software Foundation, Licensed under the 
+           <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+           <br/>
+          
+        </p>
+      </div> <!-- lucy-copyright -->
+
+    </div> <!-- lucy-rigid_wrapper -->
+
+  </body>
+</html>

Added: websites/staging/openejb/trunk/content/loading-deployments-from-the-classpath.cwiki
==============================================================================
--- websites/staging/openejb/trunk/content/loading-deployments-from-the-classpath.cwiki (added)
+++ websites/staging/openejb/trunk/content/loading-deployments-from-the-classpath.cwiki Sun Jul 10 04:34:53 2011
@@ -0,0 +1 @@
+{include:OPENEJBx30:Application discovery via the classpath}
\ No newline at end of file

Added: websites/staging/openejb/trunk/content/loading-deployments-from-the-classpath.html
==============================================================================
--- websites/staging/openejb/trunk/content/loading-deployments-from-the-classpath.html (added)
+++ websites/staging/openejb/trunk/content/loading-deployments-from-the-classpath.html Sun Jul 10 04:34:53 2011
@@ -0,0 +1,88 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+    <title>Loading Deployments from the Classpath</title>
+    <link rel="stylesheet" type="text/css" media="screen" href="http://incubator.apache.org/lucy/css/lucy.css">
+  </head>
+
+  <body>
+
+    <div id="lucy-rigid_wrapper">
+
+      <div id="lucy-top" class="container_16 lucy-white_box_3d">
+
+        <div id="lucy-logo_box" class="grid_8">
+          <a href="/OpenEJB/"><img src="http://openejb.apache.org/images/logo_openejb.gif" alt="Apache OpenEJB™"></a>
+        </div> <!-- lucy-logo_box -->
+
+        <div #id="lucy-top_nav_box" class="grid_8">
+          <div id="lucy-top_nav_bar" class="container_8">
+            <ul>
+              <li><a href="http://www.apache.org/" title="Apache Software Foundation">Apache Software Foundation</a></li>
+              <li><a href="http://www.apache.org/licenses/" title="License">License</a></li>
+              <li><a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsorship">Sponsorship</a></li>
+              <li><a href="http://www.apache.org/foundation/thanks.html" title="Thanks">Thanks</a></li>
+              <li><a href="http://www.apache.org/security/ " title="Security">Security</a></li>
+            </ul>
+          </div> <!-- lucy-top_nav_bar -->
+          <p><a href="http://www.apache.org/">Apache</a>&nbsp;&raquo&nbsp;<a href="/">Incubator</a></p>
+          <form name="lucy-top_search_box" id="lucy-top_search_box" action="http://www.google.com/search" method="get">
+            <input value="*.apache.org" name="sitesearch" type="hidden"/>
+            <input type="text" name="q" id="query" style="width:85%">
+            <input type="submit" id="submit" value="Search">
+          </form>
+        </div> <!-- lucy-top_nav_box -->
+
+        <div class="clear"></div>
+
+      </div> <!-- lucy-top -->
+
+      <div id="lucy-main_content" class="container_16 lucy-white_box_3d">
+
+        <div class="grid_4" id="lucy-left_nav_box">
+          <h6>About</h6>
+            <ul>
+              <li><a href="/lucy/">Welcome</a></li>
+              <li><a href="/lucy/faq.html">FAQ</a></li>
+              <li><a href="/lucy/people.html">People</a></li>
+            </ul>
+          <h6>Resources</h6>
+            <ul>
+              <li><a href="/lucy/download.html">Download</a></li>
+              <li><a href="/lucy/mailing_lists.html">Mailing Lists</a></li>
+              <li><a href="/lucy/docs/perl/">Documentation</a></li>
+              <li><a href="http://wiki.apache.org/lucy/">Wiki</a></li>
+              <li><a href="https://issues.apache.org/jira/browse/LUCY">Issue Tracker</a></li>
+              <li><a href="/lucy/version_control.html">Version Control</a></li>
+            </ul>
+          <h6>Related Projects</h6>
+            <ul>
+              <li><a href="http://lucene.apache.org/java/">Lucene</a></li>
+              <li><a href="http://lucene.apache.org/solr/">Solr</a></li>
+              <li><a href="http://incubator.apache.org/lucene.net/">Lucene.NET</a></li>
+              <li><a href="http://lucene.apache.org/pylucene/">PyLucene</a></li>
+              <li><a href="http://lucene.apache.org/openrelevance/">Open Relevance</a></li>
+            </ul>
+        </div> <!-- lucy-left_nav_box -->
+
+        <div id="lucy-main_content_box" class="grid_9">
+          <p>{include:OPENEJBx30:Application discovery via the classpath}</p>
+
+        </div> <!-- lucy-main_content_box --> 
+        <div class="clear"></div>
+
+      </div> <!-- lucy-main_content -->
+
+      <div id="lucy-copyright" class="container_16">
+        <p>Copyright &#169; 2010-2011 The Apache Software Foundation, Licensed under the 
+           <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+           <br/>
+          
+        </p>
+      </div> <!-- lucy-copyright -->
+
+    </div> <!-- lucy-rigid_wrapper -->
+
+  </body>
+</html>

Added: websites/staging/openejb/trunk/content/local-server.cwiki
==============================================================================
--- websites/staging/openejb/trunk/content/local-server.cwiki (added)
+++ websites/staging/openejb/trunk/content/local-server.cwiki Sun Jul 10 04:34:53 2011
@@ -0,0 +1,27 @@
+!http://www.openejb.org/images/diagram-local-server.gif|valign=top, align=right, hspace=15!
+h1. Accessing EJBs Locally
+
+When OpenEJB embedded in your app, server, IDE, or JUnit, you can use what we call the Local Server and avoid the network overhead and enjoy an easy way to embedd OpenEJB.  Instead of putting the app in the server, put the server in the app!
+
+h1. Say what?! A local server?
+
+Yes, you read correctly. OpenEJB can be embedded and treated as your very own personal EJB container.
+
+If they can have Local and Remote EJB's, why not Local and Remote EJB Servers too?
+
+Haven't you ever wanted EJBs without the heavy? I mean you need the "heavy" eventually, but not while you're developing. Well, there's the advantage of an EJB implementation that was designed with a very clean and well defined server-container contract, you can cut the server part out completely!
+
+So, if you wish to access ejbs locally and not in client/server mode, you can do so by embedding OpenEJB as a library and accessing ejbs through OpenEJB's built-in IntraVM (Local) Server. Why would someone want to do this?
+* Your application is a server or other middleware
+* You want to write an app that can be both stand alone *and* distributed
+* To test your EJBs with JUnit and don't want to start/stop servers and other nonsense
+* Imagine the power from being able to use your IDE debugger to step from your Client all the way into your EJB and back with no remote debugging voodoo.
+
+In this case, your application, test suite, IDE, or client accesses beans as you would from any other EJB Server. The EJB Server just happens to be running in the same virtual machine as your application. This EJB Server is thusly called the IntraVM Server, and, for all intense purposes, your application an IntraVM Client.
+
+There are some interesting differences though. The IntraVM Server isn't a heavyweight server as one normally associates with EJB. It doesn't open connections, launch threads for processing requests, introduce complex classloading heirarchies, or any of those "heavy" kind of things. All it does is dish out proxies to your app that can be used to shoot calls right into the EJB Container. Very light, very fast, very easy for testing, debugging, developing, etc.
+
+h1. Embedding
+
+!http://www.openejb.org/images/diagram-local-server.gif|valign=top, align=right, hspace=15!
+{include:OPENEJBx30:Embedding}

Added: websites/staging/openejb/trunk/content/local-server.html
==============================================================================
--- websites/staging/openejb/trunk/content/local-server.html (added)
+++ websites/staging/openejb/trunk/content/local-server.html Sun Jul 10 04:34:53 2011
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+    <title>Local Server</title>
+    <link rel="stylesheet" type="text/css" media="screen" href="http://incubator.apache.org/lucy/css/lucy.css">
+  </head>
+
+  <body>
+
+    <div id="lucy-rigid_wrapper">
+
+      <div id="lucy-top" class="container_16 lucy-white_box_3d">
+
+        <div id="lucy-logo_box" class="grid_8">
+          <a href="/OpenEJB/"><img src="http://openejb.apache.org/images/logo_openejb.gif" alt="Apache OpenEJB™"></a>
+        </div> <!-- lucy-logo_box -->
+
+        <div #id="lucy-top_nav_box" class="grid_8">
+          <div id="lucy-top_nav_bar" class="container_8">
+            <ul>
+              <li><a href="http://www.apache.org/" title="Apache Software Foundation">Apache Software Foundation</a></li>
+              <li><a href="http://www.apache.org/licenses/" title="License">License</a></li>
+              <li><a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsorship">Sponsorship</a></li>
+              <li><a href="http://www.apache.org/foundation/thanks.html" title="Thanks">Thanks</a></li>
+              <li><a href="http://www.apache.org/security/ " title="Security">Security</a></li>
+            </ul>
+          </div> <!-- lucy-top_nav_bar -->
+          <p><a href="http://www.apache.org/">Apache</a>&nbsp;&raquo&nbsp;<a href="/">Incubator</a></p>
+          <form name="lucy-top_search_box" id="lucy-top_search_box" action="http://www.google.com/search" method="get">
+            <input value="*.apache.org" name="sitesearch" type="hidden"/>
+            <input type="text" name="q" id="query" style="width:85%">
+            <input type="submit" id="submit" value="Search">
+          </form>
+        </div> <!-- lucy-top_nav_box -->
+
+        <div class="clear"></div>
+
+      </div> <!-- lucy-top -->
+
+      <div id="lucy-main_content" class="container_16 lucy-white_box_3d">
+
+        <div class="grid_4" id="lucy-left_nav_box">
+          <h6>About</h6>
+            <ul>
+              <li><a href="/lucy/">Welcome</a></li>
+              <li><a href="/lucy/faq.html">FAQ</a></li>
+              <li><a href="/lucy/people.html">People</a></li>
+            </ul>
+          <h6>Resources</h6>
+            <ul>
+              <li><a href="/lucy/download.html">Download</a></li>
+              <li><a href="/lucy/mailing_lists.html">Mailing Lists</a></li>
+              <li><a href="/lucy/docs/perl/">Documentation</a></li>
+              <li><a href="http://wiki.apache.org/lucy/">Wiki</a></li>
+              <li><a href="https://issues.apache.org/jira/browse/LUCY">Issue Tracker</a></li>
+              <li><a href="/lucy/version_control.html">Version Control</a></li>
+            </ul>
+          <h6>Related Projects</h6>
+            <ul>
+              <li><a href="http://lucene.apache.org/java/">Lucene</a></li>
+              <li><a href="http://lucene.apache.org/solr/">Solr</a></li>
+              <li><a href="http://incubator.apache.org/lucene.net/">Lucene.NET</a></li>
+              <li><a href="http://lucene.apache.org/pylucene/">PyLucene</a></li>
+              <li><a href="http://lucene.apache.org/openrelevance/">Open Relevance</a></li>
+            </ul>
+        </div> <!-- lucy-left_nav_box -->
+
+        <div id="lucy-main_content_box" class="grid_9">
+          <p>!http://www.openejb.org/images/diagram-local-server.gif|valign=top,
+align=right, hspace=15!
+<a name="LocalServer-AccessingEJBsLocally"></a></p>
+
+<h1>Accessing EJBs Locally</h1>
+
+<p>When OpenEJB embedded in your app, server, IDE, or JUnit, you can use what
+we call the Local Server and avoid the network overhead and enjoy an easy
+way to embedd OpenEJB.  Instead of putting the app in the server, put the
+server in the app!</p>
+
+<p><a name="LocalServer-Saywhat?!Alocalserver?"></a></p>
+
+<h1>Say what?! A local server?</h1>
+
+<p>Yes, you read correctly. OpenEJB can be embedded and treated as your very
+own personal EJB container.</p>
+
+<p>If they can have Local and Remote EJB's, why not Local and Remote EJB
+Servers too?</p>
+
+<p>Haven't you ever wanted EJBs without the heavy? I mean you need the "heavy"
+eventually, but not while you're developing. Well, there's the advantage of
+an EJB implementation that was designed with a very clean and well defined
+server-container contract, you can cut the server part out completely!</p>
+
+<p>So, if you wish to access ejbs locally and not in client/server mode, you
+can do so by embedding OpenEJB as a library and accessing ejbs through
+OpenEJB's built-in IntraVM (Local) Server. Why would someone want to do
+this?
+* Your application is a server or other middleware
+* You want to write an app that can be both stand alone <em>and</em> distributed
+* To test your EJBs with JUnit and don't want to start/stop servers and
+other nonsense
+* Imagine the power from being able to use your IDE debugger to step from
+your Client all the way into your EJB and back with no remote debugging
+voodoo.</p>
+
+<p>In this case, your application, test suite, IDE, or client accesses beans
+as you would from any other EJB Server. The EJB Server just happens to be
+running in the same virtual machine as your application. This EJB Server is
+thusly called the IntraVM Server, and, for all intense purposes, your
+application an IntraVM Client.</p>
+
+<p>There are some interesting differences though. The IntraVM Server isn't a
+heavyweight server as one normally associates with EJB. It doesn't open
+connections, launch threads for processing requests, introduce complex
+classloading heirarchies, or any of those "heavy" kind of things. All it
+does is dish out proxies to your app that can be used to shoot calls right
+into the EJB Container. Very light, very fast, very easy for testing,
+debugging, developing, etc.</p>
+
+<p><a name="LocalServer-Embedding"></a></p>
+
+<h1>Embedding</h1>
+
+<p>!http://www.openejb.org/images/diagram-local-server.gif|valign=top,
+align=right, hspace=15!
+{include:OPENEJBx30:Embedding}</p>
+
+        </div> <!-- lucy-main_content_box --> 
+        <div class="clear"></div>
+
+      </div> <!-- lucy-main_content -->
+
+      <div id="lucy-copyright" class="container_16">
+        <p>Copyright &#169; 2010-2011 The Apache Software Foundation, Licensed under the 
+           <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+           <br/>
+          
+        </p>
+      </div> <!-- lucy-copyright -->
+
+    </div> <!-- lucy-rigid_wrapper -->
+
+  </body>
+</html>

Added: websites/staging/openejb/trunk/content/logging.cwiki
==============================================================================
--- websites/staging/openejb/trunk/content/logging.cwiki (added)
+++ websites/staging/openejb/trunk/content/logging.cwiki Sun Jul 10 04:34:53 2011
@@ -0,0 +1,132 @@
+h2. Logging for Users
+All logging in OpenEJB is done using the openejb.base/conf/logging.properties file. When you download and extract OpenEJB, you will not find this file under the openejb.base/conf directory. However, when you start the server, this file magically appears. So what does this give you as a user of OpenEJB? Here are some of the benefits:
+# You do not have to author a logging.properties from scratch. You get one with sensible defaults.
+# If you did modify the default file, and you wanted to revert back to the default file generated by OpenEJB, all you have to do is
+## Delete or rename the file e.g. rename it to logging.properties.BAK .
+## Restart the server
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenEJB will find that the logging.properties file is missing from the openejb.base/conf directory and it will automatically create a new one with the default configuration. The good thing is that if you modify the logging.properties file, OpenEJB will \*NOT\* over-write it.
+
+The default logging configuration created by OpenEJB uses RollingFileAppender's. The log files are located under the openejb.base/logs directory. By default it writes to just two files , openejb.log and transaction.log&nbsp;
+{info:title=Embedded Testing}
+When running tests using embedded OpenEJB, the logging.properties will be ignored. You need to use a file named embedded.logging.properties instead. Place this file under src/test/resources
+{info} 
+h2. Logging for contributors/committers
+
+The org.apache.openejb.util.Logger class is the one which is used for logging. This class is a wrapper around log4.&nbsp;
+
+h3. LogCategory
+
+Each Logger instance belongs to a category represented by a org.apache.openejb.util.LogCategory instance. Here is what the LogCategory class looks like
+{code}
+public final class LogCategory {
+	private final String name;
+	public static final LogCategory OPENEJB = new LogCategory( "OpenEJB");
+	public static final LogCategory OPENEJB_ADMIN = OPENEJB.createChild("admin");
+	public static final LogCategory OPENEJB_STARTUP = OPENEJB.createChild("startup");
+	public static final LogCategory OPENEJB_STARTUP_CONFIG = OPENEJB_STARTUP.createChild("config");
+	public static final LogCategory OPENEJB_STARTUP_VALIDATION = OPENEJB_STARTUP.createChild("validation");
+       // other categories removed for code brevity
+	private LogCategory(String name){
+		this.name = name;
+	}
+	public String getName() {
+		return name;
+	}
+	/**
+	 * Creates a child category of this category. <B>Use this method sparingly</B>. This method is to be used in only those circumstances where the name of the
+	 * category is not known upfront and is a derived name. If you know the name of the category, it is highly recommended to add a static final field
+	 * of type LogCategory in this class
+	 * @param child
+	 * @return - LogCategory
+	 */
+	public LogCategory createChild(String child){
+		return new LogCategory(this.name+"."+child);
+	}
+
+}
+{code}
+Notice carefully how each LogCategory instance is created.&nbsp; The objective here is that each LogCategory should be a child of the OPENEJB category. If you need to add a new category and you know the name of the category upfront, simply open the LogCategory class and add another category. For example, if you needed to add a category named SHUTDOWN, here is the recommended way to add it
+{code}
+public static final LogCategory OPENEJB_SHUTDOWN = LogCategory.OPENEJB.createChild("shutdown");
+{code}
+Sometimes you may want to create a category whose name is "generated" at runtime. In that case you can use the "createChild" method of the LogCategory class to create this new category.&nbsp; For example, if you wanted to create a category of Logger for every deployed module, then assuming you have the moduleId information you could do something as follows to create a category:
+{code}
+String moduleId = "mymodule";
+LogCategory generatedCategory = LogCategory.OPENEJB.createChild(moduleId);
+{code}
+
+h3. &nbsp;Logger
+
+The preference is to externalize all logging messages in properties file. Typically each package should have a file called Messages.properties.&nbsp; This file should have all the keys and the corresponding messages.&nbsp; Here are the steps you would follow to log a message:
+* For each message you need to log, you would open the Messages.properties file in the corresponding package and add a key-value pair for the message.&nbsp; For example, if you were authoring a class called org.apache.openejb.util.Connect, then you would add a key-value pair to the Messages.properties file located in the org.apache.openejb.util package.
+
+* Obtain a Logger instance in one of the following ways:
+
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; *Using the package name*
+{code}
+Logger logger = Logger.getInstance (LogCategory.OPENEJB, "org.apache.openejb.util");
+{code}
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;*&nbsp;  Using the Class*
+{code}
+Logger logger = Logger.getInsance(LogCategory.OPENEJB, Connect.class);
+{code}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *Get a child Logger for an existing Logger instance*
+{code}
+Logger logger = Logger.getInsance(LogCategory.OPENEJB, Connect.class);
+Logger child = logger.getChildLogger("shutdown");
+{code}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *Get a child Logger of an existing Logger using a LogCategory*
+{code}
+LogCategory childCategory = LogCategory.OPENEJB.createChild("shutdown");
+Logger logger = Logger.getInstance(childCategory,Connect.class);
+{code}
+* &nbsp;Call one of the following methods passing in the key as an argument
+** debug
+** error
+** fatal
+** info
+** warning
+
+{code}
+Logger logger = Logger.getInstance(LogCategory.OPENEJB,Connect.class);
+logger.info("error.file");
+{code}
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The Messages.properties file under org.apache.openejb.util must have the "error.file" key in it with the corresponding message.
+
+h3. Logger Inheritance&nbsp;
+
+&nbsp;Another interesting feature of the Logging framework is inheritance. Here is how it works:
+
+Say you have the following Messages.properties files in the classpath.
+# &nbsp; org/apache/openejb/Messages.properties
+# &nbsp; org/apache/openejb/core/Messages.properties
+# &nbsp; org/apache/openejb/core/stateless/Messages.properties
+
+&nbsp;
+&nbsp;
+Then you have a class such as org.apache.openejb.core.stateless.StatelessContainer (+note the package+)
+If that class referenced a message key "classNotFound" for example, the Logger would look for the message first in Messages.properties 3, then 2, then 1 and so on until it found the required message.
+This would allow better reuse of messages, more flexibility in where we put the Message.properties&nbsp; files, as well as the added bonus in that we no longer need to pass in the location of where our
+Message.properties file is
+
+h3. Logging for integrators
+
+If you want to embed OpenEJB in your application and need to control the logging configuration of OpenEJB, simple set the openejb.logger.external system property to true. Now, its your applications' responsibility to configure logging, OpenEJB will simply use your configuration.
+
+h3. &nbsp;Origination of the Logging Idea
+
+There has been a long discussion for this logging idea. Its going to be worth it to read the discussion at [i18n and logging|http://www.nabble.com/i18n-and-logging-tf3962134s2756.html]
+
++Here is a extract from an email from David Blevins which talks about the existing logging framework. The current framework is more or less the same as this one, just some added features and a rewrite of the API+
+
+Each module has a file called default.logging.conf. This file contains the definition of all Loggers, their appenders and warning levels. However, we do not use default.logging.conf first. The basic idea is that first we look for say conf/logging.conf in the openejb.base directory. &nbsp;If we don't find it there, we look for default.logging.conf in the classpath. &nbsp;If we did find default.logging.conf (which we should) and there is an openejb.base/conf/ directory then expand the default.logging.conf to openejb.base/conf/logging.conf where we expected to find the file in the first place. &nbsp;If there was no openejb.base/conf/ directory, then it's safe to assume we're running embedded (in a test case perhaps) and just use the default.logging.conf and do no extra work.
+
+We have default.logging.conf which we use this way as well as default.openejb.conf and now more recently users.properties and groups.properties. &nbsp;We search on disk for the resource in openejb.base/conf/ if we don't find them we unpack the default one we stuffed in openejb-core jar and extract it to disk in the openejb.base/conf directory if there is one \-\- if there isn't one we just use the default file.
+
+The basic ideas behind the pattern are that:
+ &nbsp;1. If you've messed up your configuration, just delete or rename the respective files in your conf/ directory and new (working) ones will magically appear.
+ &nbsp;2. When upgrading its nice that our zip file won't overwrite any existing files in conf/
+ &nbsp;3. If you're running embedded you don't have to setup any directories or have any config files, we can run on defaults.
+
+The *ConfUtils.getConfResource* utility to do that pattern generically , but so far we're only using it for the users.properties and groups.properties files. &nbsp;We should be using it everywhere. &nbsp;Having the code in multiple places has lead to some inconsistencies such as we expand the default.openejb.conf file to conf/openejb.xml (not even the same file extension). &nbsp;We really don't need the "default" part in our file names and the lingering usage of the "conf" file extension is something that needs to go bye-bye \-\- we should use properties for properties files and xml for xml files, etc.
\ No newline at end of file

Added: websites/staging/openejb/trunk/content/logging.html
==============================================================================
--- websites/staging/openejb/trunk/content/logging.html (added)
+++ websites/staging/openejb/trunk/content/logging.html Sun Jul 10 04:34:53 2011
@@ -0,0 +1,339 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+    <title>Logging</title>
+    <link rel="stylesheet" type="text/css" media="screen" href="http://incubator.apache.org/lucy/css/lucy.css">
+  </head>
+
+  <body>
+
+    <div id="lucy-rigid_wrapper">
+
+      <div id="lucy-top" class="container_16 lucy-white_box_3d">
+
+        <div id="lucy-logo_box" class="grid_8">
+          <a href="/OpenEJB/"><img src="http://openejb.apache.org/images/logo_openejb.gif" alt="Apache OpenEJB™"></a>
+        </div> <!-- lucy-logo_box -->
+
+        <div #id="lucy-top_nav_box" class="grid_8">
+          <div id="lucy-top_nav_bar" class="container_8">
+            <ul>
+              <li><a href="http://www.apache.org/" title="Apache Software Foundation">Apache Software Foundation</a></li>
+              <li><a href="http://www.apache.org/licenses/" title="License">License</a></li>
+              <li><a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsorship">Sponsorship</a></li>
+              <li><a href="http://www.apache.org/foundation/thanks.html" title="Thanks">Thanks</a></li>
+              <li><a href="http://www.apache.org/security/ " title="Security">Security</a></li>
+            </ul>
+          </div> <!-- lucy-top_nav_bar -->
+          <p><a href="http://www.apache.org/">Apache</a>&nbsp;&raquo&nbsp;<a href="/">Incubator</a></p>
+          <form name="lucy-top_search_box" id="lucy-top_search_box" action="http://www.google.com/search" method="get">
+            <input value="*.apache.org" name="sitesearch" type="hidden"/>
+            <input type="text" name="q" id="query" style="width:85%">
+            <input type="submit" id="submit" value="Search">
+          </form>
+        </div> <!-- lucy-top_nav_box -->
+
+        <div class="clear"></div>
+
+      </div> <!-- lucy-top -->
+
+      <div id="lucy-main_content" class="container_16 lucy-white_box_3d">
+
+        <div class="grid_4" id="lucy-left_nav_box">
+          <h6>About</h6>
+            <ul>
+              <li><a href="/lucy/">Welcome</a></li>
+              <li><a href="/lucy/faq.html">FAQ</a></li>
+              <li><a href="/lucy/people.html">People</a></li>
+            </ul>
+          <h6>Resources</h6>
+            <ul>
+              <li><a href="/lucy/download.html">Download</a></li>
+              <li><a href="/lucy/mailing_lists.html">Mailing Lists</a></li>
+              <li><a href="/lucy/docs/perl/">Documentation</a></li>
+              <li><a href="http://wiki.apache.org/lucy/">Wiki</a></li>
+              <li><a href="https://issues.apache.org/jira/browse/LUCY">Issue Tracker</a></li>
+              <li><a href="/lucy/version_control.html">Version Control</a></li>
+            </ul>
+          <h6>Related Projects</h6>
+            <ul>
+              <li><a href="http://lucene.apache.org/java/">Lucene</a></li>
+              <li><a href="http://lucene.apache.org/solr/">Solr</a></li>
+              <li><a href="http://incubator.apache.org/lucene.net/">Lucene.NET</a></li>
+              <li><a href="http://lucene.apache.org/pylucene/">PyLucene</a></li>
+              <li><a href="http://lucene.apache.org/openrelevance/">Open Relevance</a></li>
+            </ul>
+        </div> <!-- lucy-left_nav_box -->
+
+        <div id="lucy-main_content_box" class="grid_9">
+          <p><a name="Logging-LoggingforUsers"></a></p>
+
+<h2>Logging for Users</h2>
+
+<p>All logging in OpenEJB is done using the
+openejb.base/conf/logging.properties file. When you download and extract
+OpenEJB, you will not find this file under the openejb.base/conf directory.
+However, when you start the server, this file magically appears. So what
+does this give you as a user of OpenEJB? Here are some of the benefits:
+1. You do not have to author a logging.properties from scratch. You get one
+with sensible defaults.
+1. If you did modify the default file, and you wanted to revert back to the
+default file generated by OpenEJB, all you have to do is
+1. # Delete or rename the file e.g. rename it to logging.properties.BAK .
+1. # Restart the server</p>
+
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+OpenEJB will find that the logging.properties file is missing from the
+openejb.base/conf directory and it will automatically create a new one with
+the default configuration. The good thing is that if you modify the
+logging.properties file, OpenEJB will *NOT* over-write it.</p>
+
+<p>The default logging configuration created by OpenEJB uses
+RollingFileAppender's. The log files are located under the
+openejb.base/logs directory. By default it writes to just two files ,
+openejb.log and transaction.log&nbsp;
+{info:title=Embedded Testing}
+When running tests using embedded OpenEJB, the logging.properties will be
+ignored. You need to use a file named embedded.logging.properties instead.
+Place this file under src/test/resources
+{info} 
+<a name="Logging-Loggingforcontributors/committers"></a></p>
+
+<h2>Logging for contributors/committers</h2>
+
+<p>The org.apache.openejb.util.Logger class is the one which is used for
+logging. This class is a wrapper around log4.&nbsp;</p>
+
+<p><a name="Logging-LogCategory"></a></p>
+
+<h3>LogCategory</h3>
+
+<p>Each Logger instance belongs to a category represented by a
+org.apache.openejb.util.LogCategory instance. Here is what the LogCategory
+class looks like</p>
+
+<pre><code>public final class LogCategory {
+    private final String name;
+    public static final LogCategory OPENEJB = new LogCategory(
+</code></pre>
+
+<p>"OpenEJB");
+        public static final LogCategory OPENEJB_ADMIN =
+OPENEJB.createChild("admin");
+        public static final LogCategory OPENEJB_STARTUP =
+OPENEJB.createChild("startup");
+        public static final LogCategory OPENEJB_STARTUP_CONFIG =
+OPENEJB_STARTUP.createChild("config");
+        public static final LogCategory OPENEJB_STARTUP_VALIDATION =
+OPENEJB_STARTUP.createChild("validation");
+           // other categories removed for code brevity
+        private LogCategory(String name){
+            this.name = name;
+        }
+        public String getName() {
+            return name;
+        }
+        /**
+         * Creates a child category of this category. <B>Use this method
+sparingly</B>. This method is to be used in only those circumstances where
+the name of the
+         * category is not known upfront and is a derived name. If you know
+the name of the category, it is highly recommended to add a static final
+field
+         * of type LogCategory in this class
+         * @param child
+         * @return - LogCategory
+         */
+        public LogCategory createChild(String child){
+            return new LogCategory(this.name+"."+child);
+        }</p>
+
+<pre><code>}
+</code></pre>
+
+<p>Notice carefully how each LogCategory instance is created.&nbsp; The
+objective here is that each LogCategory should be a child of the OPENEJB
+category. If you need to add a new category and you know the name of the
+category upfront, simply open the LogCategory class and add another
+category. For example, if you needed to add a category named SHUTDOWN, here
+is the recommended way to add it</p>
+
+<pre><code>public static final LogCategory OPENEJB_SHUTDOWN =
+</code></pre>
+
+<p>LogCategory.OPENEJB.createChild("shutdown");</p>
+
+<p>Sometimes you may want to create a category whose name is "generated" at
+runtime. In that case you can use the "createChild" method of the
+LogCategory class to create this new category.&nbsp; For example, if you
+wanted to create a category of Logger for every deployed module, then
+assuming you have the moduleId information you could do something as
+follows to create a category:</p>
+
+<pre><code>String moduleId = "mymodule";
+LogCategory generatedCategory = LogCategory.OPENEJB.createChild(moduleId);
+</code></pre>
+
+<p><a name="Logging-&nbsp;Logger"></a></p>
+
+<h3>&nbsp;Logger</h3>
+
+<p>The preference is to externalize all logging messages in properties file.
+Typically each package should have a file called Messages.properties.&nbsp;
+This file should have all the keys and the corresponding messages.&nbsp;
+Here are the steps you would follow to log a message:
+* For each message you need to log, you would open the Messages.properties
+file in the corresponding package and add a key-value pair for the
+message.&nbsp; For example, if you were authoring a class called
+org.apache.openejb.util.Connect, then you would add a key-value pair to the
+Messages.properties file located in the org.apache.openejb.util package.</p>
+
+<ul>
+<li>Obtain a Logger instance in one of the following ways:</li>
+</ul>
+
+<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+<em>Using the package name</em></p>
+
+<pre><code>Logger logger = Logger.getInstance (LogCategory.OPENEJB,
+</code></pre>
+
+<p>"org.apache.openejb.util");</p>
+
+<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;<em>&nbsp; 
+Using the Class</em></p>
+
+<pre><code>Logger logger = Logger.getInsance(LogCategory.OPENEJB, Connect.class);
+</code></pre>
+
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<em>Get a child Logger for an existing Logger instance</em></p>
+
+<pre><code>Logger logger = Logger.getInsance(LogCategory.OPENEJB, Connect.class);
+Logger child = logger.getChildLogger("shutdown");
+</code></pre>
+
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<em>Get a child Logger of an existing Logger using a LogCategory</em></p>
+
+<pre><code>LogCategory childCategory = LogCategory.OPENEJB.createChild("shutdown");
+Logger logger = Logger.getInstance(childCategory,Connect.class);
+</code></pre>
+
+<ul>
+<li><p>&nbsp;Call one of the following methods passing in the key as an argument
+<em>* debug
+<em></em> error
+<em></em> fatal
+<em></em> info
+*</em> warning</p>
+
+<p>Logger logger = Logger.getInstance(LogCategory.OPENEJB,Connect.class);
+logger.info("error.file");</p></li>
+</ul>
+
+<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The
+Messages.properties file under org.apache.openejb.util must have the
+"error.file" key in it with the corresponding message.</p>
+
+<p><a name="Logging-LoggerInheritance&nbsp;"></a></p>
+
+<h3>Logger Inheritance&nbsp;</h3>
+
+<p>&nbsp;Another interesting feature of the Logging framework is inheritance.
+Here is how it works:</p>
+
+<p>Say you have the following Messages.properties files in the classpath.
+1. &nbsp; org/apache/openejb/Messages.properties
+1. &nbsp; org/apache/openejb/core/Messages.properties
+1. &nbsp; org/apache/openejb/core/stateless/Messages.properties</p>
+
+<p>&nbsp;
+&nbsp;
+Then you have a class such as
+org.apache.openejb.core.stateless.StatelessContainer (+note the package+)
+If that class referenced a message key "classNotFound" for example, the
+Logger would look for the message first in Messages.properties 3, then 2,
+then 1 and so on until it found the required message.
+This would allow better reuse of messages, more flexibility in where we put
+the Message.properties&nbsp; files, as well as the added bonus in that we
+no longer need to pass in the location of where our
+Message.properties file is</p>
+
+<p><a name="Logging-Loggingforintegrators"></a></p>
+
+<h3>Logging for integrators</h3>
+
+<p>If you want to embed OpenEJB in your application and need to control the
+logging configuration of OpenEJB, simple set the openejb.logger.external
+system property to true. Now, its your applications' responsibility to
+configure logging, OpenEJB will simply use your configuration.</p>
+
+<p><a name="Logging-&nbsp;OriginationoftheLoggingIdea"></a></p>
+
+<h3>&nbsp;Origination of the Logging Idea</h3>
+
+<p>There has been a long discussion for this logging idea. Its going to be
+worth it to read the discussion at <a href="http://www.nabble.com/i18n-and-logging-tf3962134s2756.html">i18n and logging</a></p>
+
+<p>+Here is a extract from an email from David Blevins which talks about the
+existing logging framework. The current framework is more or less the same
+as this one, just some added features and a rewrite of the API+</p>
+
+<p>Each module has a file called default.logging.conf. This file contains the
+definition of all Loggers, their appenders and warning levels. However, we
+do not use default.logging.conf first. The basic idea is that first we look
+for say conf/logging.conf in the openejb.base directory. &nbsp;If we don't
+find it there, we look for default.logging.conf in the classpath. &nbsp;If
+we did find default.logging.conf (which we should) and there is an
+openejb.base/conf/ directory then expand the default.logging.conf to
+openejb.base/conf/logging.conf where we expected to find the file in the
+first place. &nbsp;If there was no openejb.base/conf/ directory, then it's
+safe to assume we're running embedded (in a test case perhaps) and just use
+the default.logging.conf and do no extra work.</p>
+
+<p>We have default.logging.conf which we use this way as well as
+default.openejb.conf and now more recently users.properties and
+groups.properties. &nbsp;We search on disk for the resource in
+openejb.base/conf/ if we don't find them we unpack the default one we
+stuffed in openejb-core jar and extract it to disk in the openejb.base/conf
+directory if there is one -- if there isn't one we just use the default
+file.</p>
+
+<p>The basic ideas behind the pattern are that:
+ &nbsp;1. If you've messed up your configuration, just delete or rename the
+respective files in your conf/ directory and new (working) ones will
+magically appear.
+ &nbsp;2. When upgrading its nice that our zip file won't overwrite any
+existing files in conf/
+ &nbsp;3. If you're running embedded you don't have to setup any
+directories or have any config files, we can run on defaults.</p>
+
+<p>The <em>ConfUtils.getConfResource</em> utility to do that pattern generically ,
+but so far we're only using it for the users.properties and
+groups.properties files. &nbsp;We should be using it everywhere.
+&nbsp;Having the code in multiple places has lead to some inconsistencies
+such as we expand the default.openejb.conf file to conf/openejb.xml (not
+even the same file extension). &nbsp;We really don't need the "default"
+part in our file names and the lingering usage of the "conf" file extension
+is something that needs to go bye-bye -- we should use properties for
+properties files and xml for xml files, etc.</p>
+
+        </div> <!-- lucy-main_content_box --> 
+        <div class="clear"></div>
+
+      </div> <!-- lucy-main_content -->
+
+      <div id="lucy-copyright" class="container_16">
+        <p>Copyright &#169; 2010-2011 The Apache Software Foundation, Licensed under the 
+           <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+           <br/>
+          
+        </p>
+      </div> <!-- lucy-copyright -->
+
+    </div> <!-- lucy-rigid_wrapper -->
+
+  </body>
+</html>

Added: websites/staging/openejb/trunk/content/mailing-lists.cwiki
==============================================================================
--- websites/staging/openejb/trunk/content/mailing-lists.cwiki (added)
+++ websites/staging/openejb/trunk/content/mailing-lists.cwiki Sun Jul 10 04:34:53 2011
@@ -0,0 +1,50 @@
+h1. User Mailing List
+
+Where the general OpenEJB community goes to ask questions, make suggestions, chat  with other users and developers, and keep a finger on the pulse of the project.
+
+Medium volume mailing list, dedicated to the  OpenEJB community.
+
+* [users@openejb.apache.org|mailto:users@openejb.apache.org]
+* [Subscribe|mailto:users-subscribe@openejb.apache.org]
+* [Unsubscribe|mailto:users-unsubscribe@openejb.apache.org]
+
+OpenEJB Users Online Archives/Forums:
+|| Search || Post || Depth || Archive URL ||
+| (/) | (x) | 2002 |  http://openejb.markmail.org/search/?q=type:users |
+| (/) | (x) | 2002 |  http://marc.info/?l=openejb-user |
+| (x) | (x) | 2006 |  http://mail-archives.apache.org/mod_mbox/openejb-users/ |
+| (/) | (/) | 2006 |  http://n4.nabble.com/OpenEJB-User-f979441.html |
+| (/) | (x) | 2007 |  http://www.mail-archive.com/users@openejb.apache.org |
+
+h1. Developer Mailing List
+
+If you're a developer or contributor on OpenEJB, this is the place for you. Join in on the develpment and planning discussions. Get the scoop on the changes that take place in OpenEJB as our team is hard at work in developing and refining the OpenEJB container system.
+
+* [dev@openejb.apache.org|mailto:dev@openejb.apache.org]
+* [Subscribe|mailto:dev-subscribe@openejb.apache.org]
+* [Unsubscribe|mailto:dev-unsubscribe@openejb.apache.org]
+
+OpenEJB Developers Online Archives/Forums:
+|| Search || Post || Depth || Archive URL ||
+| (/) | (x) | 2002 |  http://openejb.markmail.org/search/?q=type:development |
+| (/) | (x) | 2002 |  http://marc.info/?l=openejb-development |
+| (x) | (x) | 2006 |  http://mail-archives.apache.org/mod_mbox/openejb-dev/ |
+| (/) | (/) | 2006 |  http://n4.nabble.com/OpenEJB-Dev-f982480.html |
+| (/) | (x) | 2007 |  http://www.mail-archive.com/dev@openejb.apache.org |
+
+
+h1. Commit Mailing List
+
+Keep tabs on all the changes to our svn. We have mixed a few of the popular perl scripts for cvs email notification as well as added a few features that are all new. This new list provides you with as-it-happens information regarding OpenEJB development.
+
+* [commits@openejb.apache.org|mailto:commits@openejb.apache.org]
+* [Subscribe|mailto:commits-subscribe@openejb.apache.org]
+* [Unsubscribe|mailto:commits-unsubscribe@openejb.apache.org]
+
+OpenEJB Commits Online Archives/Forums:
+|| Search || Post || Depth || Archive URL ||
+| (/) | (x) | 2002 |  http://openejb.markmail.org/search/?q=type:checkins |
+| (/) | (x) | 2004 |  http://marc.info/?l=openejb-cvs |
+| (x) | (x) | 2006 |  http://mail-archives.apache.org/mod_mbox/openejb-commits/ |
+| (/) | (x) | 2007 |  http://www.mail-archive.com/commits@openejb.apache.org |
+

Added: websites/staging/openejb/trunk/content/mailing-lists.html
==============================================================================
--- websites/staging/openejb/trunk/content/mailing-lists.html (added)
+++ websites/staging/openejb/trunk/content/mailing-lists.html Sun Jul 10 04:34:53 2011
@@ -0,0 +1,170 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+    <title>Mailing Lists</title>
+    <link rel="stylesheet" type="text/css" media="screen" href="http://incubator.apache.org/lucy/css/lucy.css">
+  </head>
+
+  <body>
+
+    <div id="lucy-rigid_wrapper">
+
+      <div id="lucy-top" class="container_16 lucy-white_box_3d">
+
+        <div id="lucy-logo_box" class="grid_8">
+          <a href="/OpenEJB/"><img src="http://openejb.apache.org/images/logo_openejb.gif" alt="Apache OpenEJB™"></a>
+        </div> <!-- lucy-logo_box -->
+
+        <div #id="lucy-top_nav_box" class="grid_8">
+          <div id="lucy-top_nav_bar" class="container_8">
+            <ul>
+              <li><a href="http://www.apache.org/" title="Apache Software Foundation">Apache Software Foundation</a></li>
+              <li><a href="http://www.apache.org/licenses/" title="License">License</a></li>
+              <li><a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsorship">Sponsorship</a></li>
+              <li><a href="http://www.apache.org/foundation/thanks.html" title="Thanks">Thanks</a></li>
+              <li><a href="http://www.apache.org/security/ " title="Security">Security</a></li>
+            </ul>
+          </div> <!-- lucy-top_nav_bar -->
+          <p><a href="http://www.apache.org/">Apache</a>&nbsp;&raquo&nbsp;<a href="/">Incubator</a></p>
+          <form name="lucy-top_search_box" id="lucy-top_search_box" action="http://www.google.com/search" method="get">
+            <input value="*.apache.org" name="sitesearch" type="hidden"/>
+            <input type="text" name="q" id="query" style="width:85%">
+            <input type="submit" id="submit" value="Search">
+          </form>
+        </div> <!-- lucy-top_nav_box -->
+
+        <div class="clear"></div>
+
+      </div> <!-- lucy-top -->
+
+      <div id="lucy-main_content" class="container_16 lucy-white_box_3d">
+
+        <div class="grid_4" id="lucy-left_nav_box">
+          <h6>About</h6>
+            <ul>
+              <li><a href="/lucy/">Welcome</a></li>
+              <li><a href="/lucy/faq.html">FAQ</a></li>
+              <li><a href="/lucy/people.html">People</a></li>
+            </ul>
+          <h6>Resources</h6>
+            <ul>
+              <li><a href="/lucy/download.html">Download</a></li>
+              <li><a href="/lucy/mailing_lists.html">Mailing Lists</a></li>
+              <li><a href="/lucy/docs/perl/">Documentation</a></li>
+              <li><a href="http://wiki.apache.org/lucy/">Wiki</a></li>
+              <li><a href="https://issues.apache.org/jira/browse/LUCY">Issue Tracker</a></li>
+              <li><a href="/lucy/version_control.html">Version Control</a></li>
+            </ul>
+          <h6>Related Projects</h6>
+            <ul>
+              <li><a href="http://lucene.apache.org/java/">Lucene</a></li>
+              <li><a href="http://lucene.apache.org/solr/">Solr</a></li>
+              <li><a href="http://incubator.apache.org/lucene.net/">Lucene.NET</a></li>
+              <li><a href="http://lucene.apache.org/pylucene/">PyLucene</a></li>
+              <li><a href="http://lucene.apache.org/openrelevance/">Open Relevance</a></li>
+            </ul>
+        </div> <!-- lucy-left_nav_box -->
+
+        <div id="lucy-main_content_box" class="grid_9">
+          <p><a name="MailingLists-UserMailingList"></a></p>
+
+<h1>User Mailing List</h1>
+
+<p>Where the general OpenEJB community goes to ask questions, make
+suggestions, chat  with other users and developers, and keep a finger on
+the pulse of the project.</p>
+
+<p>Medium volume mailing list, dedicated to the  OpenEJB community.</p>
+
+<ul>
+<li><a href="mailto:users@openejb.apache.org.html">users@openejb.apache.org</a></li>
+<li><a href="mailto:users-subscribe@openejb.apache.org.html">Subscribe</a></li>
+<li><a href="mailto:users-unsubscribe@openejb.apache.org.html">Unsubscribe</a></li>
+</ul>
+
+<p>OpenEJB Users Online Archives/Forums:</p>
+
+<table>
+<tr><th> Search </th><th> Post </th><th> Depth </th><th> Archive URL </th></tr>
+<tr><td> (/) </td><td> (x) </td><td> 2002 </td><td>  http://openejb.markmail.org/search/?q=type:users </td></tr>
+<tr><td> (/) </td><td> (x) </td><td> 2002 </td><td>  http://marc.info/?l=openejb-user </td></tr>
+<tr><td> (x) </td><td> (x) </td><td> 2006 </td><td> 
+http://mail-archives.apache.org/mod_mbox/openejb-users/ </td></tr>
+<tr><td> (/) </td><td> (/) </td><td> 2006 </td><td>  http://n4.nabble.com/OpenEJB-User-f979441.html </td></tr>
+<tr><td> (/) </td><td> (x) </td><td> 2007 </td><td>  http://www.mail-archive.com/users@openejb.apache.org
+</td></tr>
+</table>
+
+<p><a name="MailingLists-DeveloperMailingList"></a></p>
+
+<h1>Developer Mailing List</h1>
+
+<p>If you're a developer or contributor on OpenEJB, this is the place for you.
+Join in on the develpment and planning discussions. Get the scoop on the
+changes that take place in OpenEJB as our team is hard at work in
+developing and refining the OpenEJB container system.</p>
+
+<ul>
+<li><a href="mailto:dev@openejb.apache.org.html">dev@openejb.apache.org</a></li>
+<li><a href="mailto:dev-subscribe@openejb.apache.org.html">Subscribe</a></li>
+<li><a href="mailto:dev-unsubscribe@openejb.apache.org.html">Unsubscribe</a></li>
+</ul>
+
+<p>OpenEJB Developers Online Archives/Forums:</p>
+
+<table>
+<tr><th> Search </th><th> Post </th><th> Depth </th><th> Archive URL </th></tr>
+<tr><td> (/) </td><td> (x) </td><td> 2002 </td><td> 
+http://openejb.markmail.org/search/?q=type:development </td></tr>
+<tr><td> (/) </td><td> (x) </td><td> 2002 </td><td>  http://marc.info/?l=openejb-development </td></tr>
+<tr><td> (x) </td><td> (x) </td><td> 2006 </td><td>  http://mail-archives.apache.org/mod_mbox/openejb-dev/
+</td></tr>
+<tr><td> (/) </td><td> (/) </td><td> 2006 </td><td>  http://n4.nabble.com/OpenEJB-Dev-f982480.html </td></tr>
+<tr><td> (/) </td><td> (x) </td><td> 2007 </td><td>  http://www.mail-archive.com/dev@openejb.apache.org </td></tr>
+</table>
+
+<p><a name="MailingLists-CommitMailingList"></a></p>
+
+<h1>Commit Mailing List</h1>
+
+<p>Keep tabs on all the changes to our svn. We have mixed a few of the popular
+perl scripts for cvs email notification as well as added a few features
+that are all new. This new list provides you with as-it-happens information
+regarding OpenEJB development.</p>
+
+<ul>
+<li><a href="mailto:commits@openejb.apache.org.html">commits@openejb.apache.org</a></li>
+<li><a href="mailto:commits-subscribe@openejb.apache.org.html">Subscribe</a></li>
+<li><a href="mailto:commits-unsubscribe@openejb.apache.org.html">Unsubscribe</a></li>
+</ul>
+
+<p>OpenEJB Commits Online Archives/Forums:</p>
+
+<table>
+<tr><th> Search </th><th> Post </th><th> Depth </th><th> Archive URL </th></tr>
+<tr><td> (/) </td><td> (x) </td><td> 2002 </td><td>  http://openejb.markmail.org/search/?q=type:checkins </td></tr>
+<tr><td> (/) </td><td> (x) </td><td> 2004 </td><td>  http://marc.info/?l=openejb-cvs </td></tr>
+<tr><td> (x) </td><td> (x) </td><td> 2006 </td><td> 
+http://mail-archives.apache.org/mod_mbox/openejb-commits/ </td></tr>
+<tr><td> (/) </td><td> (x) </td><td> 2007 </td><td> 
+http://www.mail-archive.com/commits@openejb.apache.org </td></tr>
+</table>
+
+        </div> <!-- lucy-main_content_box --> 
+        <div class="clear"></div>
+
+      </div> <!-- lucy-main_content -->
+
+      <div id="lucy-copyright" class="container_16">
+        <p>Copyright &#169; 2010-2011 The Apache Software Foundation, Licensed under the 
+           <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+           <br/>
+          
+        </p>
+      </div> <!-- lucy-copyright -->
+
+    </div> <!-- lucy-rigid_wrapper -->
+
+  </body>
+</html>

Added: websites/staging/openejb/trunk/content/management-and-voting.cwiki
==============================================================================
--- websites/staging/openejb/trunk/content/management-and-voting.cwiki (added)
+++ websites/staging/openejb/trunk/content/management-and-voting.cwiki Sun Jul 10 04:34:53 2011
@@ -0,0 +1,29 @@
+h1. Basic info
+
+Apache has a few roles that relate to all Apache projects:
+
+ - Contributors [http://www.apache.org/dev/contributors.html]
+ - Committers [http://www.apache.org/dev/committers.html]
+ - PMC Members [http://www.apache.org/dev/pmc.html]
+
+Despite there being various roles, we try extremely hard to keep the project flat.  All feedback is welcome, all people matter.  Everyone should feel very encouraged to participate regardless if they are new or old to the project.  If you are new and want to participate, please speak up, we'll always be happy to hear from you.
+
+If anything there is a reverse hierarchy that is not unlike traffic laws; pedestrians (users) always have the right of way, bikes (contributors) yield to pedestrians, automobiles (committers) yield to bikes and pedestrians.  Depending on what you're driving you have a greater responsibility to those around you.  Be careful not to run anyone over.
+
+h1. PMC
+
+We don't focus on the PMC in this project so many may not have a clear concept of it.  Every project at Apache has a PMC which at minimum represents Apache from a legal perspective.  The people on it are expected to provide legal oversight, making sure that the legal entity that is Apache has awareness enough to legally protect the code that leaves it's doors, the users that use it, and the people who create it.  This means making sure any contributions going into the project are clean and can be legally projected and making sure any binaries going out meet the legal requirements so they as well can be legally protected.  It's a lot of watching all commits, keeping an eye on doc contributions, ensuring CLAs are on file for anything of substantial size, screening release binaries and source for headers, license files, making sure any binaries being widely distributed have been voted on, etc., etc.  If you are on the PMC and you vote on a release it means *you* have done all t
 hese things to the best of your ability.  If you have not, you either should not be on the PMC or should not vote +1.
+
+Being on the PMC is a service, not an achievement.  Therefore if someone is added to the PMC you should not say "congratulations", but simply "thank you."  It does not mean anything more than they have the time to help us function legally.  If someone is perpetually too busy to provide legal oversight and steps down or goes emeritus, it does not mean they are leaving, just that they are too busy for the extra legal responsibility.
+
+Some projects go beyond that and use the PMC as the decision makers and leaders of the project.  We do not.  We make all our decisions on the dev list.  We don't even focus on who is a committer and who is not, which is a major factor of our family-like community and general "everyone is welcome and matters" spirit.  If someone doesn't feel like their input matters till they are a committer, or any other status, we've done something wrong.  Fortunately, this is one of our strongest attributes and part of the magic that is this community.
+
+h1. FAQ
+
+h2. Q. Whose votes count?
+
+Apache requires a minimum of three +1 PMC votes which have legal significance to Apache as a corporation.  That said, all votes from the community are significant to the project and decision making and any -1 is cause for pause and discussion.  We frequently encourage and welcome votes from anyone in the community regardless of status.
+
+h2. Q. Voting on people: Is it hard to vote -1 in public / Can someone get their feelings hurt ?
+
+Yes and yes.  Voting in public requires greater care and sensitivity on behalf of everyone; the vote proposer, the voters, and the votee.  Prior to voting the proposer should create several opportunities for feedback, hopefully positive and constructive.  Community members with concerns should get involved early and actively mentor potential committers, taking opportunities for feedback as queues to get involved, encourage, and work through areas where they see said person needs more help.  The contributor should actively solicit and welcome all help and feedback and encouragement and feel welcome to give it in return.  Do not rush; all parties (proposer, voters, and votee) have work to do in grooming contributors, etc., and that work takes time.  Votes that result in one or more -1s should not be seen as a failure of any one individual and instead be seen as an opportunity for all parties (proposer, voters, and votee) to make improvements, be more active, and give the proce
 ss more time.

Added: websites/staging/openejb/trunk/content/management-and-voting.html
==============================================================================
--- websites/staging/openejb/trunk/content/management-and-voting.html (added)
+++ websites/staging/openejb/trunk/content/management-and-voting.html Sun Jul 10 04:34:53 2011
@@ -0,0 +1,179 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+    <title>Management and Voting</title>
+    <link rel="stylesheet" type="text/css" media="screen" href="http://incubator.apache.org/lucy/css/lucy.css">
+  </head>
+
+  <body>
+
+    <div id="lucy-rigid_wrapper">
+
+      <div id="lucy-top" class="container_16 lucy-white_box_3d">
+
+        <div id="lucy-logo_box" class="grid_8">
+          <a href="/OpenEJB/"><img src="http://openejb.apache.org/images/logo_openejb.gif" alt="Apache OpenEJB™"></a>
+        </div> <!-- lucy-logo_box -->
+
+        <div #id="lucy-top_nav_box" class="grid_8">
+          <div id="lucy-top_nav_bar" class="container_8">
+            <ul>
+              <li><a href="http://www.apache.org/" title="Apache Software Foundation">Apache Software Foundation</a></li>
+              <li><a href="http://www.apache.org/licenses/" title="License">License</a></li>
+              <li><a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsorship">Sponsorship</a></li>
+              <li><a href="http://www.apache.org/foundation/thanks.html" title="Thanks">Thanks</a></li>
+              <li><a href="http://www.apache.org/security/ " title="Security">Security</a></li>
+            </ul>
+          </div> <!-- lucy-top_nav_bar -->
+          <p><a href="http://www.apache.org/">Apache</a>&nbsp;&raquo&nbsp;<a href="/">Incubator</a></p>
+          <form name="lucy-top_search_box" id="lucy-top_search_box" action="http://www.google.com/search" method="get">
+            <input value="*.apache.org" name="sitesearch" type="hidden"/>
+            <input type="text" name="q" id="query" style="width:85%">
+            <input type="submit" id="submit" value="Search">
+          </form>
+        </div> <!-- lucy-top_nav_box -->
+
+        <div class="clear"></div>
+
+      </div> <!-- lucy-top -->
+
+      <div id="lucy-main_content" class="container_16 lucy-white_box_3d">
+
+        <div class="grid_4" id="lucy-left_nav_box">
+          <h6>About</h6>
+            <ul>
+              <li><a href="/lucy/">Welcome</a></li>
+              <li><a href="/lucy/faq.html">FAQ</a></li>
+              <li><a href="/lucy/people.html">People</a></li>
+            </ul>
+          <h6>Resources</h6>
+            <ul>
+              <li><a href="/lucy/download.html">Download</a></li>
+              <li><a href="/lucy/mailing_lists.html">Mailing Lists</a></li>
+              <li><a href="/lucy/docs/perl/">Documentation</a></li>
+              <li><a href="http://wiki.apache.org/lucy/">Wiki</a></li>
+              <li><a href="https://issues.apache.org/jira/browse/LUCY">Issue Tracker</a></li>
+              <li><a href="/lucy/version_control.html">Version Control</a></li>
+            </ul>
+          <h6>Related Projects</h6>
+            <ul>
+              <li><a href="http://lucene.apache.org/java/">Lucene</a></li>
+              <li><a href="http://lucene.apache.org/solr/">Solr</a></li>
+              <li><a href="http://incubator.apache.org/lucene.net/">Lucene.NET</a></li>
+              <li><a href="http://lucene.apache.org/pylucene/">PyLucene</a></li>
+              <li><a href="http://lucene.apache.org/openrelevance/">Open Relevance</a></li>
+            </ul>
+        </div> <!-- lucy-left_nav_box -->
+
+        <div id="lucy-main_content_box" class="grid_9">
+          <p><a name="ManagementandVoting-Basicinfo"></a></p>
+
+<h1>Basic info</h1>
+
+<p>Apache has a few roles that relate to all Apache projects:</p>
+
+<ul>
+<li>Contributors <a href="http://www.apache.org/dev/contributors.html">http://www.apache.org/dev/contributors.html</a></li>
+<li>Committers <a href="http://www.apache.org/dev/committers.html">http://www.apache.org/dev/committers.html</a></li>
+<li>PMC Members <a href="http://www.apache.org/dev/pmc.html">http://www.apache.org/dev/pmc.html</a></li>
+</ul>
+
+<p>Despite there being various roles, we try extremely hard to keep the
+project flat.  All feedback is welcome, all people matter.  Everyone should
+feel very encouraged to participate regardless if they are new or old to
+the project.  If you are new and want to participate, please speak up,
+we'll always be happy to hear from you.</p>
+
+<p>If anything there is a reverse hierarchy that is not unlike traffic laws;
+pedestrians (users) always have the right of way, bikes (contributors)
+yield to pedestrians, automobiles (committers) yield to bikes and
+pedestrians.  Depending on what you're driving you have a greater
+responsibility to those around you.  Be careful not to run anyone over.</p>
+
+<p><a name="ManagementandVoting-PMC"></a></p>
+
+<h1>PMC</h1>
+
+<p>We don't focus on the PMC in this project so many may not have a clear
+concept of it.  Every project at Apache has a PMC which at minimum
+represents Apache from a legal perspective.  The people on it are expected
+to provide legal oversight, making sure that the legal entity that is
+Apache has awareness enough to legally protect the code that leaves it's
+doors, the users that use it, and the people who create it.  This means
+making sure any contributions going into the project are clean and can be
+legally projected and making sure any binaries going out meet the legal
+requirements so they as well can be legally protected.  It's a lot of
+watching all commits, keeping an eye on doc contributions, ensuring CLAs
+are on file for anything of substantial size, screening release binaries
+and source for headers, license files, making sure any binaries being
+widely distributed have been voted on, etc., etc.  If you are on the PMC
+and you vote on a release it means <em>you</em> have done all these things to the
+best of your ability.  If you have not, you either should not be on the PMC
+or should not vote +1.</p>
+
+<p>Being on the PMC is a service, not an achievement.  Therefore if someone is
+added to the PMC you should not say "congratulations", but simply "thank
+you."  It does not mean anything more than they have the time to help us
+function legally.  If someone is perpetually too busy to provide legal
+oversight and steps down or goes emeritus, it does not mean they are
+leaving, just that they are too busy for the extra legal responsibility.</p>
+
+<p>Some projects go beyond that and use the PMC as the decision makers and
+leaders of the project.  We do not.  We make all our decisions on the dev
+list.  We don't even focus on who is a committer and who is not, which is a
+major factor of our family-like community and general "everyone is welcome
+and matters" spirit.  If someone doesn't feel like their input matters till
+they are a committer, or any other status, we've done something wrong. 
+Fortunately, this is one of our strongest attributes and part of the magic
+that is this community.</p>
+
+<p><a name="ManagementandVoting-FAQ"></a></p>
+
+<h1>FAQ</h1>
+
+<p><a name="ManagementandVoting-Q.Whosevotescount?"></a></p>
+
+<h2>Q. Whose votes count?</h2>
+
+<p>Apache requires a minimum of three +1 PMC votes which have legal
+significance to Apache as a corporation.  That said, all votes from the
+community are significant to the project and decision making and any -1 is
+cause for pause and discussion.  We frequently encourage and welcome votes
+from anyone in the community regardless of status.</p>
+
+<p>h2. Q. Voting on people: Is it hard to vote -1 in public / Can someone get
+their feelings hurt ?</p>
+
+<p>Yes and yes.  Voting in public requires greater care and sensitivity on
+behalf of everyone; the vote proposer, the voters, and the votee.  Prior to
+voting the proposer should create several opportunities for feedback,
+hopefully positive and constructive.  Community members with concerns
+should get involved early and actively mentor potential committers, taking
+opportunities for feedback as queues to get involved, encourage, and work
+through areas where they see said person needs more help.  The contributor
+should actively solicit and welcome all help and feedback and encouragement
+and feel welcome to give it in return.  Do not rush; all parties (proposer,
+voters, and votee) have work to do in grooming contributors, etc., and that
+work takes time.  Votes that result in one or more -1s should not be seen
+as a failure of any one individual and instead be seen as an opportunity
+for all parties (proposer, voters, and votee) to make improvements, be more
+active, and give the process more time.</p>
+
+        </div> <!-- lucy-main_content_box --> 
+        <div class="clear"></div>
+
+      </div> <!-- lucy-main_content -->
+
+      <div id="lucy-copyright" class="container_16">
+        <p>Copyright &#169; 2010-2011 The Apache Software Foundation, Licensed under the 
+           <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+           <br/>
+          
+        </p>
+      </div> <!-- lucy-copyright -->
+
+    </div> <!-- lucy-rigid_wrapper -->
+
+  </body>
+</html>

Added: websites/staging/openejb/trunk/content/multiple-business-interface-hazzards.cwiki
==============================================================================
--- websites/staging/openejb/trunk/content/multiple-business-interface-hazzards.cwiki (added)
+++ websites/staging/openejb/trunk/content/multiple-business-interface-hazzards.cwiki Sun Jul 10 04:34:53 2011
@@ -0,0 +1,170 @@
+h1.  UndeclaredThrowableException
+
+When two java interfaces are implemented by a proxy and those two interfaces declare the *same method* but with *different throws clauses* some very nasty side effects happen, namely you loose the ability to throw any checked exceptions that are not in the throws clause of both methods.
+
+{code}
+import junit.framework.TestCase;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.UndeclaredThrowableException;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ExceptionTest extends TestCase {
+
+    public void test() throws Exception {
+        ClassLoader classLoader = this.getClass().getClassLoader();
+        Class[] interfaces = new Class[]{One.class, Two.class};
+
+        InvocationHandler h = new TestInvocationHandler();
+
+        Object proxy = java.lang.reflect.Proxy.newProxyInstance(classLoader, interfaces, h);
+
+        One one = (One) proxy;
+
+        try {
+            one.run(new CommonException());
+        } catch (CommonException e) {
+            // this will work
+        } catch(UndeclaredThrowableException u) {
+            Throwable t = u.getCause();
+            fail("Undeclared: "+t);
+        } catch(Throwable t){
+            fail("Caught: "+t);
+        }
+
+        try {
+            one.run(new OneException());
+        } catch (OneException e) {
+        } catch(UndeclaredThrowableException u) {
+            Throwable t = u.getCause();
+            fail("Undeclared: "+t); // This will always be the code that executes
+        } catch(Throwable t){
+            fail("Caught: "+t);
+        }
+
+        Two two = (Two) proxy;
+        try {
+            two.run(new CommonException());
+        } catch (TwoException e) {
+        } catch(UndeclaredThrowableException u) {
+            Throwable t = u.getCause();
+            fail("Undeclared: "+t); // This will always be the code that executes
+        } catch(Throwable t){
+            fail("Caught: "+t);
+        }
+
+    }
+
+    public static class CommonException extends Exception {
+        public CommonException() {
+        }
+    }
+
+    public static interface One {
+        void run(Object o) throws OneException, CommonException;
+    }
+
+    public static class OneException extends Exception {
+        public OneException() {
+        }
+    }
+
+    public static interface Two {
+        void run(Object o) throws TwoException, CommonException;
+    }
+
+    public static class TwoException extends Exception {
+        public TwoException() {
+        }
+    }
+
+    private static class TestInvocationHandler implements InvocationHandler {
+        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+            throw (Throwable)args[0];
+        }
+    }
+}
+{code}
+
+
+h1. IllegalArgumentException
+
+This one is less of a runtime problem as doing this will cause things to fail up front.  When two java interfaces are implemented by a proxy and those two interfaces declare the *same method* but with *different return types* the VM proxy code will refuse to create a proxy at all.  Take this code example:
+
+{code}
+
+import junit.framework.TestCase;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ReturnTest extends TestCase {
+
+    public void test() throws Exception {
+        ClassLoader classLoader = this.getClass().getClassLoader();
+        Class[] interfaces = new Class[]{ReturnTest.One.class, ReturnTest.Two.class};
+
+        InvocationHandler h = new ReturnTest.TestInvocationHandler();
+
+        Object proxy = java.lang.reflect.Proxy.newProxyInstance(classLoader, interfaces, h);
+
+        One one = (One) proxy;
+        try {
+            Object object = one.run(new ThingOne());
+        } catch (Throwable t) {
+            fail("Caught: " + t);
+        }
+
+        Two two = (Two) proxy;
+        try {
+            Object object = two.run(new ThingTwo());
+        } catch (Throwable t) {
+            fail("Caught: " + t);
+        }
+
+    }
+
+    public static interface One {
+        ThingOne run(Object o);
+    }
+
+    public static class ThingOne {
+    }
+
+    public static interface Two {
+        ThingTwo run(Object o);
+    }
+
+    public static class ThingTwo {
+    }
+
+    private static class TestInvocationHandler implements InvocationHandler {
+        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+            return args[0];
+        }
+    }
+}
+{code}
+
+Running this code will result in the following exception:
+
+{noformat}
+java.lang.IllegalArgumentException: methods with same signature run(java.lang.Object) but incompatible return types: [class ReturnTest$ThingOne, class ReturnTest$ThingTwo]
+	at sun.misc.ProxyGenerator.checkReturnTypes(ProxyGenerator.java:669)
+	at sun.misc.ProxyGenerator.generateClassFile(ProxyGenerator.java:420)
+	at sun.misc.ProxyGenerator.generateProxyClass(ProxyGenerator.java:306)
+	at java.lang.reflect.Proxy.getProxyClass(Proxy.java:501)
+	at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:581)
+	at ReturnTest.test(ReturnTest.java:36)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at com.intellij.rt.execution.junit2.JUnitStarter.main(JUnitStarter.java:32)
+
+{noformat}
\ No newline at end of file