jackrabbit-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From unc...@apache.org
Subject svn commit: rev 47197 - in incubator/jackrabbit/trunk/xdocs: . arch images/arch
Date Sat, 25 Sep 2004 12:26:35 GMT
Author: uncled
Date: Sat Sep 25 05:26:33 2004
New Revision: 47197

Added:
   incubator/jackrabbit/trunk/xdocs/arch/
   incubator/jackrabbit/trunk/xdocs/arch/deploy.xml
   incubator/jackrabbit/trunk/xdocs/arch/index.xml
   incubator/jackrabbit/trunk/xdocs/arch/overview.xml
   incubator/jackrabbit/trunk/xdocs/images/arch/
   incubator/jackrabbit/trunk/xdocs/images/arch/deploy-1.png   (contents, props changed)
   incubator/jackrabbit/trunk/xdocs/images/arch/deploy-2.png   (contents, props changed)
   incubator/jackrabbit/trunk/xdocs/images/arch/deploy-3.png   (contents, props changed)
   incubator/jackrabbit/trunk/xdocs/images/arch/overview.png   (contents, props changed)
Modified:
   incubator/jackrabbit/trunk/xdocs/navigation.xml
Log:
Initial Jackrabbit Architecture Documentation
Including architecure overview and 3 deployment model examples.

Added: incubator/jackrabbit/trunk/xdocs/arch/deploy.xml
==============================================================================
--- (empty file)
+++ incubator/jackrabbit/trunk/xdocs/arch/deploy.xml	Sat Sep 25 05:26:33 2004
@@ -0,0 +1,149 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2003-2004 The Apache Software Foundation
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+
+ <properties>
+  <title>Overview</title>
+  <author email="jackrabbit-dev@incubator.apache.org">Jackrabbit Documentation team</author>
+  <revision>$Id: $</revision>
+ </properties>
+
+ <body>
+
+<section name="Jackrabbit Example Deployment Models">
+<p>
+Jsr-170 explicitly allows for numerous different deployment models, meaning 
+that it is entirely up to the repository implementation to suggest certain 
+models.
+</p>
+<p>
+Jackrabbit is built to support a variety of different deployment models, 
+some of the possibilities on how to deploy Jackrabbit will be outlined here
+</p>
+</section>
+
+<section name="Model 1: The (Web-) Application Bundle">
+<p>
+For many applications, usually applications that run in a closed 
+context without interacting with other applications or data sources, 
+it might be desirable to bundle a content repository with the 
+application itself. 
+</p>
+<p>
+Jackrabbit is built for this lightweight model and allows obviously 
+through the abstraction provided by jsr-170 to move at any point in 
+time to a different deployment model in case this should be desirable 
+for the context that the application runs in.
+</p>
+<p>
+This makes Jackrabbit ideal to be packaged as a lightweight out-of-the-box 
+content repository that allows an application vendor to make sure that there 
+are no dependencies to a pre-installed content repository.
+</p>
+<p>
+The instance of Jackrabbit that is package with the application is running 
+in-proc inside the same JVM and cannot be accessed by any other application.
+</p>
+<p>
+This deployment model is particularly lightweight and does not require a 
+network layer.
+</p>
+<p>
+The individual repository instances are started and stopped with their 
+containing applications, which means that the application is not only 
+connecting to the repository but is also in charge of starting and 
+stopping the repository.
+</p>
+<p>
+As an example of this deployment model we assume a WebApplication packaged 
+into a .war file which is deployed into a WebContainer, which not only 
+contains the application but also the actual content repository.
+</p>
+<p>
+<img src="../images/arch/deploy-1.png" />
+</p>
+<p>
+Application1 and Application2 both contain their own instances of a Content 
+Repository distributed as a part of their .war file and therefore loaded 
+with the web application's class loader which makes it invisible to other 
+applications.
+</p>
+<p>
+This deplyoment model of course also works for any stand-alone application 
+and not just for web applications.
+</p>
+</section>
+
+<section name="Model 2: Shared J2EE Resource">
+<p>
+A second way to deploy a repository is to make it visible as a resource to 
+all the web applications that are running inside a Servlet Container by 
+registering the Repository as a Resource Adapter to the Application Server.
+</p>
+<p>
+Similar to the first deployment model this deployment model does also not 
+require a network layer and therefore would be considered in-proc and is 
+running inside the same JVM.
+</p>
+<p>
+The repository is started and stopped with the Application Server but is 
+visible to all the applications to connect to.
+</p>
+<p>
+<img src="../images/arch/deploy-2.png" />
+</p>
+<p>
+This setup also allows to take advantage of the XA facilities of the 
+Application Server and could use the application servers single sign-on 
+mechanisms that are provided as part of the J2EE framework.
+</p>
+</section>
+
+<section name="Model 3: The Repository Server">
+<p>
+In enterprise environments the client/server deployment model is widely used 
+for relational databases. While with relational databases this is probably the 
+only deployment model that is supported by most RDBMS vendors for repositories, 
+in particular for Jackrabbit, this is only on various options.
+</p>
+<p>
+The client/server deployment model will certainly be very popular in 
+environments that where it is desirable to physically separate the 
+content repository (or data) layer from the application 
+or presentation layer, so the content repository can be 
+used from many different applications, physically and can be scaled 
+individually.
+</p>
+<img src="../images/arch/deploy-3.png" />
+<p>
+This deployment model assumes that there is a network layer between the 
+content repository server and the respective content repository client.
+</p>
+<p>
+While the applications communicate through the jsr-170 API with the content 
+repository client. The content repository client then communicates through 
+any form of transport protocol with the stand-alone content repository server.
+</p>
+<p>
+The transport protocol between the client and the server is subject to 
+implementation and not mandated by jsr-170. Popular choices might include RMI 
+over JRMP or IIOP or WebDAV and its extensions.
+</p>
+</section>
+
+</body>
+</document>

Added: incubator/jackrabbit/trunk/xdocs/arch/index.xml
==============================================================================
--- (empty file)
+++ incubator/jackrabbit/trunk/xdocs/arch/index.xml	Sat Sep 25 05:26:33 2004
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2003-2004 The Apache Software Foundation
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+
+ <properties>
+  <title>Overview</title>
+  <author email="jackrabbit-dev@incubator.apache.org">Jackrabbit Documentation team</author>
+  <revision>$Id: $</revision>
+ </properties>
+
+ <body>
+
+<section name="Architecture Documentation">
+<p>
+<a href="overview.html">Jackrabbit Architecture Overview</a><br />
+What fits where? JSR-170 and Jackrabbit? Where does my Application fit into the
+picture? <a href="overview.html">more...</a>
+</p>
+<p>
+<a href="deploy.html">Jackrabbit Deployment Models</a><br />
+Embedded or stand-alone? Server or Client? <a href="deploy.html">more...</a>
+</p>
+</section>
+
+</body>
+</document>

Added: incubator/jackrabbit/trunk/xdocs/arch/overview.xml
==============================================================================
--- (empty file)
+++ incubator/jackrabbit/trunk/xdocs/arch/overview.xml	Sat Sep 25 05:26:33 2004
@@ -0,0 +1,106 @@
+<?xml version="1.0"?>
+<!--
+   Copyright 2003-2004 The Apache Software Foundation
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+  -->
+<document>
+
+ <properties>
+  <title>Overview</title>
+  <author email="jackrabbit-dev@incubator.apache.org">Jackrabbit Documentation team</author>
+  <revision>$Id: $</revision>
+ </properties>
+
+ <body>
+
+<section name="General Architecture Overview">
+
+<p>
+The general architecture of Jackrabbit can be view in three Layers.
+A Content Application Layer, an API Layer and a Content Repository 
+Implementation Layer.<br />
+<img src="../images/arch/overview.png"/>
+</p>
+</section>
+<section name="Content Applications">
+
+<p>
+Content Applications interact through the jsr-170 API with the Content Repository Implementation.
+There are numerous applications that are available for jsr-170 repositories, some of them
are very generic (like a WebDAV or a subversion server) other applications can be very specific
and make use of the content repository as a store for the information that is used by the
applications.
+Applications can use a jsr-170 content repository as a replacement for anything like property-files,
XML-configuration, certain portions of relational database functionality to straight file
system or blob-management. Using a content repository let's an application deal with an arbitrary
large hierarchical space in a scalable manner and profiting automatically from the repository
services such as versioning, query, transactions or namespaces which make a content repository
the ideal data store for many applications.
+</p>
+<p>
+A "generic content application" (an application that has no particular functional focus but
just allows for generic introspection and manipulation of the repository) uses the capabilities
of the node types, access control and other facilities to display a user interface or a network
protocol to the end user, seemingly independent from the content that is stored in the repository.
Examples of such generic applications are "The Content Explorer", "WebDAV Server" or a "Subversion
Server". (Or generic Portal, CMS or DMS applications).
+</p>
+<p>
+A "specialized content application" operates under the assumption that there are certain
node types that it operates on, and that it is familiar at least partially with the data model
exposed by defined node types. Mostly these node types are defined by the application itself
and ship with the application.
+These applications use a content repository as their persistence layer as a natural evolution
from the use of an RDBMS or a file system.
+Examples of "specialized content applications" include any application imaginable, from a
"DVD Collection Management", to a "Message Board", to "Workflow and BPM" but also complete
next generation "Enterprise Resource Planning Systems".
+</p>
+</section>
+
+<section name="Content Repository API">
+
+<p>
+The Content Repository API Layer is split into two major sections.
+<ul>
+<li>The Content Repository API defined by jsr-170</li>
+<li>A number features of a content repository, that have been removed from the jsr-170
specification since they are difficult to implement on existing non-java-based content repositories
and administrational Repository tasks that have also been deliberately excluded from jsr-170</li>
+</ul>
+</p>
+<p>
+There are only very few (mostly administrational) applications which make use of the non-jsr-170
APIs provided by Jackrabbit.
+</p>
+<p>
+The boxes in the architecture chart do not symbolize package names or class names directly
but mostly semantically grouped blocks of functionality.
+</p>
+</section>
+
+<section name="Content Repository Implementation">
+
+<p>
+The content Repository Implementation portion of the architecture chart reflects the major
building blocks of the jackrabbit content repository implementation.
+</p>
+<p>
+The size of the blocks symbolizes roughly the amount of code and therefore the complexity
of the individual functional block. Again the functional blocks do not directly map to package
or class names.
+</p>
+<p>
+There are three scopes in a content repository: A repository scope, a workspace scope and
a session scope.
+</p>
+<p>
+Every function that is operated against a repository can be attributed to at least one of
these scopes, some functions can operate on more than one scope.
+<ul>
+<li>Repository</li>
+<li>Nodetype</li>
+<li>Version</li>
+<li>NamspaceRegistry</li>
+<li>Workspace</li>
+<li>Query</li>
+<li>Observation</li>
+<li>State</li>
+<li>Xml</li>
+<li>Session</li>
+<li>Path</li>
+<li>HierarchyManager</li>
+<li>QName</li>
+<li>ItemImpl, PropertyImpl, NodeImpl</li>
+<li>ItemId, PropertyId, NodeId</li>
+<li>ItemManager</li>
+</ul>
+This is not a complete list but includes some of the most important component of the content
repository implementation.
+</p>
+</section>
+
+</body>
+</document>

Added: incubator/jackrabbit/trunk/xdocs/images/arch/deploy-1.png
==============================================================================
Binary file. No diff available.

Added: incubator/jackrabbit/trunk/xdocs/images/arch/deploy-2.png
==============================================================================
Binary file. No diff available.

Added: incubator/jackrabbit/trunk/xdocs/images/arch/deploy-3.png
==============================================================================
Binary file. No diff available.

Added: incubator/jackrabbit/trunk/xdocs/images/arch/overview.png
==============================================================================
Binary file. No diff available.

Modified: incubator/jackrabbit/trunk/xdocs/navigation.xml
==============================================================================
--- incubator/jackrabbit/trunk/xdocs/navigation.xml	(original)
+++ incubator/jackrabbit/trunk/xdocs/navigation.xml	Sat Sep 25 05:26:33 2004
@@ -17,8 +17,12 @@
 <project name="Jackrabbit">
     <title>Jackrabbit</title>
     <body>
-        <menu name="JCRRI">
+        <menu name="Apache Jackrabbit">
             <item name="Overview"                      href="/index.html" />
+            <item name="Architecture Documentation"    href="/arch/index.html"  collapse="true">
+            	<item name="Overview" href="arch/overview.html"/>
+            	<item name="Deployment Options" href="arch/deploy.html"/>            

+            </item>
             <item name="API&#xA0;Documentation"        href="/apidocs/index.html"
target="_blank"/>
             <item name="Layout"                        href="/layout.html"/>
             <item name="Downloads"                     href="/downloads.html"/>

Mime
View raw message