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 07:37:10 UTC

svn commit: r792466 [4/19] - /websites/staging/openejb/trunk/content/

Added: websites/staging/openejb/trunk/content/configuring-persistenceunits-in-tests.html
==============================================================================
--- websites/staging/openejb/trunk/content/configuring-persistenceunits-in-tests.html (added)
+++ websites/staging/openejb/trunk/content/configuring-persistenceunits-in-tests.html Sun Jul 10 05:37:04 2011
@@ -0,0 +1,235 @@
+<!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>Configuring PersistenceUnits in Tests</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="ConfiguringPersistenceUnitsinTests-Overridingthepersistence.xml"></a></p>
+
+<h1>Overriding the persistence.xml</h1>
+
+<p>The most common situation in EJB related testing by far is the need to
+alter your persistence.xml for a test environment.</p>
+
+<p><a name="ConfiguringPersistenceUnitsinTests-Overridingthe<jta-data-source>and<non-jta-data-source>"></a></p>
+
+<h2>Overriding the <jta-data-source> and <non-jta-data-source></h2>
+
+<p>OpenEJB will automatically use the DataSources you have setup in your test
+environment, we're pretty good at guessing the right DataSources you intend
+even if the names don't match exactly -- or in some cases at all.  If there
+is only one DataSource configured, it's very easy for us to guess the
+DataSource to use.</p>
+
+<p>This allows you to keep your persistence.xml configured for your production
+environment and helps eliminate the need for a "test" persistence.xml
+(though we do have that functionality).  A log line will be printed saying
+if we had to adjust the DataSources of your persistence.xml.</p>
+
+<p><a name="ConfiguringPersistenceUnitsinTests-Overridingthepersistence-unit<properties>"></a></p>
+
+<h2>Overriding the persistence-unit <properties></h2>
+
+<p>You can override any property in your test setup via either system
+properties or the initial context properties.  The format is:</p>
+
+<p>{quote}<unit-name>.<property>=<value>{quote}</p>
+
+<p>So for example with the following persistence.xml:</p>
+
+<p>{code:xml|title=persistence.xml}
+<persistence>
+  <persistence-unit name="movie-unit">
+    <provider>org.hibernate.ejb.HibernatePersistence</provider>
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <properties>
+      <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+      <property name="hibernate.max_fetch_depth" value="3"/>
+    </properties>
+  </persistence-unit>
+</persistence></p>
+
+<pre><code>You can override and add persistence unit properties in your test case. 
+</code></pre>
+
+<p>There are currently no facilities for removing them (if you have a need for
+that let us know -- it hasn't really come up so far).</p>
+
+<p>Properties p = new Properties();
+p.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.openejb.client.LocalInitialContextFactory");</p>
+
+<p>p.put("movie-unit.hibernate.hbm2ddl.auto", "update");
+p.put("movie-unit.hibernate.dialect", "org.hibernate.dialect.HSQLDialect");</p>
+
+<p>context = new InitialContext(p);</p>
+
+<pre><code>The overriding order is as follows: 1 = highest, 4 = lowest.
+
+# InitialContext properties
+# jndi.properties from the classpath
+# System properties
+# persistence.xml properties
+
+By default there are no overrides in 1-3, so #4 is the only source of
+</code></pre>
+
+<p>information.  </p>
+
+<pre><code>In the above example there would be exactly three properties for the
+</code></pre>
+
+<p>"movie-unit" persistence unit:
+    - hibernate.hbm2ddl.auto = update
+    - hibernate.max_fetch_depth = 3
+    - hibernate.dialect = org.hibernate.dialect.HSQLDialect</p>
+
+<pre><code>These properties would be passed by OpenEJB directly to the persistence
+</code></pre>
+
+<p>provider (in this case Hibernate).  With one exception OpenEJB does not
+understand or modify these properties.  Details on that one exception
+below.</p>
+
+<pre><code>h3.  No need to specify a "transaction lookup" property
+
+All vendors have such a property for getting a reference to the container's
+</code></pre>
+
+<p>TransactionManager and nothing works if this is not set correctly to the
+OpenEJB specific class.  To make the lives of users easier, OpenEJB will
+take the liberty of setting it for you.</p>
+
+<pre><code>Here are the persistence provider classes we understand and the defaults we
+</code></pre>
+
+<p>will set for you:</p>
+
+<pre><code>h4. Provider org.hibernate.ejb.HibernatePersistence
+
+When using this provider, the *hibernate.transaction.manager_lookup_class*
+</code></pre>
+
+<p>will be automatically set by OpenEJB to
+<em>org.apache.openejb.hibernate.TransactionManagerLookup</em>.  If the property
+is already set in the persistence unit it will be overwritten if it starts
+with the standard "org.hibernate.transaction." prefix.  </p>
+
+<pre><code>Custom lookup implementations will never be overwritten.
+
+h4. Provider oracle.toplink.essentials.PersistenceProvider
+
+Or _oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider_.
+
+When using this provider, the *toplink.target-server* will be automatically
+</code></pre>
+
+<p>set by OpenEJB to <em>org.apache.openejb.toplink.JTATransactionController</em>. 
+If the property is already set in the persistence unit it will be
+overwritten if it starts with the standard "oracle.toplink.transaction."
+prefix.  </p>
+
+<pre><code>Custom transaction controller implementations will never be overwritten.
+
+h4. Provider org.eclipse.persistence.jpa.PersistenceProvider
+
+Or _org.eclipse.persistence.jpa.osgi.PersistenceProvider_.
+
+When using this provider, the *eclipselink.target-server* will be
+</code></pre>
+
+<p>automatically set by OpenEJB to
+<em>org.apache.openejb.eclipselink.JTATransactionController</em>.  If the property
+is already set in the persistence unit it will be overwritten if it starts
+with the standard "org.eclipse.persistence.transaction." prefix.  </p>
+
+<pre><code>Custom transaction controller implementations will never be overwritten.
+
+h4. Provider org.apache.openjpa.persistence.PersistenceProviderImpl
+
+OpenJPA is capable of discovering the correct method for locating the
+</code></pre>
+
+<p>TransactionManager without the need for users to specify the specific
+strategy.  Therefore no specific "magic" is required.</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/constructor-injection.cwiki
==============================================================================
--- websites/staging/openejb/trunk/content/constructor-injection.cwiki (added)
+++ websites/staging/openejb/trunk/content/constructor-injection.cwiki Sun Jul 10 05:37:04 2011
@@ -0,0 +1,80 @@
+For those of you who would like to use final fields, wish to avoid numerous setters, or dislike private field injection and would like nothing more than to just use plan old java constructors, your wish has come true.  This is a feature we intended to add to OpenEJB 3.0 but didn't have time for.  We're happy to bring it to the OpenEJB 3.1 release and with a bit of luck and support from people like yourself, we'll see this as an EJB 3.1 feature as well.
+
+{code}
+@Stateless
+public class WidgetBean implements Widget {
+
+    @EJB(beanName = "FooBean")
+    private final Foo foo;
+
+    @Resource(name = "count")
+    private final int count;
+
+    @Resource
+    private final DataSource ds;
+
+    public WidgetBean(Integer count, Foo foo, DataSource ds) {
+        this.count = count;
+        this.foo = foo;
+        this.ds = ds;
+    }
+
+    public int getCount() {
+        return count;
+    }
+
+    public Foo getFoo() {
+        return foo;
+    }
+}
+{code}
+
+The @EJB, @Resource, @PersistenceUnit, and @PersistenceContext annotations can be placed at the class-level instead such as:
+
+{code}
+@Stateless
+@EJB(name = "foo", beanInterface = Foo.class, beanName = "FooBean")
+@Resource(name = "count", type = int.class)
+@Resource(name = "ds", type = DataSource.class)
+public class WidgetBean implements Widget {
+
+    public WidgetBean(Integer count, Foo foo, DataSource ds) {
+       // do something
+    }
+
+    public int getCount() {
+        return count;
+    }
+
+    public Foo getFoo() {
+        return foo;
+    }
+}
+{code}
+
+
+Currently this functionality relies on classes being compiled with debug symbols (the default compile setting for javac) as we use the debug table in the byte code to discover the constructor arg names.  Additionally, you must not have a no-arg constructor.  If a no-arg constructor is present, that constructor will be used instead.
+
+Ideally, we would like the annotations to be used on the parameters directly as shown below.  Unfortunately, this does not work as the Java EE annotation classes do not permit usage on parameters.  If you'd like to see that change as much as we do, definitely voice your support by sending note to [jsr-316-comments@jcp.org|mailto:jsr-316-comments@jcp.org]
+
+
+{code:title=Not yet possible}
+@Stateless
+
+public class WidgetBean implements Widget {
+
+    public WidgetBean(@Resource(name = "count") Integer count, @EJB Foo foo, @Resource DataSource ds) {
+       // do something
+    }
+
+    public int getCount() {
+        return count;
+    }
+
+    public Foo getFoo() {
+        return foo;
+    }
+}
+{code}
+
+

Added: websites/staging/openejb/trunk/content/constructor-injection.html
==============================================================================
--- websites/staging/openejb/trunk/content/constructor-injection.html (added)
+++ websites/staging/openejb/trunk/content/constructor-injection.html Sun Jul 10 05:37:04 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>Constructor Injection</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>For those of you who would like to use final fields, wish to avoid numerous
+setters, or dislike private field injection and would like nothing more
+than to just use plan old java constructors, your wish has come true.  This
+is a feature we intended to add to OpenEJB 3.0 but didn't have time for. 
+We're happy to bring it to the OpenEJB 3.1 release and with a bit of luck
+and support from people like yourself, we'll see this as an EJB 3.1 feature
+as well.</p>
+
+<pre><code>@Stateless
+public class WidgetBean implements Widget {
+
+    @EJB(beanName = "FooBean")
+    private final Foo foo;
+
+    @Resource(name = "count")
+    private final int count;
+
+    @Resource
+    private final DataSource ds;
+
+    public WidgetBean(Integer count, Foo foo, DataSource ds) {
+    this.count = count;
+    this.foo = foo;
+    this.ds = ds;
+    }
+
+    public int getCount() {
+    return count;
+    }
+
+    public Foo getFoo() {
+    return foo;
+    }
+}
+</code></pre>
+
+<p>The @EJB, @Resource, @PersistenceUnit, and @PersistenceContext annotations
+can be placed at the class-level instead such as:</p>
+
+<pre><code>@Stateless
+@EJB(name = "foo", beanInterface = Foo.class, beanName = "FooBean")
+@Resource(name = "count", type = int.class)
+@Resource(name = "ds", type = DataSource.class)
+public class WidgetBean implements Widget {
+
+    public WidgetBean(Integer count, Foo foo, DataSource ds) {
+       // do something
+    }
+
+    public int getCount() {
+    return count;
+    }
+
+    public Foo getFoo() {
+    return foo;
+    }
+}
+</code></pre>
+
+<p>Currently this functionality relies on classes being compiled with debug
+symbols (the default compile setting for javac) as we use the debug table
+in the byte code to discover the constructor arg names.  Additionally, you
+must not have a no-arg constructor.  If a no-arg constructor is present,
+that constructor will be used instead.</p>
+
+<p>Ideally, we would like the annotations to be used on the parameters
+directly as shown below.  Unfortunately, this does not work as the Java EE
+annotation classes do not permit usage on parameters.  If you'd like to see
+that change as much as we do, definitely voice your support by sending note
+to <a href="mailto:jsr-316-comments@jcp.org.html">jsr-316-comments@jcp.org</a></p>
+
+<p><DIV class="code panel" style="border-style: solid;border-width: 1px;"><DIV class="codeHeader panelHeader" style="border-bottom-width: 1px;border-bottom-style: solid;"><B>Not yet possible</B></DIV><DIV class="codeContent panelContent">
+    @Stateless</p>
+
+<pre><code>public class WidgetBean implements Widget {
+
+    public WidgetBean(@Resource(name = "count") Integer count, @EJB Foo
+</code></pre>
+
+<p>foo, @Resource DataSource ds) {
+           // do something
+        }</p>
+
+<pre><code>    public int getCount() {
+    return count;
+    }
+
+    public Foo getFoo() {
+    return foo;
+    }
+}
+</code></pre>
+
+        </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/containers-and-resources.cwiki
==============================================================================
--- websites/staging/openejb/trunk/content/containers-and-resources.cwiki (added)
+++ websites/staging/openejb/trunk/content/containers-and-resources.cwiki Sun Jul 10 05:37:04 2011
@@ -0,0 +1,218 @@
+{anchor: containers}
+h1. Containers
+{anchor:Default CMP Container-container}
+h2. CMP_ENTITY
+Declarable in openejb.xml via
+{code:xml}
+<Container id="Foo" type="CMP_ENTITY">
+</Container>
+{code}
+Declarable in properties via
+{panel}
+Foo = new://Container?type=CMP_ENTITY
+{panel}
+Supports the following properties
+    || Property Name || Description ||
+    | CmpEngineFactory | Default value is _org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory_.||
+
+{anchor:Default BMP Container-container}
+h2. BMP_ENTITY
+Declarable in openejb.xml via
+{code:xml}
+<Container id="Foo" type="BMP_ENTITY">
+</Container>
+{code}
+Declarable in properties via
+{panel}
+Foo = new://Container?type=BMP_ENTITY
+{panel}
+Supports the following properties
+    || Property Name || Description ||
+    | PoolSize | Specifies the size of the bean pools for this\\ bmp entity container.\\ \\ Default value is _10_.||
+
+{anchor:Default Stateless Container-container}
+h2. STATELESS
+Declarable in openejb.xml via
+{code:xml}
+<Container id="Foo" type="STATELESS">
+</Container>
+{code}
+Declarable in properties via
+{panel}
+Foo = new://Container?type=STATELESS
+{panel}
+Supports the following properties
+    || Property Name || Description ||
+    | TimeOut | Specifies the time to wait between invocations. This\\ value is measured in milliseconds. A value of 5 would\\ result in a time\-out of 5 milliseconds between invocations.\\ A value of zero would mean no timeout.\\ \\ Default value is _0_.||
+    | PoolSize | Specifies the size of the bean pools for this\\ stateless SessionBean container.\\ \\ Default value is _10_.||
+    | StrictPooling | StrictPooling tells the container what to do when the pool\\ reaches it's maximum size and there are incoming requests\\ that need instances.\\ \\ With strict pooling, requests will have to wait for instances\\ to become available. The pool size will never grow beyond the\\ the set PoolSize value.\\ \\ Without strict pooling, the container will create temporary\\ instances to meet demand. The instances will last for just one\\ method invocation and then are removed.\\ \\ Default value is _true_.||
+
+{anchor:Default Stateful Container-container}
+h2. STATEFUL
+Declarable in openejb.xml via
+{code:xml}
+<Container id="Foo" type="STATEFUL">
+</Container>
+{code}
+Declarable in properties via
+{panel}
+Foo = new://Container?type=STATEFUL
+{panel}
+Supports the following properties
+    || Property Name || Description ||
+    | Passivator | The passivator is responsible for writing beans to disk\\ at passivation time. Different passivators can be used\\ by setting this property to the fully qualified class name\\ of the PassivationStrategy implementation. The passivator\\ is not responsible for invoking any callbacks or other\\ processing, its only responsibly is to write the bean state\\ to disk.\\ \\ Known implementations:\\ org.apache.openejb.core.stateful.RAFPassivater\\ org.apache.openejb.core.stateful.SimplePassivater\\ \\ Default value is _org.apache.openejb.core.stateful.SimplePassivater_.||
+    | TimeOut | Specifies the time to wait between invocations. This\\ value is measured in minutes. A value of 5 would\\ result in a time\-out of 5 minutes between invocations.\\ A value of zero would mean no timeout.\\ \\ Default value is _20_.||
+    | PoolSize | Specifies the size of the bean pools for this\\ stateful SessionBean container.\\ \\ Default value is _1000_.||
+    | BulkPassivate | Property name that specifies the number of instances\\ to passivate at one time when doing bulk passivation.\\ \\ Default value is _100_.||
+
+{anchor:Default MDB Container-container}
+h2. MESSAGE
+Declarable in openejb.xml via
+{code:xml}
+<Container id="Foo" type="MESSAGE">
+</Container>
+{code}
+Declarable in properties via
+{panel}
+Foo = new://Container?type=MESSAGE
+{panel}
+Supports the following properties
+    || Property Name || Description ||
+    | ResourceAdapter | The resource adapter delivers messages to the container\\ \\ Default value is _Default JMS Resource Adapter_.||
+    | MessageListenerInterface | Specifies the message listener interface handled by this container\\ \\ Default value is _javax.jms.MessageListener_.||
+    | ActivationSpecClass | Specifies the activation spec class\\ \\ Default value is _org.apache.activemq.ra.ActiveMQActivationSpec_.||
+    | InstanceLimit | Specifies the maximum number of bean instances that are\\ allowed to exist for each MDB deployment.\\ \\ Default value is _10_.||
+
+
+{anchor: resources}
+h1. Resources
+{anchor:Default JDBC Database-resource}
+h2. javax.sql.DataSource
+Declarable in openejb.xml via
+{code:xml}
+<Resource id="Foo" type="javax.sql.DataSource">
+</Resource>
+{code}
+Declarable in properties via
+{panel}
+Foo = new://Resource?type=javax.sql.DataSource
+{panel}
+Supports the following properties
+    || Property Name || Description ||
+    | JtaManaged | Determines wether or not this data source should be JTA managed\\ or user managed.{html}&nbsp;&nbsp;{html}If set to 'true' it will automatically be enrolled\\ in any ongoing transactions.{html}&nbsp;&nbsp;{html}Calling begin/commit/rollback or setAutoCommit\\ on the datasource or connection will not be allowed.{html}&nbsp;&nbsp;{html}If you need to perform\\ these functions yourself, set JtaManaged to 'false'\\ \\ In terms of JPA persistence.xml:\\ "JtaManaged=true" can be used as a 'jta\-data\-source'\\ "JtaManaged=false" can be used as a 'non\-jta\-data\-source'\\ \\ Default value is _true_.||
+    | JdbcDriver | Driver class name\\ \\ Default value is _org.hsqldb.jdbcDriver_.||
+    | JdbcUrl | Url for creating connections\\ \\ Default value is _jdbc:hsqldb:{html}file:{html}data/hsqldb/hsqldb_.||
+    | UserName | Default user name\\ \\ Default value is _sa_.||
+    | Password | Default password|
+    | ConnectionProperties | The connection properties that will be sent to the JDBC\\ driver when establishing new connections\\ \\ Format of the string must be \[propertyName=property;\]\*\\ \\ NOTE \- The "user" and "password" properties will be passed\\ explicitly, so they do not need to be included here.|
+    | DefaultAutoCommit | The default auto\-commit state of new connections\\ \\ Default value is _true_.||
+    | DefaultReadOnly | The default read\-only state of new connections\\ If not set then the setReadOnly method will not be called.\\ \(Some drivers don't support read only mode, ex: Informix\)|
+    | DefaultTransactionIsolation | The default TransactionIsolation state of new connections\\ If not set then the setTransactionIsolation method will not\\ be called. The allowed values for this property are:\\{html}&nbsp;&nbsp;&nbsp;&nbsp;{html} NONE\\{html}&nbsp;&nbsp;&nbsp;&nbsp;{html} READ\_COMMITTED\\{html}&nbsp;&nbsp;&nbsp;&nbsp;{html} READ\_UNCOMMITTED\\{html}&nbsp;&nbsp;&nbsp;&nbsp;{html} REPEATABLE\_READ\\{html}&nbsp;&nbsp;&nbsp;&nbsp;{html} SERIALIZABLE\\ \\ Note: Most JDBC drivers do not support all isolation levels|
+    | InitialSize | The initial number of connections that are created when the\\ pool is started\\ \\ Default value is _0_.||
+    | MaxActive | The maximum number of active connections that can be\\ allocated from this pool at the same time, or a negative\\ number for no limit.\\ \\ Default value is _20_.||
+    | MaxIdle | The maximum number of connections that can remain idle in\\ the pool, without extra ones being released, or a negative\\ number for no limit.\\ \\ Default value is _20_.||
+    | MinIdle | The minimum number of connections that can remain idle in\\ the pool, without extra ones being created, or zero to\\ create none.\\ \\ Default value is _0_.||
+    | MaxWait | The maximum number of milliseconds that the pool will wait\\ \(when there are no available connections\) for a connection\\ to be returned before throwing an exception, or \-1 to wait\\ indefinitely.\\ \\ Default value is _\-1_.||
+    | ValidationQuery | The SQL query that will be used to validate connections from\\ this pool before returning them to the caller. If specified,\\ this query MUST be an SQL SELECT statement that returns at\\ least one row.|
+    | TestOnBorrow | If true connections will be validated before being returned\\ from the pool. If the validation fails, the connection is\\ destroyed, and a new conection will be retrieved from the\\ pool \(and validated\).\\ \\ NOTE \- for a true value to have any effect, the\\ ValidationQuery parameter must be set.\\ \\ Default value is _true_.||
+    | TestOnReturn | If true connections will be validated before being returned\\ to the pool.{html}&nbsp;&nbsp;{html}If the validation fails, the connection is\\ destroyed instead of being returned to the pool.\\ \\ NOTE \- for a true value to have any effect, the\\ ValidationQuery parameter must be set.\\ \\ Default value is _false_.||
+    | TestWhileIdle | If true connections will be validated by the idle connection\\ evictor \(if any\). If the validation fails, the connection is\\ destroyed and removed from the pool\\ \\ NOTE \- for a true value to have any effect, the\\ timeBetweenEvictionRunsMillis property must be a positive\\ number and the ValidationQuery parameter must be set.\\ \\ Default value is _false_.||
+    | TimeBetweenEvictionRunsMillis | The number of milliseconds to sleep between runs of the idle\\ connection evictor thread. When set to a negative number, no\\ idle connection evictor thread will be run.\\ \\ Default value is _\-1_.||
+    | NumTestsPerEvictionRun | The number of connectionss to examine during each run of the\\ idle connection evictor thread \(if any\).\\ \\ Default value is _3_.||
+    | MinEvictableIdleTimeMillis | The minimum amount of time a connection may sit idle in the\\ pool before it is eligable for eviction by the idle\\ connection evictor \(if any\).\\ \\ Default value is _1800000_.||
+    | PoolPreparedStatements | If true, a statement pool is created for each Connection and\\ PreparedStatements created by one of the following methods are\\ pooled:\\{html}&nbsp;&nbsp;&nbsp;&nbsp;{html}public PreparedStatement prepareStatement\(String sql\);\\{html}&nbsp;&nbsp;&nbsp;&nbsp;{html}public PreparedStatement prepareStatement\(String sql,\\{html}&nbsp;&nbsp;&nbsp;&nbsp;{html}{html}&nbsp;&nbsp;&nbsp;&nbsp;{html}{html}&nbsp;&nbsp;&nbsp;&nbsp;{html}int resultSetType,\\{html}&nbsp;&nbsp;&nbsp;&nbsp;{html}{html}&nbsp;&nbsp;&nbsp;&nbsp;{html}{html}&nbsp;&nbsp;&nbsp;&nbsp;{html}int resultSetConcurrency\)\\ \\ Default value is _false_.||
+    | MaxOpenPreparedStatements | The maximum number of open statements that can be allocated\\ from the statement pool at the same time, or zero for no\\ limit.\\ \\ NOTE \- Some drivers have limits on the number of open\\ statements, so make sure there are some resources left\\ for the other \(non\-prepared\) statements.\\ \\ Default value is _0_.||
+    | AccessToUnderlyingConnectionAllowed | If true the raw physical connection to the database can be\\ accessed using the following construct:\\{html}&nbsp;&nbsp;&nbsp;&nbsp;{html} Connection conn = ds.getConnection\(\);\\{html}&nbsp;&nbsp;&nbsp;&nbsp;{html} Connection rawConn = \(\(DelegatingConnection\) conn\).getInnermostDelegate\(\);\\{html}&nbsp;&nbsp;&nbsp;&nbsp;{html} ...\\{html}&nbsp;&nbsp;&nbsp;&nbsp;{html} conn.close\(\)\\ \\ Default is false, because misbehaving programs can do harmfull\\ things to the raw connection shuch as closing the raw\\ connection or continuing to use the raw connection after it\\ has been assigned to another logical connection.{html}&nbsp;&nbsp;{html}Be carefull\\ and only use when you need direct access to driver specific\\ extentions.\\ \\ NOTE: Do NOT close the underlying connection, only the\\ original logical connection wrapper.\\ \\ Default value is _false_.||
+
+{anchor:Default JMS Resource Adapter-resource}
+h2. ActiveMQResourceAdapter
+Declarable in openejb.xml via
+{code:xml}
+<Resource id="Foo" type="ActiveMQResourceAdapter">
+</Resource>
+{code}
+Declarable in properties via
+{panel}
+Foo = new://Resource?type=ActiveMQResourceAdapter
+{panel}
+Supports the following properties
+    || Property Name || Description ||
+    | BrokerXmlConfig | Broker configuration\\ \\ Default value is _broker:\(tcp://localhost:61616\)\?useJmx=false_.||
+    | ServerUrl | Broker address\\ \\ Default value is _vm://localhost\?async=true_.||
+    | DataSource | DataSource for persistence messages\\ \\ Default value is _Default Unmanaged JDBC Database_.||
+
+{anchor:Default JMS Connection Factory-resource}
+h2. javax.jms.ConnectionFactory
+Declarable in openejb.xml via
+{code:xml}
+<Resource id="Foo" type="javax.jms.ConnectionFactory">
+</Resource>
+{code}
+Declarable in properties via
+{panel}
+Foo = new://Resource?type=javax.jms.ConnectionFactory
+{panel}
+Supports the following properties
+    || Property Name || Description ||
+    | ResourceAdapter | Default value is _Default JMS Resource Adapter_.||
+    | TransactionSupport | Specifies if the connection is enrolled in global transaction\\ allowed values: xa, local or none\\ \\ Default value is _xa_.||
+    | PoolMaxSize | Maximum number of physical connection to the ActiveMQ broker\\ \\ Default value is _10_.||
+    | PoolMinSize | Minimum number of physical connection to the ActiveMQ broker\\ \\ Default value is _0_.||
+    | ConnectionMaxWaitMilliseconds | Maximum amount of time to wait for a connection\\ \\ Default value is _5000_.||
+    | ConnectionMaxIdleMinutes | Maximum amount of time a connection can be idle before being reclaimed\\ \\ Default value is _15_.||
+
+{anchor:Default Queue-resource}
+h2. javax.jms.Queue
+Declarable in openejb.xml via
+{code:xml}
+<Resource id="Foo" type="javax.jms.Queue">
+</Resource>
+{code}
+Declarable in properties via
+{panel}
+Foo = new://Resource?type=javax.jms.Queue
+{panel}
+Supports the following properties
+    || Property Name || Description ||
+    | destination | Specifies the name of the queue|
+
+{anchor:Default Topic-resource}
+h2. javax.jms.Topic
+Declarable in openejb.xml via
+{code:xml}
+<Resource id="Foo" type="javax.jms.Topic">
+</Resource>
+{code}
+Declarable in properties via
+{panel}
+Foo = new://Resource?type=javax.jms.Topic
+{panel}
+Supports the following properties
+    || Property Name || Description ||
+    | destination | Specifies the name of the topic|
+
+{anchor:Default ORB-resource}
+h2. org.omg.CORBA.ORB
+Declarable in openejb.xml via
+{code:xml}
+<Resource id="Foo" type="org.omg.CORBA.ORB">
+</Resource>
+{code}
+Declarable in properties via
+{panel}
+Foo = new://Resource?type=org.omg.CORBA.ORB
+{panel}
+No properties.
+
+{anchor:Default Mail Session-resource}
+h2. javax.mail.Session
+Declarable in openejb.xml via
+{code:xml}
+<Resource id="Foo" type="javax.mail.Session">
+</Resource>
+{code}
+Declarable in properties via
+{panel}
+Foo = new://Resource?type=javax.mail.Session
+{panel}
+No properties.
\ No newline at end of file

Added: websites/staging/openejb/trunk/content/containers-and-resources.html
==============================================================================
--- websites/staging/openejb/trunk/content/containers-and-resources.html (added)
+++ websites/staging/openejb/trunk/content/containers-and-resources.html Sun Jul 10 05:37:04 2011
@@ -0,0 +1,318 @@
+<!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>Containers and Resources</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>{anchor: containers}
+<a name="ContainersandResources-Containers"></a></p>
+
+<h1>Containers</h1>
+
+<p>{anchor:Default CMP Container-container}
+<a name="ContainersandResources-CMP_ENTITY"></a></p>
+
+<h2>CMP_ENTITY</h2>
+
+<p>Declarable in openejb.xml via</p>
+
+<pre><code>&lt;Container id="Foo" type="CMP_ENTITY"&gt;
+&lt;/Container&gt;
+</code></pre>
+
+<p>Declarable in properties via
+{panel}
+Foo = new://Container?type=CMP_ENTITY
+{panel}
+Supports the following properties
+    || Property Name || Description ||
+    | CmpEngineFactory | Default value is
+<em>org.apache.openejb.core.cmp.jpa.JpaCmpEngineFactory</em>.||</p>
+
+<p>{anchor:Default BMP Container-container}
+<a name="ContainersandResources-BMP_ENTITY"></a></p>
+
+<h2>BMP_ENTITY</h2>
+
+<p>Declarable in openejb.xml via</p>
+
+<pre><code>&lt;Container id="Foo" type="BMP_ENTITY"&gt;
+&lt;/Container&gt;
+</code></pre>
+
+<p>Declarable in properties via
+{panel}
+Foo = new://Container?type=BMP_ENTITY
+{panel}
+Supports the following properties
+    || Property Name || Description ||</p>
+
+<p>{anchor:Default Stateless Container-container}
+<a name="ContainersandResources-STATELESS"></a></p>
+
+<h2>STATELESS</h2>
+
+<p>Declarable in openejb.xml via</p>
+
+<pre><code>&lt;Container id="Foo" type="STATELESS"&gt;
+&lt;/Container&gt;
+</code></pre>
+
+<p>Declarable in properties via
+{panel}
+Foo = new://Container?type=STATELESS
+{panel}
+Supports the following properties
+    || Property Name || Description ||</p>
+
+<p>{anchor:Default Stateful Container-container}
+<a name="ContainersandResources-STATEFUL"></a></p>
+
+<h2>STATEFUL</h2>
+
+<p>Declarable in openejb.xml via</p>
+
+<pre><code>&lt;Container id="Foo" type="STATEFUL"&gt;
+&lt;/Container&gt;
+</code></pre>
+
+<p>Declarable in properties via
+{panel}
+Foo = new://Container?type=STATEFUL
+{panel}
+Supports the following properties
+    || Property Name || Description ||</p>
+
+<p>{anchor:Default MDB Container-container}
+<a name="ContainersandResources-MESSAGE"></a></p>
+
+<h2>MESSAGE</h2>
+
+<p>Declarable in openejb.xml via</p>
+
+<pre><code>&lt;Container id="Foo" type="MESSAGE"&gt;
+&lt;/Container&gt;
+</code></pre>
+
+<p>Declarable in properties via
+{panel}
+Foo = new://Container?type=MESSAGE
+{panel}
+Supports the following properties
+    || Property Name || Description ||</p>
+
+<p>{anchor: resources}
+<a name="ContainersandResources-Resources"></a></p>
+
+<h1>Resources</h1>
+
+<p>{anchor:Default JDBC Database-resource}
+<a name="ContainersandResources-javax.sql.DataSource"></a></p>
+
+<h2>javax.sql.DataSource</h2>
+
+<p>Declarable in openejb.xml via</p>
+
+<pre><code>&lt;Resource id="Foo" type="javax.sql.DataSource"&gt;
+&lt;/Resource&gt;
+</code></pre>
+
+<p>Declarable in properties via
+{panel}
+Foo = new://Resource?type=javax.sql.DataSource
+{panel}
+Supports the following properties
+    || Property Name || Description ||</p>
+
+<pre><code>| Password | Default password|
+</code></pre>
+
+<p>{anchor:Default JMS Resource Adapter-resource}
+<a name="ContainersandResources-ActiveMQResourceAdapter"></a></p>
+
+<h2>ActiveMQResourceAdapter</h2>
+
+<p>Declarable in openejb.xml via</p>
+
+<pre><code>&lt;Resource id="Foo" type="ActiveMQResourceAdapter"&gt;
+&lt;/Resource&gt;
+</code></pre>
+
+<p>Declarable in properties via
+{panel}
+Foo = new://Resource?type=ActiveMQResourceAdapter
+{panel}
+Supports the following properties
+    || Property Name || Description ||</p>
+
+<p>{anchor:Default JMS Connection Factory-resource}
+<a name="ContainersandResources-javax.jms.ConnectionFactory"></a></p>
+
+<h2>javax.jms.ConnectionFactory</h2>
+
+<p>Declarable in openejb.xml via</p>
+
+<pre><code>&lt;Resource id="Foo" type="javax.jms.ConnectionFactory"&gt;
+&lt;/Resource&gt;
+</code></pre>
+
+<p>Declarable in properties via
+{panel}
+Foo = new://Resource?type=javax.jms.ConnectionFactory
+{panel}
+Supports the following properties
+    || Property Name || Description ||
+    | ResourceAdapter | Default value is <em>Default JMS Resource Adapter</em>.||</p>
+
+<p>{anchor:Default Queue-resource}
+<a name="ContainersandResources-javax.jms.Queue"></a></p>
+
+<h2>javax.jms.Queue</h2>
+
+<p>Declarable in openejb.xml via</p>
+
+<pre><code>&lt;Resource id="Foo" type="javax.jms.Queue"&gt;
+&lt;/Resource&gt;
+</code></pre>
+
+<p>Declarable in properties via
+{panel}
+Foo = new://Resource?type=javax.jms.Queue
+{panel}
+Supports the following properties
+    || Property Name || Description ||
+    | destination | Specifies the name of the queue|</p>
+
+<p>{anchor:Default Topic-resource}
+<a name="ContainersandResources-javax.jms.Topic"></a></p>
+
+<h2>javax.jms.Topic</h2>
+
+<p>Declarable in openejb.xml via</p>
+
+<pre><code>&lt;Resource id="Foo" type="javax.jms.Topic"&gt;
+&lt;/Resource&gt;
+</code></pre>
+
+<p>Declarable in properties via
+{panel}
+Foo = new://Resource?type=javax.jms.Topic
+{panel}
+Supports the following properties
+    || Property Name || Description ||
+    | destination | Specifies the name of the topic|</p>
+
+<p>{anchor:Default ORB-resource}
+<a name="ContainersandResources-org.omg.CORBA.ORB"></a></p>
+
+<h2>org.omg.CORBA.ORB</h2>
+
+<p>Declarable in openejb.xml via</p>
+
+<pre><code>&lt;Resource id="Foo" type="org.omg.CORBA.ORB"&gt;
+&lt;/Resource&gt;
+</code></pre>
+
+<p>Declarable in properties via
+{panel}
+Foo = new://Resource?type=org.omg.CORBA.ORB
+{panel}
+No properties.</p>
+
+<p>{anchor:Default Mail Session-resource}
+<a name="ContainersandResources-javax.mail.Session"></a></p>
+
+<h2>javax.mail.Session</h2>
+
+<p>Declarable in openejb.xml via</p>
+
+<pre><code>&lt;Resource id="Foo" type="javax.mail.Session"&gt;
+&lt;/Resource&gt;
+</code></pre>
+
+<p>Declarable in properties via
+{panel}
+Foo = new://Resource?type=javax.mail.Session
+{panel}
+No properties.</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/custom-injection.cwiki
==============================================================================
--- websites/staging/openejb/trunk/content/custom-injection.cwiki (added)
+++ websites/staging/openejb/trunk/content/custom-injection.cwiki Sun Jul 10 05:37:04 2011
@@ -0,0 +1,78 @@
+h1. Overview
+
+As noted in the [Injection of env-entry Example], the EJB 3.0 supported env-entry types are fairly limited.  Also the use of several <env-entry> tags in an ejb-jar.xml can get a bit verbose.
+
+OpenEJB does not restrict you to just these data types or require you to use an ejb-jar.xml to declare them.
+
+ - *@Resource* can be used on any type for which there is *java.beans.PropertyEditor*
+ - You may *install your own* PropertyEditors and package them with your app.
+ - Java *Generics* are supported (e.g. List<URI> myURIs) 
+ - You may use a *META-INF/env-entries.properties* file as an alternative to an ejb-jar.xml
+
+See [Built-in Type Converters] for a full list of supported env-entry types.
+
+_The source for this example is the "custom-injection" directory located in the [openejb-examples.zip|OPENEJB:Download] available on the download page._
+
+h1. The Code
+
+h2. Bean Class
+
+{snippet:id=code|url=openejb3/examples/custom-injection/src/main/java/org/superbiz/enventries/StratocasterImpl.java|lang=java}
+
+h2. The META-INF/env-entries.properties file
+
+{snippet:id=code|url=openejb3/examples/custom-injection/src/main/resources/META-INF/env-entries.properties|id=props|lang=none}
+
+h2. The Custom Type and Editor
+
+Support for java.lang.Enum types is already built-in, but we've decided we'd like to allow abbreviated versions of the enum constants to be usable.  We do this by creating a custom PropertyEditor for our Pickup enum like so:
+
+{snippet:id=code|url=openejb3/examples/custom-injection/src/main/java/org/superbiz/enventries/PickupEditor.java|lang=java}
+
+We cleverly install this PropertyEditor in a static block in the Pickup class that will be executed should someone actually reference the Pickup type.
+
+{snippet:id=code|url=openejb3/examples/custom-injection/src/main/java/org/superbiz/enventries/Pickup.java|lang=java}
+
+h1. Test Case
+
+{snippet:id=code|url=openejb3/examples/custom-injection/src/test/java/org/superbiz/enventries/StratocasterTest.java|lang=java}
+
+h1. Running it
+
+Running the example is fairly simple.  In the "custom-injection" directory of the [examples zip|OPENEJB:Download], just run:
+
+{quote}
+$ mvn clean install
+{quote}
+
+Which should create output like the following.
+
+{noformat}
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.enventries.StratocasterTest
+Apache OpenEJB 3.1-SNAPSHOT    build: 20080409-12:05
+http://openejb.apache.org/
+INFO - openejb.home = /Users/dblevins/work/openejb3/examples/custom-injection
+INFO - openejb.base = /Users/dblevins/work/openejb3/examples/custom-injection
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=Default JDK 1.3 ProxyFactory, type=ProxyFactory, provider-id=Default JDK 1.3 ProxyFactory)
+INFO - Found EjbModule in classpath: /Users/dblevins/work/openejb3/examples/custom-injection/target/classes
+INFO - Configuring app: /Users/dblevins/work/openejb3/examples/custom-injection/target/classes
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean StratocasterImpl: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Loaded Module: /Users/dblevins/work/openejb3/examples/custom-injection/target/classes
+INFO - Assembling app: /Users/dblevins/work/openejb3/examples/custom-injection/target/classes
+INFO - Jndi(name=StratocasterImplLocal) --> Ejb(deployment-id=StratocasterImpl)
+INFO - Created Ejb(deployment-id=StratocasterImpl, ejb-name=StratocasterImpl, container=Default Stateless Container)
+INFO - Deployed Application(path=/Users/dblevins/work/openejb3/examples/custom-injection/target/classes)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.705 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+{noformat}
+
+

Added: websites/staging/openejb/trunk/content/custom-injection.html
==============================================================================
--- websites/staging/openejb/trunk/content/custom-injection.html (added)
+++ websites/staging/openejb/trunk/content/custom-injection.html Sun Jul 10 05:37:04 2011
@@ -0,0 +1,210 @@
+<!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>Custom Injection</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="CustomInjection-Overview"></a></p>
+
+<h1>Overview</h1>
+
+<p>As noted in the <a href="injection-of-env-entry-example.html">Injection of env-entry Example</a>
+, the EJB 3.0 supported env-entry types are fairly limited.  Also the use
+of several <env-entry> tags in an ejb-jar.xml can get a bit verbose.</p>
+
+<p>OpenEJB does not restrict you to just these data types or require you to
+use an ejb-jar.xml to declare them.</p>
+
+<ul>
+<li><em>@Resource</em> can be used on any type for which there is
+<em>java.beans.PropertyEditor</em></li>
+<li>You may <em>install your own</em> PropertyEditors and package them with your
+app.</li>
+<li>Java <em>Generics</em> are supported (e.g. List<URI> myURIs) </li>
+<li>You may use a <em>META-INF/env-entries.properties</em> file as an alternative
+to an ejb-jar.xml</li>
+</ul>
+
+<p>See <a href="built-in-type-converters.html">Built-in Type Converters</a>
+ for a full list of supported env-entry types.</p>
+
+<p><em>The source for this example is the "custom-injection" directory located in
+the <a href="openejb:download.html">openejb-examples.zip</a>
+ available on the download page.</em></p>
+
+<p><a name="CustomInjection-TheCode"></a></p>
+
+<h1>The Code</h1>
+
+<p><a name="CustomInjection-BeanClass"></a></p>
+
+<h2>Bean Class</h2>
+
+<p>{snippet:id=code|url=openejb3/examples/custom-injection/src/main/java/org/superbiz/enventries/StratocasterImpl.java|lang=java}</p>
+
+<p><a name="CustomInjection-TheMETA-INF/env-entries.propertiesfile"></a></p>
+
+<h2>The META-INF/env-entries.properties file</h2>
+
+<p>{snippet:id=code|url=openejb3/examples/custom-injection/src/main/resources/META-INF/env-entries.properties|id=props|lang=none}</p>
+
+<p><a name="CustomInjection-TheCustomTypeandEditor"></a></p>
+
+<h2>The Custom Type and Editor</h2>
+
+<p>Support for java.lang.Enum types is already built-in, but we've decided
+we'd like to allow abbreviated versions of the enum constants to be usable.
+ We do this by creating a custom PropertyEditor for our Pickup enum like
+so:</p>
+
+<p>{snippet:id=code|url=openejb3/examples/custom-injection/src/main/java/org/superbiz/enventries/PickupEditor.java|lang=java}</p>
+
+<p>We cleverly install this PropertyEditor in a static block in the Pickup
+class that will be executed should someone actually reference the Pickup
+type.</p>
+
+<p>{snippet:id=code|url=openejb3/examples/custom-injection/src/main/java/org/superbiz/enventries/Pickup.java|lang=java}</p>
+
+<p><a name="CustomInjection-TestCase"></a></p>
+
+<h1>Test Case</h1>
+
+<p>{snippet:id=code|url=openejb3/examples/custom-injection/src/test/java/org/superbiz/enventries/StratocasterTest.java|lang=java}</p>
+
+<p><a name="CustomInjection-Runningit"></a></p>
+
+<h1>Running it</h1>
+
+<p>Running the example is fairly simple.  In the "custom-injection" directory
+of the <a href="openejb:download.html">examples zip</a>
+, just run:</p>
+
+<p>{quote}
+$ mvn clean install
+{quote}</p>
+
+<p>Which should create output like the following.</p>
+
+<pre><code>-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.enventries.StratocasterTest
+Apache OpenEJB 3.1-SNAPSHOT    build: 20080409-12:05
+http://openejb.apache.org/
+INFO - openejb.home =
+</code></pre>
+
+<p>/Users/dblevins/work/openejb3/examples/custom-injection
+    INFO - openejb.base =
+/Users/dblevins/work/openejb3/examples/custom-injection
+    INFO - Configuring Service(id=Default Security Service,
+type=SecurityService, provider-id=Default Security Service)
+    INFO - Configuring Service(id=Default Transaction Manager,
+type=TransactionManager, provider-id=Default Transaction Manager)
+    INFO - Configuring Service(id=Default JDK 1.3 ProxyFactory,
+type=ProxyFactory, provider-id=Default JDK 1.3 ProxyFactory)
+    INFO - Found EjbModule in classpath:
+/Users/dblevins/work/openejb3/examples/custom-injection/target/classes
+    INFO - Configuring app:
+/Users/dblevins/work/openejb3/examples/custom-injection/target/classes
+    INFO - Configuring Service(id=Default Stateless Container, type=Container,
+provider-id=Default Stateless Container)
+    INFO - Auto-creating a container for bean StratocasterImpl:
+Container(type=STATELESS, id=Default Stateless Container)
+    INFO - Loaded Module:
+/Users/dblevins/work/openejb3/examples/custom-injection/target/classes
+    INFO - Assembling app:
+/Users/dblevins/work/openejb3/examples/custom-injection/target/classes
+    INFO - Jndi(name=StratocasterImplLocal) -->
+Ejb(deployment-id=StratocasterImpl)
+    INFO - Created Ejb(deployment-id=StratocasterImpl,
+ejb-name=StratocasterImpl, container=Default Stateless Container)
+    INFO - Deployed
+Application(path=/Users/dblevins/work/openejb3/examples/custom-injection/target/classes)
+    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.705 sec</p>
+
+<pre><code>Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+</code></pre>
+
+        </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/datasource-password-encryption.cwiki
==============================================================================
--- websites/staging/openejb/trunk/content/datasource-password-encryption.cwiki (added)
+++ websites/staging/openejb/trunk/content/datasource-password-encryption.cwiki Sun Jul 10 05:37:04 2011
@@ -0,0 +1,96 @@
+{note}Apache OpenEJB 3.1.2 or later required{note}
+h1. Ciphering passwords
+Apache OpenEJB now provides an easy and extensible way to cipher databases passwords. Not that by default, this feature is not activated so plain passwords are used.
+
+h2. Usage
+
+* Default Plain text password example:
+{code:xml}
+<Resource id="MySQL Database" type="DataSource">
+    #  MySQL example
+    #
+    #  This connector will not work until you download the driver at:
+    #  http://www.mysql.com/downloads/api-jdbc-stable.html
+
+    JdbcDriver  com.mysql.jdbc.Driver
+    JdbcUrl     jdbc:mysql://localhost/test
+    UserName    test
+    Password    Passw0rd
+</Resource>
+{code}
+
+* 3DES ciphered password example:
+Note that the built in 3DES implementation uses *a static key* to encode/decode your password.
+{code:xml}
+<Resource id="MySQL Database" type="DataSource">
+    #  MySQL example
+    #
+    #  This connector will not work until you download the driver at:
+    #  http://www.mysql.com/downloads/api-jdbc-stable.html
+
+    JdbcDriver  com.mysql.jdbc.Driver
+    JdbcUrl     jdbc:mysql://localhost/test
+    UserName    test
+
+    # ciphered value for Passw0rd using Static3DES codec is xMH5uM1V9vQzVUv5LG7YLA==
+    Password    xMH5uM1V9vQzVUv5LG7YLA==
+    PasswordCipher Static3DES
+</Resource>
+{code}
+
+{tip:title=Hint}
+You can plug your own algorithm to extend Apache OpenEJB built in ones. To do such, you just need to implement the 
+{noformat}org.apache.openejb.resource.jdbc.PasswordCipher{noformat} interface and push a file in {noformat}META-INF/org.apache.openejb.resource.jdbc.PasswordCipher/<your cipher algorithm alias>{noformat} containing the fully qualified name of your implementation.
+{tip}
+
+h2. Command line tool
+Apache OpenEJB also provides a command line tool allowing password cipher algorithm. Actually, it's useful to get the ciphered value of a plain text value using a given algorithm.
+
+h3. NAME
+
+openejb cipher - OpenEJB Cypher Tool
+
+h3. SYNOPSIS
+
+openejb cipher [#options] <value>
+
+h3. DESCRIPTION
+
+The OpenEJB Cipher tool is an OPTIONAL tool that allows you to use {{PasswordCipher}} algorithm to encode/decode values.
+
+It can be used to deploy into an offline server, however in this scenario it simply copies the archive into the openejb.base/apps directory which is something that can be done manually with a simple copy command or drag and drop.
+
+The OpenEJB Cipher tool can be executed from any directory as long as <OPENEJB_HOME>/bin is in the system PATH. Before running this tool you need to set the environment variable OPENEJB_HOME to the path of the directory where you unpacked the OpenEJB installation. For for the remainder of this document we will assume you unpacked OpenEJB into the directory C:\openejb-3.1.2.
+
+In Windows, the cipher tool can be executed as follows:
+
+{{C:\openejb-3.1.2> bin\openejb cipher --help}}
+
+In UNIX, Linux, or Mac OS X, the cipher tool can be executed as follows:
+
+{{\[user@host openejb-3.1.2]# bin/openejb cipher --help}}
+
+Depending on your OpenEJB version, you may need to change execution bits to make the scripts executable.  You can do this with the following command.
+
+{{\[user@host openejb-3.1.2]# chmod 755 bin/openejb}}
+
+From here on out, it will be assumed that you know how to execute the right openejb script for your operating system and commands will appear in shorthand as show below.
+
+{{openejb cipher --help}}
+
+h3. OPTIONS
+
+|-h, --_help_ |Lists these options and exit.|
+|-c, --_cipher_ |Specifies the password cipher implementation to use (default is Static3DES).|
+|-d, --_decrypt_ |Switches command line tool to decrypt.|
+|-e, --_encrypt_ |Switches command line tool to encrypt (default).|
+
+h3. EXAMPLES
+
+Encrypt a plain password using the default algorithm. 
+{{openejb cipher Passw0rd}}
+
+Output
+{code}
+xMH5uM1V9vQzVUv5LG7YLA==
+{code}

Added: websites/staging/openejb/trunk/content/datasource-password-encryption.html
==============================================================================
--- websites/staging/openejb/trunk/content/datasource-password-encryption.html (added)
+++ websites/staging/openejb/trunk/content/datasource-password-encryption.html Sun Jul 10 05:37:04 2011
@@ -0,0 +1,236 @@
+<!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>DataSource Password Encryption</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>{note}Apache OpenEJB 3.1.2 or later required{note}
+<a name="DataSourcePasswordEncryption-Cipheringpasswords"></a></p>
+
+<h1>Ciphering passwords</h1>
+
+<p>Apache OpenEJB now provides an easy and extensible way to cipher databases
+passwords. Not that by default, this feature is not activated so plain
+passwords are used.</p>
+
+<p><a name="DataSourcePasswordEncryption-Usage"></a></p>
+
+<h2>Usage</h2>
+
+<ul>
+<li><p>Default Plain text password example:</p>
+
+<p><Resource id="MySQL Database" type="DataSource">
+    #  MySQL example
+    #
+    #  This connector will not work until you download the driver at:
+    #  http://www.mysql.com/downloads/api-jdbc-stable.html</p>
+
+<pre><code>JdbcDriver  com.mysql.jdbc.Driver
+JdbcUrl jdbc:mysql://localhost/test
+UserName    test
+Password    Passw0rd
+</code></pre>
+
+<p></Resource></p></li>
+<li><p>3DES ciphered password example:
+Note that the built in 3DES implementation uses <em>a static key</em> to
+encode/decode your password.</p>
+
+<p><Resource id="MySQL Database" type="DataSource">
+    #  MySQL example
+    #
+    #  This connector will not work until you download the driver at:
+    #  http://www.mysql.com/downloads/api-jdbc-stable.html</p>
+
+<pre><code>JdbcDriver  com.mysql.jdbc.Driver
+JdbcUrl jdbc:mysql://localhost/test
+UserName    test
+
+
+# ciphered value for Passw0rd using Static3DES codec is
+</code></pre>
+
+<p>xMH5uM1V9vQzVUv5LG7YLA==
+    Password    xMH5uM1V9vQzVUv5LG7YLA==
+    PasswordCipher Static3DES
+</Resource></p></li>
+</ul>
+
+<p>{tip:title=Hint}
+You can plug your own algorithm to extend Apache OpenEJB built in ones. To
+do such, you just need to implement the </p>
+
+<pre><code>{tip}
+
+h2. Command line tool
+Apache OpenEJB also provides a command line tool allowing password cipher
+</code></pre>
+
+<p>algorithm. Actually, it's useful to get the ciphered value of a plain text
+value using a given algorithm.</p>
+
+<pre><code>h3. NAME
+
+openejb cipher - OpenEJB Cypher Tool
+
+h3. SYNOPSIS
+
+openejb cipher [#options]
+</code></pre>
+
+<p><value></p>
+
+<pre><code>h3. DESCRIPTION
+
+The OpenEJB Cipher tool is an OPTIONAL tool that allows you to use
+</code></pre>
+
+<p>{{PasswordCipher}} algorithm to encode/decode values.</p>
+
+<pre><code>It can be used to deploy into an offline server, however in this scenario
+</code></pre>
+
+<p>it simply copies the archive into the openejb.base/apps directory which is
+something that can be done manually with a simple copy command or drag and
+drop.</p>
+
+<pre><code>The OpenEJB Cipher tool can be executed from any directory as long as
+</code></pre>
+
+<p><OPENEJB_HOME>/bin is in the system PATH. Before running this tool you need
+to set the environment variable OPENEJB_HOME to the path of the directory
+where you unpacked the OpenEJB installation. For for the remainder of this
+document we will assume you unpacked OpenEJB into the directory
+C:\openejb-3.1.2.</p>
+
+<pre><code>In Windows, the cipher tool can be executed as follows:
+
+{{C:\openejb-3.1.2&gt; bin\openejb cipher --help}}
+
+In UNIX, Linux, or Mac OS X, the cipher tool can be executed as follows:
+
+{{\[user@host openejb-3.1.2]
+</code></pre>
+
+<h1>bin/openejb cipher --help}}</h1>
+
+<pre><code>Depending on your OpenEJB version, you may need to change execution bits to
+</code></pre>
+
+<p>make the scripts executable.  You can do this with the following command.</p>
+
+<pre><code>{{\[user@host openejb-3.1.2]
+</code></pre>
+
+<h1>chmod 755 bin/openejb}}</h1>
+
+<pre><code>From here on out, it will be assumed that you know how to execute the right
+</code></pre>
+
+<p>openejb script for your operating system and commands will appear in
+shorthand as show below.</p>
+
+<pre><code>{{openejb cipher --help}}
+
+h3. OPTIONS
+
+|-h, --_help_ |Lists these options and exit.|
+|-c, --_cipher_ |Specifies the password cipher implementation to use
+</code></pre>
+
+<p>(default is Static3DES).|
+    |-d, --<em>decrypt</em> |Switches command line tool to decrypt.|
+    |-e, --<em>encrypt</em> |Switches command line tool to encrypt (default).|</p>
+
+<pre><code>h3. EXAMPLES
+
+Encrypt a plain password using the default algorithm. 
+{{openejb cipher Passw0rd}}
+
+Output
+{code}
+xMH5uM1V9vQzVUv5LG7YLA==
+{code}
+</code></pre>
+
+        </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/deploy-tool.cwiki
==============================================================================
--- websites/staging/openejb/trunk/content/deploy-tool.cwiki (added)
+++ websites/staging/openejb/trunk/content/deploy-tool.cwiki Sun Jul 10 05:37:04 2011
@@ -0,0 +1,97 @@
+h1. NAME
+
+
+openejb deploy - OpenEJB Deploy Tool
+
+h1. SYNOPSIS
+
+
+openejb deploy [#options] <file> \[<file>...\]
+
+h1. NOTE
+
+
+The OpenEJB Deploy tool is an OPTIONAL tool that allows you to deploy into a running server and get feedback as if the app was deployed and how it was deployed (deploymentIds, jndi names, etc.).  
+
+It can be used to deploy into an offline server, however in this scenario it simply copies the archive into the openejb.base/apps directory which is something that can be done manually with a simple copy command or drag and drop.
+
+The OpenEJB Deploy tool can be executed from any directory as long as <OPENEJB_HOME>/bin is in the system PATH. <OPENEJB_HOME> is the directory where OpenEJB was installed or unpacked. For for the remainder of this document we will assume you unpacked OpenEJB into the directory C:\openejb-3.0.
+
+In Windows, the deploy tool can be executed as follows:
+
+{{C:\openejb-3.0> bin\openejb deploy --help}}
+
+In UNIX, Linux, or Mac OS X, the deploy tool can be executed as follows:
+
+{{\[user@host openejb-3.0]# bin/openejb deploy --help}}
+
+Depending on your OpenEJB version, you may need to change execution bits to make the scripts executable.  You can do this with the following command.
+
+{{\[user@host openejb-3.0]# chmod 755 bin/openejb}}
+
+From here on out, it will be assumed that you know how to execute the right openejb script for your operating system and commands will appear in shorthand as show below.
+
+{{openejb deploy --help}}
+
+
+h1. DESCRIPTION
+
+The files passed to the Deploy Tool can be any combination of the following:
+  - ejb 1.1, 2.0, 2.1 or 3.0 jar
+  - application client jar 
+  - ear file containing only libraries, ejbs and application clients -- everything else will be ignored.
+
+Archives ending in *.ear* or containing a META-INF/application.xml are assumed to be ear files.
+
+Archives containing a META-INF/ejb-jar.xml file or any classes annotated with @Stateless, @Stateful or @MessageDriven, are assumed to be *EJB* applications.  EJB applications older that EJB 3.0 should contain a complete META-INF/ejb-jar.xml inside the jar, however we do not strictly enforce that -- the act of it being incomplete makes it an EJB 3.0 application by nature.
+
+Archives containing a META-INF/application-client.xml or with a META-INF/MANIFEST.MF containing the "Main-Class" attribute, are assumed to be *Application Client* archives.
+
+
+h1. OPTIONS
+
+
+|-d, --_debug_ |Increases the level of detail on validation errors and deployment summary.|
+|--_dir_ |Sets the destination directory where the app will be deployed.  The default is <OPENEJB_HOME>/apps/ directory.  Note when changing this setting make sure the directory is listed in the openejb.xml via a <Deployments dir=""/> tag or the app will not be picked up again on restart.
+|-_conf_ _file_ |Sets the OpenEJB configuration to the specified file.|
+|-h, --_help_ |Lists these options and exit.|
+|-o, --_offline_|Deploys the app to an offline server by copying the archive into the server's apps/ directory.  The app will be deployed when the server is started.  The default is online.|
+|-q, --_quiet_  | Decreases the level of detail on validation and skips the deployment summary.|
+|-s, --_server-url <url>_ |   Sets the url of the OpenEJB server to which the app will be deployed.  The value should be the same as the JNDI Provider URL used to lookup EJBs.  The default is 'ejbd://localhost:4201'. |
+|-v, --_version_  |   Prints the OpenEJB version and exits. |
+
+
+h1. EXAMPLES
+
+
+h2. Deploying multiple jar files
+
+
+ {{openejb deploy myapp\fooEjbs.jar myapp\barEjbs.jar}}
+
+
+Deploys the beans in the fooEjbs.jar first, then deploys the beans in the barEjbs.jar. Wildcards can be used as well.
+
+  {{openejb deploy myapp\*.jar}}
+
+
+h1. OUTPUT
+
+On running the deploy tool with a valid EJB jar the following output is printed on the console
+
+{code}
+Application deployed successfully at {0}
+App(id=C:\samples\Calculator-new\hello-addservice.jar)
+    EjbJar(id=hello-addservice.jar, path=C:\samples\Calculator-new\hello-addservice.jar)
+        Ejb(ejb-name=HelloBean, id=HelloBean)
+            Jndi(name=HelloBean)
+            Jndi(name=HelloBeanLocal)
+
+        Ejb(ejb-name=AddServiceBean, id=AddServiceBean)
+            Jndi(name=AddServiceBean)
+            Jndi(name=AddServiceBeanLocal)
+{code}
+
+Note: In the above case the command used is {{C:\samples\Calculator-new>openejb deploy hello-addservice.jar}}.
+This contains two EJBs AddServiceBean and HelloBean.
+

Added: websites/staging/openejb/trunk/content/deploy-tool.html
==============================================================================
--- websites/staging/openejb/trunk/content/deploy-tool.html (added)
+++ websites/staging/openejb/trunk/content/deploy-tool.html Sun Jul 10 05:37:04 2011
@@ -0,0 +1,234 @@
+<!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>Deploy Tool</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="DeployTool-NAME"></a></p>
+
+<h1>NAME</h1>
+
+<p>openejb deploy - OpenEJB Deploy Tool</p>
+
+<p><a name="DeployTool-SYNOPSIS"></a></p>
+
+<h1>SYNOPSIS</h1>
+
+<p>openejb deploy <a href="#options.html">#options</a>
+ <file> [<file>...]</p>
+
+<p><a name="DeployTool-NOTE"></a></p>
+
+<h1>NOTE</h1>
+
+<p>The OpenEJB Deploy tool is an OPTIONAL tool that allows you to deploy into
+a running server and get feedback as if the app was deployed and how it was
+deployed (deploymentIds, jndi names, etc.).  </p>
+
+<p>It can be used to deploy into an offline server, however in this scenario
+it simply copies the archive into the openejb.base/apps directory which is
+something that can be done manually with a simple copy command or drag and
+drop.</p>
+
+<p>The OpenEJB Deploy tool can be executed from any directory as long as
+<OPENEJB_HOME>/bin is in the system PATH. <OPENEJB_HOME> is the directory
+where OpenEJB was installed or unpacked. For for the remainder of this
+document we will assume you unpacked OpenEJB into the directory
+C:\openejb-3.0.</p>
+
+<p>In Windows, the deploy tool can be executed as follows:</p>
+
+<p><em>C:\openejb-3.0> bin\openejb deploy --help</em></p>
+
+<p>In UNIX, Linux, or Mac OS X, the deploy tool can be executed as follows:</p>
+
+<p>{{[user@host openejb-3.0](user@host-openejb-3.0.html)</p>
+
+<h1>bin/openejb deploy --help}}</h1>
+
+<p>Depending on your OpenEJB version, you may need to change execution bits to
+make the scripts executable.  You can do this with the following command.</p>
+
+<p>{{[user@host openejb-3.0](user@host-openejb-3.0.html)</p>
+
+<h1>chmod 755 bin/openejb}}</h1>
+
+<p>From here on out, it will be assumed that you know how to execute the right
+openejb script for your operating system and commands will appear in
+shorthand as show below.</p>
+
+<p><em>openejb deploy --help</em></p>
+
+<p><a name="DeployTool-DESCRIPTION"></a></p>
+
+<h1>DESCRIPTION</h1>
+
+<p>The files passed to the Deploy Tool can be any combination of the
+following:
+  - ejb 1.1, 2.0, 2.1 or 3.0 jar
+  - application client jar 
+  - ear file containing only libraries, ejbs and application clients --
+everything else will be ignored.</p>
+
+<p>Archives ending in <em>.ear</em> or containing a META-INF/application.xml are
+assumed to be ear files.</p>
+
+<p>Archives containing a META-INF/ejb-jar.xml file or any classes annotated
+with @Stateless, @Stateful or @MessageDriven, are assumed to be <em>EJB</em>
+applications.  EJB applications older that EJB 3.0 should contain a
+complete META-INF/ejb-jar.xml inside the jar, however we do not strictly
+enforce that -- the act of it being incomplete makes it an EJB 3.0
+application by nature.</p>
+
+<p>Archives containing a META-INF/application-client.xml or with a
+META-INF/MANIFEST.MF containing the "Main-Class" attribute, are assumed to
+be <em>Application Client</em> archives.</p>
+
+<p><a name="DeployTool-OPTIONS"></a></p>
+
+<h1>OPTIONS</h1>
+
+<table>
+<tr><td>-d, --_debug_ </td><td>Increases the level of detail on validation errors and
+deployment summary.</td></tr>
+<tr><td>--_dir_ </td><td>Sets the destination directory where the app will be deployed. 
+The default is <OPENEJB_HOME>/apps/ directory.  Note when changing this
+setting make sure the directory is listed in the openejb.xml via a
+<Deployments dir=""/> tag or the app will not be picked up again on
+restart.
+</tr>
+<tr><td>-_conf_ _file_ </td><td>Sets the OpenEJB configuration to the specified file.</td></tr>
+<tr><td>-h, --_help_ </td><td>Lists these options and exit.</td></tr>
+<tr><td>-o, --_offline_</td><td>Deploys the app to an offline server by copying the
+archive into the server's apps/ directory.  The app will be deployed when
+the server is started.  The default is online.</td></tr>
+<tr><td>-q, --_quiet_   </td><td> Decreases the level of detail on validation and skips the
+deployment summary.</td></tr>
+<tr><td>-s, --_server-url <url>_ </td><td>   Sets the url of the OpenEJB server to which
+the app will be deployed.  The value should be the same as the JNDI
+Provider URL used to lookup EJBs.  The default is 'ejbd://localhost:4201'.
+</td></tr>
+<tr><td>-v, --_version_  </td><td>   Prints the OpenEJB version and exits. </td></tr>
+</table>
+
+<p><a name="DeployTool-EXAMPLES"></a></p>
+
+<h1>EXAMPLES</h1>
+
+<p><a name="DeployTool-Deployingmultiplejarfiles"></a></p>
+
+<h2>Deploying multiple jar files</h2>
+
+<p><em>openejb deploy myapp\fooEjbs.jar myapp\barEjbs.jar</em></p>
+
+<p>Deploys the beans in the fooEjbs.jar first, then deploys the beans in the
+barEjbs.jar. Wildcards can be used as well.</p>
+
+<p><em>openejb deploy myapp*.jar</em></p>
+
+<p><a name="DeployTool-OUTPUT"></a></p>
+
+<h1>OUTPUT</h1>
+
+<p>On running the deploy tool with a valid EJB jar the following output is
+printed on the console</p>
+
+<pre><code>Application deployed successfully at {0}
+App(id=C:\samples\Calculator-new\hello-addservice.jar)
+    EjbJar(id=hello-addservice.jar,
+</code></pre>
+
+<p>path=C:\samples\Calculator-new\hello-addservice.jar)
+        Ejb(ejb-name=HelloBean, id=HelloBean)
+            Jndi(name=HelloBean)
+            Jndi(name=HelloBeanLocal)</p>
+
+<pre><code>    Ejb(ejb-name=AddServiceBean, id=AddServiceBean)
+        Jndi(name=AddServiceBean)
+        Jndi(name=AddServiceBeanLocal)
+</code></pre>
+
+<p>Note: In the above case the command used is
+<em>C:\samples\Calculator-new>openejb deploy hello-addservice.jar</em>.
+This contains two EJBs AddServiceBean and HelloBean.</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>