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

svn commit: r1144777 [8/16] - /openejb/site/trunk/content/

Added: openejb/site/trunk/content/lightening-demos.mdtext
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/lightening-demos.mdtext?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/lightening-demos.mdtext (added)
+++ openejb/site/trunk/content/lightening-demos.mdtext Sun Jul 10 04:33:54 2011
@@ -0,0 +1,53 @@
+Title: Lightening Demos
+<a name="LighteningDemos-LighteningDemosDetails"></a>
+### Lightening Demos Details
+
+<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>
+
+
+*NOTE: For more details about the idea behind Lightening Demos, please read [this ](-http://markmail.org/message/5jq5xun44kt7tcni.html)
+ e-mail thread.*

Added: openejb/site/trunk/content/loading-deployments-from-the-classpath.cwiki
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/loading-deployments-from-the-classpath.cwiki?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/loading-deployments-from-the-classpath.cwiki (added)
+++ openejb/site/trunk/content/loading-deployments-from-the-classpath.cwiki Sun Jul 10 04:33:54 2011
@@ -0,0 +1 @@
+{include:OPENEJBx30:Application discovery via the classpath}
\ No newline at end of file

Propchange: openejb/site/trunk/content/loading-deployments-from-the-classpath.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openejb/site/trunk/content/loading-deployments-from-the-classpath.mdtext
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/loading-deployments-from-the-classpath.mdtext?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/loading-deployments-from-the-classpath.mdtext (added)
+++ openejb/site/trunk/content/loading-deployments-from-the-classpath.mdtext Sun Jul 10 04:33:54 2011
@@ -0,0 +1,2 @@
+Title: Loading Deployments from the Classpath
+{include:OPENEJBx30:Application discovery via the classpath}

Added: openejb/site/trunk/content/local-server.cwiki
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/local-server.cwiki?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/local-server.cwiki (added)
+++ openejb/site/trunk/content/local-server.cwiki Sun Jul 10 04:33:54 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}

Propchange: openejb/site/trunk/content/local-server.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openejb/site/trunk/content/local-server.mdtext
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/local-server.mdtext?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/local-server.mdtext (added)
+++ openejb/site/trunk/content/local-server.mdtext Sun Jul 10 04:33:54 2011
@@ -0,0 +1,57 @@
+Title: Local Server
+!http://www.openejb.org/images/diagram-local-server.gif|valign=top,
+align=right, hspace=15!
+<a name="LocalServer-AccessingEJBsLocally"></a>
+# 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!
+
+<a name="LocalServer-Saywhat?!Alocalserver?"></a>
+# 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.
+
+<a name="LocalServer-Embedding"></a>
+# Embedding
+
+!http://www.openejb.org/images/diagram-local-server.gif|valign=top,
+align=right, hspace=15!
+{include:OPENEJBx30:Embedding}

Added: openejb/site/trunk/content/logging.cwiki
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/logging.cwiki?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/logging.cwiki (added)
+++ openejb/site/trunk/content/logging.cwiki Sun Jul 10 04:33:54 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

Propchange: openejb/site/trunk/content/logging.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openejb/site/trunk/content/logging.mdtext
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/logging.mdtext?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/logging.mdtext (added)
+++ openejb/site/trunk/content/logging.mdtext Sun Jul 10 04:33:54 2011
@@ -0,0 +1,232 @@
+Title: Logging
+<a name="Logging-LoggingforUsers"></a>
+## 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:
+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
+
+&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} 
+<a name="Logging-Loggingforcontributors/committers"></a>
+## 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;
+
+<a name="Logging-LogCategory"></a>
+### 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
+
+    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);
+    	}
+    
+    }
+
+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
+
+    public static final LogCategory OPENEJB_SHUTDOWN =
+LogCategory.OPENEJB.createChild("shutdown");
+
+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:
+
+    String moduleId = "mymodule";
+    LogCategory generatedCategory = LogCategory.OPENEJB.createChild(moduleId);
+
+
+<a name="Logging-&nbsp;Logger"></a>
+### &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*
+
+    Logger logger = Logger.getInstance (LogCategory.OPENEJB,
+"org.apache.openejb.util");
+
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;*&nbsp; 
+Using the Class*
+
+    Logger logger = Logger.getInsance(LogCategory.OPENEJB, Connect.class);
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+*Get a child Logger for an existing Logger instance*
+
+    Logger logger = Logger.getInsance(LogCategory.OPENEJB, Connect.class);
+    Logger child = logger.getChildLogger("shutdown");
+
+&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*
+
+    LogCategory childCategory = LogCategory.OPENEJB.createChild("shutdown");
+    Logger logger = Logger.getInstance(childCategory,Connect.class);
+
+* &nbsp;Call one of the following methods passing in the key as an argument
+** debug
+** error
+** fatal
+** info
+** warning
+
+
+    Logger logger = Logger.getInstance(LogCategory.OPENEJB,Connect.class);
+    logger.info("error.file");
+
+&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.
+
+<a name="Logging-LoggerInheritance&nbsp;"></a>
+### 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.
+1. &nbsp; org/apache/openejb/Messages.properties
+1. &nbsp; org/apache/openejb/core/Messages.properties
+1. &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
+
+<a name="Logging-Loggingforintegrators"></a>
+### 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.
+
+<a name="Logging-&nbsp;OriginationoftheLoggingIdea"></a>
+### &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.

Added: openejb/site/trunk/content/mailing-lists.cwiki
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/mailing-lists.cwiki?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/mailing-lists.cwiki (added)
+++ openejb/site/trunk/content/mailing-lists.cwiki Sun Jul 10 04:33:54 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 |
+

Propchange: openejb/site/trunk/content/mailing-lists.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openejb/site/trunk/content/mailing-lists.mdtext
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/mailing-lists.mdtext?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/mailing-lists.mdtext (added)
+++ openejb/site/trunk/content/mailing-lists.mdtext Sun Jul 10 04:33:54 2011
@@ -0,0 +1,74 @@
+Title: Mailing Lists
+<a name="MailingLists-UserMailingList"></a>
+# 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.html)
+* [Subscribe](mailto:users-subscribe@openejb.apache.org.html)
+* [Unsubscribe](mailto:users-unsubscribe@openejb.apache.org.html)
+
+OpenEJB Users Online Archives/Forums:
+<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>
+
+<a name="MailingLists-DeveloperMailingList"></a>
+# 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.html)
+* [Subscribe](mailto:dev-subscribe@openejb.apache.org.html)
+* [Unsubscribe](mailto:dev-unsubscribe@openejb.apache.org.html)
+
+OpenEJB Developers Online Archives/Forums:
+<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>
+
+
+<a name="MailingLists-CommitMailingList"></a>
+# 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.html)
+* [Subscribe](mailto:commits-subscribe@openejb.apache.org.html)
+* [Unsubscribe](mailto:commits-unsubscribe@openejb.apache.org.html)
+
+OpenEJB Commits Online Archives/Forums:
+<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>
+

Added: openejb/site/trunk/content/management-and-voting.cwiki
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/management-and-voting.cwiki?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/management-and-voting.cwiki (added)
+++ openejb/site/trunk/content/management-and-voting.cwiki Sun Jul 10 04:33:54 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.

Propchange: openejb/site/trunk/content/management-and-voting.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openejb/site/trunk/content/management-and-voting.mdtext
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/management-and-voting.mdtext?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/management-and-voting.mdtext (added)
+++ openejb/site/trunk/content/management-and-voting.mdtext Sun Jul 10 04:33:54 2011
@@ -0,0 +1,87 @@
+Title: Management and Voting
+<a name="ManagementandVoting-Basicinfo"></a>
+# Basic info
+
+Apache has a few roles that relate to all Apache projects:
+
+ - Contributors [http://www.apache.org/dev/contributors.html](http://www.apache.org/dev/contributors.html)
+ - Committers [http://www.apache.org/dev/committers.html](http://www.apache.org/dev/committers.html)
+ - PMC Members [http://www.apache.org/dev/pmc.html](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.
+
+<a name="ManagementandVoting-PMC"></a>
+# 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 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.
+
+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.
+
+<a name="ManagementandVoting-FAQ"></a>
+# FAQ
+
+<a name="ManagementandVoting-Q.Whosevotescount?"></a>
+## 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 process more time.

Added: openejb/site/trunk/content/multiple-business-interface-hazzards.cwiki
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/multiple-business-interface-hazzards.cwiki?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/multiple-business-interface-hazzards.cwiki (added)
+++ openejb/site/trunk/content/multiple-business-interface-hazzards.cwiki Sun Jul 10 04:33:54 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

Propchange: openejb/site/trunk/content/multiple-business-interface-hazzards.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openejb/site/trunk/content/multiple-business-interface-hazzards.mdtext
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/multiple-business-interface-hazzards.mdtext?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/multiple-business-interface-hazzards.mdtext (added)
+++ openejb/site/trunk/content/multiple-business-interface-hazzards.mdtext Sun Jul 10 04:33:54 2011
@@ -0,0 +1,199 @@
+Title: Multiple Business Interface Hazzards
+<a name="MultipleBusinessInterfaceHazzards-UndeclaredThrowableException"></a>
+#  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.
+
+
+    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]
+;
+    	}
+        }
+    }
+
+
+
+<a name="MultipleBusinessInterfaceHazzards-IllegalArgumentException"></a>
+# 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:
+
+
+    
+    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]
+;
+    	}
+        }
+    }
+
+
+Running this code will result in the following exception:
+
+
+    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)
+    
+

Added: openejb/site/trunk/content/navigation.cwiki
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/navigation.cwiki?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/navigation.cwiki (added)
+++ openejb/site/trunk/content/navigation.cwiki Sun Jul 10 04:33:54 2011
@@ -0,0 +1,39 @@
+h3. Overview
+
+- [Home|Index]
+- [News]
+- [FAQ]
+- [Download]
+- [Documentation|OPENEJBx30:Index]
+- [Examples]
+- [Lightning Demos|http://cwiki.apache.org/confluence/display/OPENEJB/Lightening+Demos]
+- [Mailing Lists]
+- [Source Code]
+- [Project Blog|http://blogs.apache.org/openejb]
+
+h3. Servers
+
+- [Local|Local Server]
+- [Remote|Remote Server]
+
+h3. Integrations
+
+- [OPENEJBx30:Tomcat]
+- [Geronimo]
+- [WebObjects]
+
+h3. Community
+
+- [Team]
+- [Articles]
+- [IRC|http://webchat.freenode.net/?channels=openejb]
+
+h3. Related Projects
+
+- [ActiveMQ|http://activemq.apache.org]
+- [OpenJPA|http://openjpa.apache.org]
+- [CXF|http://cxf.apache.org]
+
+h3. Index
+ - [Site Index|Space Index]
+ - [Doc Index|OPENEJBx30:Space Index]

Propchange: openejb/site/trunk/content/navigation.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openejb/site/trunk/content/navigation.mdtext
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/navigation.mdtext?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/navigation.mdtext (added)
+++ openejb/site/trunk/content/navigation.mdtext Sun Jul 10 04:33:54 2011
@@ -0,0 +1,46 @@
+Title: Navigation
+<a name="Navigation-Overview"></a>
+### Overview
+
+- [Home](index.html)
+- [News](news.html)
+- [FAQ](faq.html)
+- [Download](download.html)
+- [Documentation](openejbx30:index.html)
+- [Examples](examples.html)
+- [Lightning Demos](http://cwiki.apache.org/confluence/display/OPENEJB/Lightening+Demos)
+- [Mailing Lists](mailing-lists.html)
+- [Source Code](source-code.html)
+- [Project Blog](http://blogs.apache.org/openejb)
+
+<a name="Navigation-Servers"></a>
+### Servers
+
+- [Local](local-server.html)
+- [Remote](remote-server.html)
+
+<a name="Navigation-Integrations"></a>
+### Integrations
+
+- [OPENEJBx30:Tomcat](openejbx30:tomcat.html)
+- [Geronimo](geronimo.html)
+- [WebObjects](webobjects.html)
+
+<a name="Navigation-Community"></a>
+### Community
+
+- [Team](team.html)
+- [Articles](articles.html)
+- [IRC](http://webchat.freenode.net/?channels=openejb)
+
+<a name="Navigation-RelatedProjects"></a>
+### Related Projects
+
+- [ActiveMQ](http://activemq.apache.org)
+- [OpenJPA](http://openjpa.apache.org)
+- [CXF](http://cxf.apache.org)
+
+<a name="Navigation-Index"></a>
+### Index
+ - [Site Index](space-index.html)
+ - [Doc Index](openejbx30:space-index.html)

Added: openejb/site/trunk/content/netbeans-(d).cwiki
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/netbeans-%28d%29.cwiki?rev=1144777&view=auto
==============================================================================
    (empty)

Propchange: openejb/site/trunk/content/netbeans-(d).cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openejb/site/trunk/content/netbeans.cwiki
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/netbeans.cwiki?rev=1144777&view=auto
==============================================================================
    (empty)

Propchange: openejb/site/trunk/content/netbeans.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openejb/site/trunk/content/netbeans.mdtext
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/netbeans.mdtext?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/netbeans.mdtext (added)
+++ openejb/site/trunk/content/netbeans.mdtext Sun Jul 10 04:33:54 2011
@@ -0,0 +1 @@
+Title: Netbeans

Added: openejb/site/trunk/content/new-documentation.cwiki
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/new-documentation.cwiki?rev=1144777&view=auto
==============================================================================
    (empty)

Propchange: openejb/site/trunk/content/new-documentation.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openejb/site/trunk/content/new-documentation.mdtext
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/new-documentation.mdtext?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/new-documentation.mdtext (added)
+++ openejb/site/trunk/content/new-documentation.mdtext Sun Jul 10 04:33:54 2011
@@ -0,0 +1 @@
+Title: NEW DOCUMENTATION

Added: openejb/site/trunk/content/new-in-openejb-3.0.cwiki
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/new-in-openejb-3.0.cwiki?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/new-in-openejb-3.0.cwiki (added)
+++ openejb/site/trunk/content/new-in-openejb-3.0.cwiki Sun Jul 10 04:33:54 2011
@@ -0,0 +1,102 @@
+h1. EJB 3.0
+
+OpenEJB 3.0 supports the EJB 3.0 specification as well as the prior EJB 2.1, EJB 2.0, and EJB 1.1.  New features in EJB 3.0 include:
+
+ - Annotations instead of xml
+ - No home interfaces
+ - Business Interfaces
+ - Dependency Injection
+ - Intercpetors
+ - Java Persistence API
+ - Service Locator (ala SessionContext.lookup)
+ - POJO-style beans
+
+EJB 2.x features since OpenEJB 1.0 also include:
+ - MessageDriven Beans
+ - Container-Managed Persistence (CMP) 2.0
+ - Timers
+
+The two aspects of EJB that OpenEJB does not yet support are:
+  - Web Services (JAX-WS, JAX-RPC)
+  - CORBA
+
+JAX-WS and CORBA support will be added in future releases.  Support for the JAX-RPC API is not a planned feature.
+
+h1. Extensions to EJB 3.0
+
+h2. CMP via JPA
+
+Our CMP implementation is a thin layer over the new Java Persistence API (JPA).  This means when you deploy an old style CMP 1.1 or CMP 2.1 bean it is internally converted and ran as a JPA bean.  This makes it possible to use both CMP and JPA in the same application without any coherence issues that can come from using two competing persistence technologies against the same data.  Everything is ultimately JPA in the end.
+
+h2. Extended Dependency Injection
+
+Dependency Injection in EJB 3.0 via @Resource is largely limited to objects provided by the container, such as DataSources, JMS Topics and Queues.  It is possible for you to supply your own configuration information for injection, but standard rules allow for only data of type String, Character, Boolean, Integer, Short, Long, Double, Float and Byte.  If you needed a URL, for example, you'd have to have it injected as a String then convert it yourself to a URL.  This is just plain silly as the conversion of Strings to other basic data types has existed in JavaBeans long before Enterprise JavaBeans existed.  
+
+OpenEJB 3.0 supports injection of any data type for which you can supply a JavaBeans PropertyEditor.  We include several built-in PropertyEditors already such as Date, InetAddress, Class, File, URL, URI, Map, List and more.
+
+{code:title=MyBean.java}
+import java.net.URI;
+import java.io.File;
+import java.util.Date;
+
+@Stateful 
+public class MyBean {
+    @Resource URI blog;
+    @Resource Date birthday;
+    @Resource File homeDirectory;
+}
+{code}
+
+h2. The META-INF/env-entries.properties
+
+Along the lines of injection, one of the last remaining things in EJB 3 that people need an ejb-jar.xml file for is to supply the value of env-entries.  Env Entries are the source of data for all user supplied data injected into your bean; the afore mentioned String, Boolean, Integer, etc.  This is a very big burden as each env-entry is going to cost you 5 lines of xml and the complication of having to figure out how to add you bean declaration in xml as an override of an existing bean and not accidentally as a new bean.  All this can be very painful when all you want is to supply the value of a few @Resource String fields in you bean class.  
+
+To fix this, OpenEJB supports the idea of a META-INF/env-entries.properties file where we will look for the value of things that need injection that are not container controlled resources (i.e. datasources and things of that nature).  You can configure you ejbs via a properties file and skip the need for an ejb-jar.xml and it's 5 lines per property madness.
+
+{code:title=META-INF/env-entries.properties}
+blog = http://acme.org/myblog
+birthday = locale=en_US style=MEDIUM Mar 1, 1954
+homeDirectory = /home/esmith/
+{code}
+
+h2. Support for GlassFish descriptors
+
+Unit testing EJBs with OpenEJB is a major feature and draw for people, even for people who may still use other app servers for final deployment such as Geronimo or GlassFish.  The descriptor format for Geronimo is natively understood by OpenEJB as OpenEJB is the EJB Container provider for Geronimo.  However, OpenEJB also supports the GlassFish descriptors so people using GlassFish as their final server can still use OpenEJB for testing EJBs via plain JUnit tests in their build and only have one set of vendor descriptors to maintain.
+
+h2. JavaEE 5 EAR and Application Client support
+
+JavaEE 5 EARs and Application Clients can be deployed in addition to ejb jars.  EAR support is limited to ejbs, application clients, and libraries; WAR files and RAR files will be ignored.   Per the JavaEE 5 spec, the META-INF/application.xml and META-INF/application-client.xml files are optional.
+
+h2.  Application Validation for EJB 3.0
+
+Incorrect usage of various new aspects of EJB 3.0 are checked for and reported during the deployment process preventing strange errors and failures.  
+
+As usual validation failures (non-compliant issues with your application) are printed out in complier-style "all-at-once" output allowing you to see and fix all your issues in one go.  For example, if you have 10 @PersistenceContext annotations that reference an invalid persistence unit, you get all 10 errors on the *first* deploy rather than one failure on the first deploy with 9 more failed deployments to go.
+
+Validation output comes in three levels.  The most verbose level will tell you in detail what you did wrong, what the options are, and what to do next... even including valid code and annotation usage tailored to your app that you can copy and paste into your application.  Very ideal for beginners and people using OpenEJB in a classroom setting.
+
+h2.  Most configurable JNDI names ever
+
+h1. General Improvements
+
+h2.  Online Deployment
+h2.  Security Service
+h2.  Connection Pooling
+h2.  Configuration Overriding
+h2.  Flexible JNDI Name Formatting
+h2.  Cleaner Embedding
+h2.  Tomcat 6 Support
+h2.  Business locals remotable
+
+If you want to make business local interfaces remotable, you can set this property:
+{code}
+  openejb.remotable.businessLocals=true
+{code}
+Then you can lookup your business local interfaces from remote clients.
+
+You'd still have to ensure that the you pass back and forth is serializable.
+
+
+
+
+

Propchange: openejb/site/trunk/content/new-in-openejb-3.0.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openejb/site/trunk/content/new-in-openejb-3.0.mdtext
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/new-in-openejb-3.0.mdtext?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/new-in-openejb-3.0.mdtext (added)
+++ openejb/site/trunk/content/new-in-openejb-3.0.mdtext Sun Jul 10 04:33:54 2011
@@ -0,0 +1,175 @@
+Title: New in OpenEJB 3.0
+<a name="NewinOpenEJB3.0-EJB3.0"></a>
+# EJB 3.0
+
+OpenEJB 3.0 supports the EJB 3.0 specification as well as the prior EJB
+2.1, EJB 2.0, and EJB 1.1.  New features in EJB 3.0 include:
+
+ - Annotations instead of xml
+ - No home interfaces
+ - Business Interfaces
+ - Dependency Injection
+ - Intercpetors
+ - Java Persistence API
+ - Service Locator (ala SessionContext.lookup)
+ - POJO-style beans
+
+EJB 2.x features since OpenEJB 1.0 also include:
+ - MessageDriven Beans
+ - Container-Managed Persistence (CMP) 2.0
+ - Timers
+
+The two aspects of EJB that OpenEJB does not yet support are:
+  - Web Services (JAX-WS, JAX-RPC)
+  - CORBA
+
+JAX-WS and CORBA support will be added in future releases.  Support for the
+JAX-RPC API is not a planned feature.
+
+<a name="NewinOpenEJB3.0-ExtensionstoEJB3.0"></a>
+# Extensions to EJB 3.0
+
+<a name="NewinOpenEJB3.0-CMPviaJPA"></a>
+## CMP via JPA
+
+Our CMP implementation is a thin layer over the new Java Persistence API
+(JPA).	This means when you deploy an old style CMP 1.1 or CMP 2.1 bean it
+is internally converted and ran as a JPA bean.	This makes it possible to
+use both CMP and JPA in the same application without any coherence issues
+that can come from using two competing persistence technologies against the
+same data.  Everything is ultimately JPA in the end.
+
+<a name="NewinOpenEJB3.0-ExtendedDependencyInjection"></a>
+## Extended Dependency Injection
+
+Dependency Injection in EJB 3.0 via @Resource is largely limited to objects
+provided by the container, such as DataSources, JMS Topics and Queues.	It
+is possible for you to supply your own configuration information for
+injection, but standard rules allow for only data of type String,
+Character, Boolean, Integer, Short, Long, Double, Float and Byte.  If you
+needed a URL, for example, you'd have to have it injected as a String then
+convert it yourself to a URL.  This is just plain silly as the conversion
+of Strings to other basic data types has existed in JavaBeans long before
+Enterprise JavaBeans existed.  
+
+OpenEJB 3.0 supports injection of any data type for which you can supply a
+JavaBeans PropertyEditor.  We include several built-in PropertyEditors
+already such as Date, InetAddress, Class, File, URL, URI, Map, List and
+more.
+
+<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>MyBean.java</B></DIV><DIV class="codeContent panelContent">
+    import java.net.URI;
+    import java.io.File;
+    import java.util.Date;
+    
+    @Stateful 
+    public class MyBean {
+        @Resource URI blog;
+        @Resource Date birthday;
+        @Resource File homeDirectory;
+    }
+
+
+<a name="NewinOpenEJB3.0-TheMETA-INF/env-entries.properties"></a>
+## The META-INF/env-entries.properties
+
+Along the lines of injection, one of the last remaining things in EJB 3
+that people need an ejb-jar.xml file for is to supply the value of
+env-entries.  Env Entries are the source of data for all user supplied data
+injected into your bean; the afore mentioned String, Boolean, Integer, etc.
+ This is a very big burden as each env-entry is going to cost you 5 lines
+of xml and the complication of having to figure out how to add you bean
+declaration in xml as an override of an existing bean and not accidentally
+as a new bean.	All this can be very painful when all you want is to supply
+the value of a few @Resource String fields in you bean class.  
+
+To fix this, OpenEJB supports the idea of a META-INF/env-entries.properties
+file where we will look for the value of things that need injection that
+are not container controlled resources (i.e. datasources and things of that
+nature).  You can configure you ejbs via a properties file and skip the
+need for an ejb-jar.xml and it's 5 lines per property madness.
+
+<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>META-INF/env-entries.properties</B></DIV><DIV class="codeContent panelContent">
+    blog = http://acme.org/myblog
+    birthday = locale=en_US style=MEDIUM Mar 1, 1954
+    homeDirectory = /home/esmith/
+
+
+<a name="NewinOpenEJB3.0-SupportforGlassFishdescriptors"></a>
+## Support for GlassFish descriptors
+
+Unit testing EJBs with OpenEJB is a major feature and draw for people, even
+for people who may still use other app servers for final deployment such as
+Geronimo or GlassFish.	The descriptor format for Geronimo is natively
+understood by OpenEJB as OpenEJB is the EJB Container provider for
+Geronimo.  However, OpenEJB also supports the GlassFish descriptors so
+people using GlassFish as their final server can still use OpenEJB for
+testing EJBs via plain JUnit tests in their build and only have one set of
+vendor descriptors to maintain.
+
+<a name="NewinOpenEJB3.0-JavaEE5EARandApplicationClientsupport"></a>
+## JavaEE 5 EAR and Application Client support
+
+JavaEE 5 EARs and Application Clients can be deployed in addition to ejb
+jars.  EAR support is limited to ejbs, application clients, and libraries;
+WAR files and RAR files will be ignored.   Per the JavaEE 5 spec, the
+META-INF/application.xml and META-INF/application-client.xml files are
+optional.
+
+<a name="NewinOpenEJB3.0-ApplicationValidationforEJB3.0"></a>
+##  Application Validation for EJB 3.0
+
+Incorrect usage of various new aspects of EJB 3.0 are checked for and
+reported during the deployment process preventing strange errors and
+failures.  
+
+As usual validation failures (non-compliant issues with your application)
+are printed out in complier-style "all-at-once" output allowing you to see
+and fix all your issues in one go.  For example, if you have 10
+@PersistenceContext annotations that reference an invalid persistence unit,
+you get all 10 errors on the *first* deploy rather than one failure on the
+first deploy with 9 more failed deployments to go.
+
+Validation output comes in three levels.  The most verbose level will tell
+you in detail what you did wrong, what the options are, and what to do
+next... even including valid code and annotation usage tailored to your app
+that you can copy and paste into your application.  Very ideal for
+beginners and people using OpenEJB in a classroom setting.
+
+<a name="NewinOpenEJB3.0-MostconfigurableJNDInamesever"></a>
+##  Most configurable JNDI names ever
+
+<a name="NewinOpenEJB3.0-GeneralImprovements"></a>
+# General Improvements
+
+<a name="NewinOpenEJB3.0-OnlineDeployment"></a>
+##  Online Deployment
+<a name="NewinOpenEJB3.0-SecurityService"></a>
+##  Security Service
+<a name="NewinOpenEJB3.0-ConnectionPooling"></a>
+##  Connection Pooling
+<a name="NewinOpenEJB3.0-ConfigurationOverriding"></a>
+##  Configuration Overriding
+<a name="NewinOpenEJB3.0-FlexibleJNDINameFormatting"></a>
+##  Flexible JNDI Name Formatting
+<a name="NewinOpenEJB3.0-CleanerEmbedding"></a>
+##  Cleaner Embedding
+<a name="NewinOpenEJB3.0-Tomcat6Support"></a>
+##  Tomcat 6 Support
+<a name="NewinOpenEJB3.0-Businesslocalsremotable"></a>
+##  Business locals remotable
+
+If you want to make business local interfaces remotable, you can set this
+property:
+
+      openejb.remotable.businessLocals=true
+
+Then you can lookup your business local interfaces from remote clients.
+
+You'd still have to ensure that the you pass back and forth is
+serializable.
+
+
+
+
+

Added: openejb/site/trunk/content/new-index-text.cwiki
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/new-index-text.cwiki?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/new-index-text.cwiki (added)
+++ openejb/site/trunk/content/new-index-text.cwiki Sun Jul 10 04:33:54 2011
@@ -0,0 +1,17 @@
+h1. Welcome to Apache OpenEJB! 
+
+Apache OpenEJB is an embeddable and lightweight EJB 3.0 implementation that can be used as a standalone server or embedded into Tomcat, JUnit, TestNG, Eclipse, IntelliJ, Maven, Ant, and any IDE or application. OpenEJB is included in Apache Geronimo, IBM WebSphere Application Server CE, and Apple's WebObjects. 
+
+h2. Major features
+ - Supports EJB 3.0, 2.1, 2.0, 1.1 in all modes; embedded, standalone or otherwise.
+ - JAX-WS support
+ - JMS support
+ - J2EE connector support
+ - Can be dropped into Tomcat 5 or 6 adding various JavaEE 5 and EJB 3.0 features to a standard Tomcat install.
+ - CMP support is implemented over JPA allowing to freely mix CMP and JPA usage.
+ - Complete support for Glassfish descriptors allowing those users to embedded test their applications.
+ - Incredibly flexible jndi name support allows you to specify formats at macro and micro levels and imitate the format of other vendors.
+ - Allows for easy testing and debugging in IDEs such as Eclipse, Idea Intellij or NetBeans with no plugins required.
+ - Usable in ordinary JUnit or other style test cases without complicated setup or external processes.
+ - Validates applications entirely and reports all failures at once with, three selectable levels of detail, avoiding several hours worth of "fix, recompile, redeploy, fail, repeat" cycles. 
+

Propchange: openejb/site/trunk/content/new-index-text.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openejb/site/trunk/content/new-index-text.mdtext
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/new-index-text.mdtext?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/new-index-text.mdtext (added)
+++ openejb/site/trunk/content/new-index-text.mdtext Sun Jul 10 04:33:54 2011
@@ -0,0 +1,33 @@
+Title: New Index Text
+<a name="NewIndexText-WelcometoApacheOpenEJB!"></a>
+# Welcome to Apache OpenEJB! 
+
+Apache OpenEJB is an embeddable and lightweight EJB 3.0 implementation that
+can be used as a standalone server or embedded into Tomcat, JUnit, TestNG,
+Eclipse, IntelliJ, Maven, Ant, and any IDE or application. OpenEJB is
+included in Apache Geronimo, IBM WebSphere Application Server CE, and
+Apple's WebObjects. 
+
+<a name="NewIndexText-Majorfeatures"></a>
+## Major features
+ - Supports EJB 3.0, 2.1, 2.0, 1.1 in all modes; embedded, standalone or
+otherwise.
+ - JAX-WS support
+ - JMS support
+ - J2EE connector support
+ - Can be dropped into Tomcat 5 or 6 adding various JavaEE 5 and EJB 3.0
+features to a standard Tomcat install.
+ - CMP support is implemented over JPA allowing to freely mix CMP and JPA
+usage.
+ - Complete support for Glassfish descriptors allowing those users to
+embedded test their applications.
+ - Incredibly flexible jndi name support allows you to specify formats at
+macro and micro levels and imitate the format of other vendors.
+ - Allows for easy testing and debugging in IDEs such as Eclipse, Idea
+Intellij or NetBeans with no plugins required.
+ - Usable in ordinary JUnit or other style test cases without complicated
+setup or external processes.
+ - Validates applications entirely and reports all failures at once with,
+three selectable levels of detail, avoiding several hours worth of "fix,
+recompile, redeploy, fail, repeat" cycles. 
+

Added: openejb/site/trunk/content/new_faq.cwiki
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/new_faq.cwiki?rev=1144777&view=auto
==============================================================================
    (empty)

Propchange: openejb/site/trunk/content/new_faq.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openejb/site/trunk/content/new_faq.mdtext
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/new_faq.mdtext?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/new_faq.mdtext (added)
+++ openejb/site/trunk/content/new_faq.mdtext Sun Jul 10 04:33:54 2011
@@ -0,0 +1 @@
+Title: New_FAQ

Added: openejb/site/trunk/content/new_navigation.cwiki
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/new_navigation.cwiki?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/new_navigation.cwiki (added)
+++ openejb/site/trunk/content/new_navigation.cwiki Sun Jul 10 04:33:54 2011
@@ -0,0 +1,41 @@
+
++ About OpenEJB
+ &nbsp; &nbsp;\- What is OpenEJB?
+ &nbsp; &nbsp;\- Features
+ &nbsp; &nbsp;\- FAQ
+ &nbsp; &nbsp;\- Getting Support
+ &nbsp; &nbsp;\- Release Notes
+ &nbsp; &nbsp;\- Known Issues
+
++ Downloads
+ &nbsp;\- Binary
+ &nbsp;\- Source
+ &nbsp;-Javadocs
+
++ Documentation
+ &nbsp; + Users
+ &nbsp; &nbsp; &nbsp; - Getting started
+ &nbsp; &nbsp; &nbsp; - Users Guide
+ &nbsp; + Developers
+ &nbsp; &nbsp; &nbsp; - Getting started
+ &nbsp; &nbsp; &nbsp; - Developers Guide
+ &nbsp; - Javadocs
+ &nbsp; - EJB 3.0 Spec
+ &nbsp; - Wiki
+
++ IDE Integration
+ &nbsp; &nbsp;\+ Users
+ &nbsp; &nbsp; &nbsp; &nbsp;\- Eclipse
+ &nbsp; &nbsp; &nbsp; &nbsp;\- IDEA
+ &nbsp; &nbsp; &nbsp; &nbsp;\- Netbeans
+ &nbsp; &nbsp; + Developers
+ &nbsp; &nbsp; &nbsp; &nbsp;\- Eclipse
+ &nbsp; &nbsp; &nbsp; &nbsp;\- IDEA
+ &nbsp; &nbsp; &nbsp; &nbsp;\- Netbeans
+
++ Community
+ &nbsp; &nbsp;\- How to contribute
+ &nbsp; &nbsp;\- Repository
+ &nbsp; &nbsp;\- Issue Tracking
+ &nbsp; &nbsp;\- IRC
+ &nbsp; &nbsp;\- The Team
\ No newline at end of file

Propchange: openejb/site/trunk/content/new_navigation.cwiki
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openejb/site/trunk/content/new_navigation.mdtext
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/new_navigation.mdtext?rev=1144777&view=auto
==============================================================================
--- openejb/site/trunk/content/new_navigation.mdtext (added)
+++ openejb/site/trunk/content/new_navigation.mdtext Sun Jul 10 04:33:54 2011
@@ -0,0 +1,42 @@
+Title: New_Navigation
+
++ About OpenEJB
+ &nbsp; &nbsp;\- What is OpenEJB?
+ &nbsp; &nbsp;\- Features
+ &nbsp; &nbsp;\- FAQ
+ &nbsp; &nbsp;\- Getting Support
+ &nbsp; &nbsp;\- Release Notes
+ &nbsp; &nbsp;\- Known Issues
+
++ Downloads
+ &nbsp;\- Binary
+ &nbsp;\- Source
+ &nbsp;-Javadocs
+
++ Documentation
+ &nbsp; + Users
+ &nbsp; &nbsp; &nbsp; - Getting started
+ &nbsp; &nbsp; &nbsp; - Users Guide
+ &nbsp; + Developers
+ &nbsp; &nbsp; &nbsp; - Getting started
+ &nbsp; &nbsp; &nbsp; - Developers Guide
+ &nbsp; - Javadocs
+ &nbsp; - EJB 3.0 Spec
+ &nbsp; - Wiki
+
++ IDE Integration
+ &nbsp; &nbsp;\+ Users
+ &nbsp; &nbsp; &nbsp; &nbsp;\- Eclipse
+ &nbsp; &nbsp; &nbsp; &nbsp;\- IDEA
+ &nbsp; &nbsp; &nbsp; &nbsp;\- Netbeans
+ &nbsp; &nbsp; + Developers
+ &nbsp; &nbsp; &nbsp; &nbsp;\- Eclipse
+ &nbsp; &nbsp; &nbsp; &nbsp;\- IDEA
+ &nbsp; &nbsp; &nbsp; &nbsp;\- Netbeans
+
++ Community
+ &nbsp; &nbsp;\- How to contribute
+ &nbsp; &nbsp;\- Repository
+ &nbsp; &nbsp;\- Issue Tracking
+ &nbsp; &nbsp;\- IRC
+ &nbsp; &nbsp;\- The Team