<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7832475216201619291</id><updated>2012-01-06T15:22:55.684+02:00</updated><category term='exojcr'/><category term='gatein'/><category term='jackrabbit'/><category term='jcr'/><category term='web-development'/><category term='ecm'/><category term='java'/><category term='cluster'/><category term='webdav'/><category term='wcm'/><category term='development'/><category term='jbosscache'/><category term='scrumaster'/><category term='maven2'/><category term='content-driven'/><category term='S3'/><category term='exoplatform'/><category term='rest'/><category term='project-management'/><category term='scrum'/><category term='agile'/><category term='web2.0'/><category term='coaching'/><category term='groovy'/><category term='jboss'/><category term='lgpl'/><category term='team-management'/><category term='eclipse'/><category term='product owner'/><category term='web-design'/><category term='exo'/><category term='jgroups'/><category term='sociology'/><category term='database'/><title type='text'>Content is everything</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nedonosko.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nedonosko.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Peter Nedonosko</name><uri>http://www.blogger.com/profile/15935725261504516657</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp3.blogger.com/_pzKqSIbyELY/SIuEy9NrXxI/AAAAAAAAAAM/cr62oKKw_H8/S220/pnedonosko.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7832475216201619291.post-2048373619917843369</id><published>2010-03-14T23:32:00.007+02:00</published><updated>2010-03-15T01:53:36.332+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jcr'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jbosscache'/><category scheme='http://www.blogger.com/atom/ns#' term='cluster'/><category scheme='http://www.blogger.com/atom/ns#' term='lgpl'/><category scheme='http://www.blogger.com/atom/ns#' term='jgroups'/><category scheme='http://www.blogger.com/atom/ns#' term='webdav'/><category scheme='http://www.blogger.com/atom/ns#' term='gatein'/><category scheme='http://www.blogger.com/atom/ns#' term='jboss'/><title type='text'>eXo JCR 1.12 is out</title><content type='html'>&lt;span style="font-weight: bold;"&gt;This week we have released a next step of eXoJCR evolution.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What is new and major in version 1.12?&lt;br /&gt;&lt;br /&gt;First of all eXoJCR it's an open-source implementation of JCR specification (&lt;a href="http://jcp.org/en/jsr/detail?id=170"&gt;JSR-170&lt;/a&gt;) and now it's under &lt;a href="http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License"&gt;LGPL&lt;/a&gt; license (was &lt;a href="http://en.wikipedia.org/wiki/Affero_General_Public_License"&gt;AGPL&lt;/a&gt;). LGPL means freedom for use in closed (commercial, private etc) projects. Doing this step we want to get more feedback about JCR technology in real world usecases.  At other hand lesser license opens us an opportunity to work with many &lt;a href="http://www.jboss.org/"&gt;JBoss&lt;/a&gt; teams and especially with Portal guys. &lt;a href="http://www.gatein.org/"&gt;GateIn&lt;/a&gt; portal it's a web face of a Content Repositories actually... as well as many other tasty features :).&lt;br /&gt;&lt;br /&gt;But eXoJCR 1.12 is very interesting technically also.&lt;br /&gt;&lt;br /&gt;Our new, big and #1 feature  today - &lt;span style="font-weight: bold;"&gt;clustering&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;It's not a very new option and we had a &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/Clustering"&gt;replication in 1.11&lt;/a&gt;. But it was designed for data synchronization between sites over Internet in on-line peer-to-peer mode (available since version 1.10). And then used by several our customers for a clustering in Intranet solutions. We gathered lot of feedback and real usecases and decided to re-implement it from the scratch in 1.12.&lt;br /&gt;&lt;br /&gt;The new clustering goals mean intensively loaded Repository work in corporate network or a cloud. At same time a main look made on read operations scalability what is general for Web applications.&lt;br /&gt;Technically the new cluster uses the same &lt;a href="http://www.jgroups.org/"&gt;JGroups&lt;/a&gt; transport well known to us by 1.11 replication (and still used in &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/Asynchronous+replication"&gt;asynchronous replication&lt;/a&gt;). But now the clustering work fully based on &lt;a href="http://www.jboss.org/jbosscache"&gt;JBossCache&lt;/a&gt;. We rely on JBoss experience in this field. And we have implemented not trivial task - hierarchical  JCR data caching over the JBossCache keeping a compatibility with existing persistence.  We also reimplemented JCR indexer and locks support on JBossCache.&lt;br /&gt;A complex work done and we're on a next iteration there.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Other main features &lt;/span&gt;of eXoJCR 1.12.0-GA since 1.11.2&lt;br /&gt;- Lazy-load option for child nodes and properties read, improved items&lt;br /&gt;dataflow for read/write operations&lt;br /&gt;- Alternative data container optimized for read operations (consuming&lt;br /&gt;less database queries). It's enabled by default.&lt;br /&gt;- Support of Java6 and Java5 runtimes and JDK&lt;br /&gt;- Database dialect can be autodetected (if not pointed in the configuration)&lt;br /&gt;- Support for Values large of 2GiB&lt;br /&gt;- Portal container configuration supports default definitions,&lt;br /&gt;links and externally loaded parameters&lt;br /&gt;- Support of MySQL/InnoDB database for multilingual content&lt;br /&gt;- Concurrency improvements for Session registry and Values storage&lt;br /&gt;- Concurrency improvements for XA transactions support (Repository&lt;br /&gt;login and logout are faster now)&lt;br /&gt;- Improved search based on Lucene 2.4&lt;br /&gt;- Standalone container can use configuration stored in JBoss application server&lt;br /&gt;configuration directory by default&lt;br /&gt;- WebDAV server update-policy can be configured to different&lt;br /&gt;versioning behaviour&lt;br /&gt;- Two new REST services introduced:&lt;br /&gt;* HTTP (RESTful) Backup agent with console client&lt;br /&gt;* HTTP (RESTful) Repository management service&lt;br /&gt;&lt;br /&gt;More info about inherited features from the previous versions 1.11.2 &lt;a href="http://nedonosko.blogspot.com/2009/07/exo-jcr-1112-overview.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;eXoJCR 1.12 was tested&lt;/span&gt; on databases/JDBC drivers:&lt;br /&gt;MySQL 5.1 MYSQL Connector/J 5.1.8&lt;br /&gt;Oracle DB 10g (10.2.0.1) Oracle 10g (10.2.0.1)&lt;br /&gt;PostgresSQL 8.3.7 JDBC4 Driver, Version 8.3-605&lt;br /&gt;DB2 9,7 IBM Data Server Driver for JDBC and SQLJ (JCC Driver)&lt;br /&gt;Version: 9.1 (fixpack 3a)&lt;br /&gt;MS SQL Server 2005 SP3 JDBC Driver 2.0&lt;br /&gt;MS SQL Server 2008 SP1 JDBC Driver 2.0&lt;br /&gt;Sybase 15.0.2 JConnect v6.0.5 (Build 26564 / 11 Jun 2009)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Downloads&lt;/span&gt; of a standalone &lt;a href="http://forge.ow2.org/project/showfiles.php?group_id=151&amp;amp;release_id=3863"&gt;eXoJCR bundles available&lt;/a&gt; now.&lt;br /&gt;Tomcat or EAR provides a network ready content server with several plain &lt;a href="http://nedonosko.blogspot.com/2009/07/exo-jcr-1112-overview.html"&gt;samples&lt;/a&gt;. It provides WebDAV and FTP (port 2121) services on the board.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;eXoJCR 1.12.0-GA jars&lt;/span&gt; are on &lt;a href="http://repository.jboss.org/maven2/org/exoplatform/jcr/exo.jcr.component.core/1.12.0-GA/"&gt;JBoss maven2 repo&lt;/a&gt; also.&lt;br /&gt;There are short &lt;a href="http://nedonosko.blogspot.com/2010/02/setup-development-on-exojcr-112.html"&gt;intro how to setup dev environment&lt;/a&gt; for eXoJCR 1.12.&lt;br /&gt;&lt;br /&gt;Where you can see eXoJCR in action (soon):&lt;br /&gt;eXoJCR 1.12 is a database of &lt;a href="http://www.gatein.org/"&gt;GateIn&lt;/a&gt; portal.&lt;br /&gt;eXoJCR 1.12 also used in &lt;a href="http://xcmis.org/"&gt;xCMIS&lt;/a&gt; - eXo's CMIS implementation.&lt;br /&gt;And our &lt;a href="http://bobbickel.blogspot.com/2010/02/exo-market-positioning.html"&gt;services&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;Lot of stuff... stay connected. Details more interesting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7832475216201619291-2048373619917843369?l=nedonosko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nedonosko.blogspot.com/feeds/2048373619917843369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7832475216201619291&amp;postID=2048373619917843369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default/2048373619917843369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default/2048373619917843369'/><link rel='alternate' type='text/html' href='http://nedonosko.blogspot.com/2010/03/exo-jcr-112-is-out.html' title='eXo JCR 1.12 is out'/><author><name>Peter Nedonosko</name><uri>http://www.blogger.com/profile/15935725261504516657</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp3.blogger.com/_pzKqSIbyELY/SIuEy9NrXxI/AAAAAAAAAAM/cr62oKKw_H8/S220/pnedonosko.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832475216201619291.post-1045056471323658091</id><published>2010-02-06T17:19:00.021+02:00</published><updated>2010-03-15T01:20:25.811+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jcr'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='maven2'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Setup of development on eXoJCR 1.12</title><content type='html'>Short intro in preparations to &lt;a href="http://www.jboss.org/exojcr"&gt;eXo JCR&lt;/a&gt; development.&lt;br /&gt;(repost of &lt;a href="http://nedonosko.blogspot.com/2009/07/setup-exo-jcr-development-environment.html"&gt;setup&lt;/a&gt;, adopted to eXoJCR 1.12)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.exoplatform.org/"&gt;eXo&lt;/a&gt; and &lt;a href="http://www.jboss.org/gatein/"&gt;GateIn&lt;/a&gt; products development based on &lt;a href="http://maven.apache.org/index.html"&gt;Maven2&lt;/a&gt; project management. Easiest way to start the development it's to setup right Maven2 project (&lt;a href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html"&gt;POM&lt;/a&gt;) and its dependencies.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Prerequisites&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/install.html"&gt;Java 5&lt;/a&gt; (add JDK executables to the PATH on your system)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://maven.apache.org/download.html#Installation"&gt;Maven2&lt;/a&gt; (add Maven2 2.2.1 or higher executable to the PATH on your system, )&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/downloads/"&gt;Eclipse&lt;/a&gt; (optional)&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Creating project (POM)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;We say that our project name is &lt;span style="font-style: italic;"&gt;my-jcrapp&lt;/span&gt; (use your name instead of this  dummy one).&lt;br /&gt;&lt;br /&gt;In empty folder run Maven command:&lt;br /&gt;&lt;br /&gt;For Java project:&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;blockquote&gt;mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=com.mycompany.exojcr -DartifactId=my-jcrapp&lt;/blockquote&gt;&lt;/span&gt;For Groovy enabled project:&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;mvn archetype:generate -DarchetypeGroupId=org.codehaus.groovy.maven.archetypes -DarchetypeArtifactId=gmaven-archetype-basic -DgroupId=com.mycompany.exojcr -DartifactId=my-jcrapp&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;The commend ask for a project version &lt;span style="font-style: italic;"&gt;Define value for version:  1.0-SNAPSHOT: :&lt;/span&gt;&lt;br /&gt;Press Enter or type your version, it then ask for confirmation - press Enter to agree.&lt;br /&gt;&lt;br /&gt;This command creates the project folder named &lt;span style="font-style: italic;"&gt;my-jcrapp&lt;/span&gt; with ready to use &lt;a href="http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html"&gt;files structure&lt;/a&gt;. There are &lt;span style="font-style: italic;"&gt;pom.xml&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;src&lt;/span&gt; folder with place for application code and tests. Project model (&lt;span style="font-style: italic;"&gt;pom.xml&lt;/span&gt;) contains dependencies declaration,  here is JUnit only (and Groovy runtime if you're groovy :) ).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;eXo JCR dependency&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Next, add &lt;a href="http://repository.jboss.org/maven2/org/exoplatform/jcr"&gt;eXo JCR dependency&lt;/a&gt; to the POM.&lt;br /&gt;eXoJCR jar files lives on &lt;a href="http://repository.jboss.com/maven2/"&gt;JBoss Maven2 repository&lt;/a&gt;. Add JBoss repo to Maven2 local repositories list: or into &lt;a href="http://maven.apache.org/settings.html"&gt;settings.xml&lt;/a&gt; or directly in the your project POM (add repositories element after the dependencies).&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;&lt;pre class="brush:xml"&gt;&amp;lt;repositories&amp;gt;&lt;br /&gt;&amp;lt;repository&amp;gt;&lt;br /&gt;&amp;lt;id&amp;gt;exo-int&amp;lt;/id&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt;jboss.org repository&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;http://repository.jboss.com/maven2 &amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;layout&amp;gt;default&amp;lt;/layout&amp;gt;&lt;br /&gt;&amp;lt;/repository&amp;gt;&lt;br /&gt;&amp;lt;/repositories&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;Now add the JCR core dependency:&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;pre class="brush:xml"&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupid&amp;gt;org.exoplatform.jcr&amp;lt;/groupid&amp;gt;&lt;br /&gt;&amp;lt;artifactid&amp;gt;exo.jcr.component.core&amp;lt;/artifactid&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.12.0-GA&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;If you need JCR Ext features then add this dependency (in fact you need only Ext one, it will points JCR core itself):&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;pre class="brush:xml"&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupid&amp;gt;org.exoplatform.jcr&amp;lt;/groupid&amp;gt;&lt;br /&gt;&amp;lt;artifactid&amp;gt;exo.jcr.component.ext&amp;lt;/artifactid&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.12.0-GA&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;/pre&gt;&lt;/span&gt;And it's ready to build!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Build project&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Run given command and wait till eXo JCR with its dependencies will be downloaded to your local Maven2 repo (~25Mb):&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;mvn clean compile&lt;/span&gt;&lt;/blockquote&gt; and be sure you see BUILD SUCCESSFUL at the end of this execution.&lt;br /&gt;&lt;br /&gt;If something goes wrong with the build check all step from the begin and proxy.&lt;br /&gt;&lt;br /&gt;Successful? Voi-la, you're ready to eXo JCR development!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Eclipse IDE&lt;/span&gt; setup read &lt;a href="http://nedonosko.blogspot.com/2009/07/setup-exo-jcr-development-environment.html"&gt;there&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Several notes about Groovy support in Eclipse.&lt;br /&gt;I have used &lt;a href="http://groovy.codehaus.org/Eclipse+Plugin"&gt;Groovy-Eclipse&lt;/a&gt; plugin of version 2.0.0 (&lt;a href="http://dist.springsource.org/release/GRECLIPSE/e3.5/"&gt;update site&lt;/a&gt;). After generation from maven2 project (via mvn eclipse:eclipse) and import into Eclipse I found that Groovy-Eclipse doesn't recognize the project as a Groovy project and as a result the plugin has no sense for development.&lt;br /&gt;Trouble can be fixed by Eclipse project file (.project) manual editing. Add the next line to natures element&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;&lt;pre class="brush:xml"&gt;&amp;lt;nature&amp;gt;org.eclipse.jdt.groovy.core.groovyNature&amp;lt;/nature&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;and refresh the project.&lt;br /&gt;Another issue with the plugin it's &lt;a href="http://docs.codehaus.org/display/GROOVY/Compiler+Switching+within+Groovy-Eclipse"&gt;switch to Groovy 1.6.x compiler&lt;/a&gt;. Why 1.6? eXoJCR 1.12 bundled with Groovy 1.6.5, it's better to use closer version in IDE.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7832475216201619291-1045056471323658091?l=nedonosko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nedonosko.blogspot.com/feeds/1045056471323658091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7832475216201619291&amp;postID=1045056471323658091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default/1045056471323658091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default/1045056471323658091'/><link rel='alternate' type='text/html' href='http://nedonosko.blogspot.com/2010/02/setup-development-on-exojcr-112.html' title='Setup of development on eXoJCR 1.12'/><author><name>Peter Nedonosko</name><uri>http://www.blogger.com/profile/15935725261504516657</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp3.blogger.com/_pzKqSIbyELY/SIuEy9NrXxI/AAAAAAAAAAM/cr62oKKw_H8/S220/pnedonosko.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832475216201619291.post-7476347659796159372</id><published>2009-10-11T15:06:00.005+03:00</published><updated>2009-10-11T15:31:53.672+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='product owner'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='team-management'/><category scheme='http://www.blogger.com/atom/ns#' term='coaching'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='scrumaster'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><category scheme='http://www.blogger.com/atom/ns#' term='project-management'/><category scheme='http://www.blogger.com/atom/ns#' term='sociology'/><title type='text'>About team truths and business</title><content type='html'>&lt;span style="font-weight: bold;"&gt;How personal truth and business can go together?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm very excited by the voice on the subject: "&lt;a href="http://paircoaching.wordpress.com/2009/10/08/facilitating-the-skill-of-multiple-partiality/"&gt;Facilitating: the skill of multiple partiality&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;Thank you, &lt;a href="http://twitter.com/YvesHanoulle"&gt;Yves&lt;/a&gt;&lt;a href="http://twitter.com/YvesHanoulle"&gt; Hanoulle&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;I as a Scrum Master and Super Scrum Master see fights between the truths on every sprint, especially on retrospectives. It is really hard to do not judge the side when his/her position makes (or can) the team commitments lower or causes team failures during the sprint. But he/she has its own truth...&lt;br /&gt;&lt;br /&gt;Usually I try to fulfill the company needs, keeping the team interests how it is possible. But so, I risk to do not fulfill the needs how the Product Owner (PMs etc) see them. At other hand there is a risk of team overkill as SM have to protect the developers . So in such case it would be simple to be neutral... yes, it's impossible actually. And yes - coaching might help to investigate and solve such problem.&lt;br /&gt;&lt;br /&gt;It is important to respect truths of all parties... but it is much important to make truths of all parties are right to the business.&lt;br /&gt;How to do that? Many tools: sociology, negotiations, leadership, common idea, shared responsibility... And run &lt;a href="http://en.wikipedia.org/wiki/Forming-storming-norming-performing"&gt;forming-storming-norming-performing&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;Thank you Yves again!&lt;br /&gt;&lt;br /&gt;I'm glad to find real-life questions and answers on your &lt;a href="http://paircoaching.wordpress.com/"&gt;blog&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://paircoaching.wordpress.com/2007/09/18/how-to-grow-a-self-organizing-team/" rel="bookmark" title="How to grow a self-organizing team…"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;How to grow a self-organizing team…&lt;/a&gt;&lt;br /&gt;&lt;a href="http://paircoaching.wordpress.com/2009/10/09/the-power-of-the-junior-on-the-team/" rel="bookmark" title="The power of the junior on the team"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;The power of the junior on the team&lt;/a&gt;&lt;br /&gt;&lt;a href="http://paircoaching.wordpress.com/2009/10/01/how-to-work-with-a-whiteboard-with-a-distributed-team/" rel="bookmark" title="How to work with a whiteboard with a distributed team?"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;How to work with a whiteboard with a distributed team?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7832475216201619291-7476347659796159372?l=nedonosko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nedonosko.blogspot.com/feeds/7476347659796159372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7832475216201619291&amp;postID=7476347659796159372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default/7476347659796159372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default/7476347659796159372'/><link rel='alternate' type='text/html' href='http://nedonosko.blogspot.com/2009/10/about-team-truths-and-business.html' title='About team truths and business'/><author><name>Peter Nedonosko</name><uri>http://www.blogger.com/profile/15935725261504516657</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp3.blogger.com/_pzKqSIbyELY/SIuEy9NrXxI/AAAAAAAAAAM/cr62oKKw_H8/S220/pnedonosko.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832475216201619291.post-6194315957456926149</id><published>2009-09-23T08:53:00.033+03:00</published><updated>2009-09-26T23:10:18.648+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web-design'/><category scheme='http://www.blogger.com/atom/ns#' term='jcr'/><category scheme='http://www.blogger.com/atom/ns#' term='jackrabbit'/><category scheme='http://www.blogger.com/atom/ns#' term='S3'/><category scheme='http://www.blogger.com/atom/ns#' term='web2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='web-development'/><category scheme='http://www.blogger.com/atom/ns#' term='wcm'/><category scheme='http://www.blogger.com/atom/ns#' term='webdav'/><category scheme='http://www.blogger.com/atom/ns#' term='exojcr'/><category scheme='http://www.blogger.com/atom/ns#' term='ecm'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>JCR based Content Management</title><content type='html'>&lt;span style="font-size:130%;"&gt;Why JCR is good for Content Management? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;JCR standard  (Java Content Repository, &lt;a href="http://jcp.org/en/jsr/detail?id=170"&gt;JSR-170&lt;/a&gt;) prescribed several best-practices already existing in content-management. Versioning, locking, content types, observation XML export/import and search - all of them were already implemented and sold to customers. But each one in "a bit" different, proprietary way.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Application developers and custom solution integrators will be able to avoid the costs associated with learning the particular API of each repository vendor. Instead, programmers will be able to develop content-based application logic independently of the underlying repository architecture or physical storage.&lt;br /&gt;Customers will also benefit by being able to exchange their underlying repositories without touching any of the applications built on top of them&lt;/blockquote&gt;&lt;br /&gt;Sounds good! It is good actually!&lt;br /&gt;&lt;br /&gt;JCR it is a software developers API not a content writers tool.  But can be used pretty (and should) to create amazing content-oriented products and concentrate on goals.&lt;br /&gt;&lt;br /&gt;In addition to mentioned features (versions, locks etc) JCR gives high-level abstraction on actual data storage. Content developer doesn't care about a content storage location (files, database, S3) and creates features on top of JCR Repositories.&lt;br /&gt;Each Repository consists at least one Workspace. But when you can have several it will be naturally to implement workflow like "draft", "acceptance", "production" and "backup".&lt;br /&gt;Workspaces support Corresponding Nodes (4.10.2), so content branching and update between workspaces are native to JCR. Lot of opportunities with it...&lt;br /&gt;&lt;br /&gt;Discussing &lt;a href="http://cherevik.com/?p=182"&gt;is One Repository Even an Option&lt;/a&gt;? It's interesting to apply JCR features for such question.&lt;br /&gt;The question is wide and a business related but in some sense it can be satisfied for both sides.&lt;br /&gt;JCR Repository can contains several Workspaces with data from very different sources (databases, files and even in-cloud like &lt;a href="http://aws.amazon.com/s3/"&gt;Amazon S3&lt;/a&gt;). Each workspace connects via configuration and actual data location is fully transparent for content users.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;JCR implementation can supports many persistent backends actually.&lt;br /&gt;While SQL database connected Workspaces for a production, we on eXo have SimpleDB experimental support also. &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/"&gt;eXo JCR&lt;/a&gt; persistent layer has CRUD API and can be implemented independently on other features.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;On other hand JCR specification might seem not complete as it doesn't cover network access to a content. But shouldn't. It's the Java API only.&lt;br /&gt;Here JCR vendors make the game. For example &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/"&gt;eXo JCR&lt;/a&gt; and &lt;a href="http://jackrabbit.apache.org/"&gt;Jackrabbit&lt;/a&gt; have such option as WebDAV access to a Repository. That gives a great opportunity to use JCR hosted content in web-pages without coding.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Real example of JCR based CMS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.exoplatform.org/2009/09/18/exo-wcm-1-2-four-videos-for-a-complete-overview/"&gt;eXo WCM 1.2&lt;/a&gt;. &lt;a href="http://forge.ow2.org/project/showfiles.php?group_id=151"&gt;Distro&lt;/a&gt; comes with lot of cool options and it runs fully on JCR storage and brings many JCR features to a content users.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;strong&gt;&lt;a href="http://www.exoplatform.com/"&gt;eXoPlatform&lt;/a&gt; &lt;a href="http://www.exoplatform.com/portal/public/website/product/exomodules/ecm/wcm/wcmoverview"&gt;Web Content Management&lt;/a&gt;&lt;/strong&gt; solution is emerging to help webmasters who handle all tasks needed to run a website, including development, deployment, design, content publication and monitoring. WCM facilitates managing website easily. In addition, the Webmasters are no more the only actors in the spotlight. Each member in the community is welcome to collaborate and contribute depending on his/her rights. All these features contribute to make the website management agile and less onerous.&lt;/blockquote&gt;&lt;br /&gt;Interesting? Find more in the &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/WCM/WCM+Manual#HUserManual"&gt;wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'll show here how eXo WCM leverages JCR features for Content creation and sharing.&lt;br /&gt;&lt;br /&gt;Usecase: one Repository... distributed worldwide.&lt;br /&gt;Our virtual European company will provide information from one of its partners in United States on the company's site Home page.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.exoplatform.com/portal/public/website/product/__downloadcommunity"&gt;Download&lt;/a&gt; &lt;a href="http://www.exoplatform.com/portal/public/website/product/__downloadcommunity"&gt;and install&lt;/a&gt; eXo WCM on virtual company host. Run it and open Home page http://localhost:8080/portal. (user: root, password:exo)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pzKqSIbyELY/Sr3Fc6DebZI/AAAAAAAAAR0/RZ0tu7HRs1c/s1600-h/home.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 208px;" src="http://1.bp.blogspot.com/_pzKqSIbyELY/Sr3Fc6DebZI/AAAAAAAAAR0/RZ0tu7HRs1c/s320/home.PNG" alt="" id="BLOGGER_PHOTO_ID_5385677829815823762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is a default eXo WCM Home page. Let's customize company Home page with the partner content. Partner company runs similar WCM instance and both WCMs are configured in &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/JDBC+Data+Container+config#HMultidatabaseConfiguration"&gt;multi-db&lt;/a&gt; JCR mode.&lt;br /&gt;We configure dedicated workspace "exo-partner1" on both WCMs. This workspace will be connected to a one physical database (e.g. on partner side).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_pzKqSIbyELY/Sr3W7kcgGcI/AAAAAAAAASM/Jo_n_TFxLJE/s1600-h/partner1-ws-model.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 140px;" src="http://2.bp.blogspot.com/_pzKqSIbyELY/Sr3W7kcgGcI/AAAAAAAAASM/Jo_n_TFxLJE/s320/partner1-ws-model.PNG" alt="" id="BLOGGER_PHOTO_ID_5385697048288827842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In addition to a JCR's Workspaces the eXo WCM introduces concept of &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/ECM/Drives+Concept"&gt;Drive&lt;/a&gt;. Drive it is a sub-tree of Nodes or whole Workspace. Drive provides additional logical layer to a content management and allows to create different UI presentations dedicated to tasks.&lt;br /&gt;&lt;br /&gt;Connect "exp-partner1" workspace as a new Drive (Groups-&gt;Sites Administrator-&gt;Content Presentation-&gt;Manage Drives-&gt;Add Drive) with rights to administrative group (&lt;span style="font-style: italic;"&gt;*:/platform/administrators&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pzKqSIbyELY/Sr3KiYSAVjI/AAAAAAAAAR8/UmHsg7XHJKM/s1600-h/new_drive.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 235px;" src="http://1.bp.blogspot.com/_pzKqSIbyELY/Sr3KiYSAVjI/AAAAAAAAAR8/UmHsg7XHJKM/s320/new_drive.PNG" alt="" id="BLOGGER_PHOTO_ID_5385683421387314738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now  data can be simple shared between the company and the partner in one Repository. Users can read/write this workspace content, e.g. in WCM SitesExplorer or via WebDAV. And they can don't know where and how actual data is located at all.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pzKqSIbyELY/Sr3TQGrBx1I/AAAAAAAAASE/69-uUpC2SJA/s1600-h/partner1-ws.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 229px;" src="http://1.bp.blogspot.com/_pzKqSIbyELY/Sr3TQGrBx1I/AAAAAAAAASE/69-uUpC2SJA/s320/partner1-ws.PNG" alt="" id="BLOGGER_PHOTO_ID_5385693003027433298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Customizing the company Home page. Another cool feature of eXo WCM it's &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/WCM/WCM+1-2+for+Beginners"&gt;switcher from Live to Edit mode&lt;/a&gt; makes this task pretty simple. Switch to  Edit mode.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pzKqSIbyELY/Sr3YGp857LI/AAAAAAAAASU/1rd7j3QRyv4/s1600-h/edit-site1.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 176px;" src="http://3.bp.blogspot.com/_pzKqSIbyELY/Sr3YGp857LI/AAAAAAAAASU/1rd7j3QRyv4/s320/edit-site1.PNG" alt="" id="BLOGGER_PHOTO_ID_5385698338257104050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now we can edit each page part just in few clicks. Let's change the Test part.&lt;br /&gt;Go to Image Properties of the existing image and fix its link to a partner's image. WCM uses "collaboration" workspace for a content. But we have market investigation report in "exo-partner1" workspace. JCR path to the file in the workspace &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;/reports-09-2009/web2.0-techs-fall2009.jpg&lt;/span&gt;. And Repository content available via WebDAV. So, we can point the file from the page with the URL &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;http://localhost:18080/rest/private/jcr/repository/exo-partner1/reports-09-2009/web2.0-techs-fall2009.jpg&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pzKqSIbyELY/Sr3aThYLiCI/AAAAAAAAASk/Vbfo9JFd538/s1600-h/edit-site2.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 149px;" src="http://1.bp.blogspot.com/_pzKqSIbyELY/Sr3aThYLiCI/AAAAAAAAASk/Vbfo9JFd538/s320/edit-site2.PNG" alt="" id="BLOGGER_PHOTO_ID_5385700758317140002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Fix background color of CSS in Advanced tab and the customization is done. Click save and see the Home page.&lt;br /&gt;Cool! How simple we can do such work with eXo WCM and JCR.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pzKqSIbyELY/Sr3cDKaoAOI/AAAAAAAAAS0/988ywxFa8KA/s1600-h/edited-side.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://4.bp.blogspot.com/_pzKqSIbyELY/Sr3cDKaoAOI/AAAAAAAAAS0/988ywxFa8KA/s320/edited-side.PNG" alt="" id="BLOGGER_PHOTO_ID_5385702676298727650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In the example I have used eXo WCM features out of the box.&lt;br /&gt;But the product is open for extensions and many custom needs can be added simple. E.g. the example can be improved with JCR Corresponding Nodes (4.10.2) feature. Then content from "exo-partner1" workspace will be cloned to "business" workspace with enabled versioning; additional operations on the content also can be implemented via Observation (8.3) or &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/JCR+Extensions"&gt;Action Extensions&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;JCR spec designed as Java API but when it is used deeply in a CMS tool, all those features becomes available to users making a  content development better.  It is open specification and there are several open-source implementations of it. That gives a freedom of choose of CM product to a content providers. At other hand developers can create content-oriented applications independently on Repository implementation and work on features but not on storages. Useful!&lt;br /&gt;&lt;br /&gt;Next version of JCR comes (JSR-283) , it was approved and it's time of implementation now.&lt;br /&gt;On other side there are several projects of JCR integration/implementation in non-Java environments, e.g. &lt;a href="http://forge.typo3.org/projects/show/package-typo3cr"&gt;Typo3 CR&lt;/a&gt; or &lt;a href="https://fosswiki.liip.ch/display/jackalope/Home"&gt;Jackalope&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;JCR standard is useful for CMS, that is about it actually.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7832475216201619291-6194315957456926149?l=nedonosko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nedonosko.blogspot.com/feeds/6194315957456926149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7832475216201619291&amp;postID=6194315957456926149' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default/6194315957456926149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default/6194315957456926149'/><link rel='alternate' type='text/html' href='http://nedonosko.blogspot.com/2009/09/jcr-based-content-management.html' title='JCR based Content Management'/><author><name>Peter Nedonosko</name><uri>http://www.blogger.com/profile/15935725261504516657</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp3.blogger.com/_pzKqSIbyELY/SIuEy9NrXxI/AAAAAAAAAAM/cr62oKKw_H8/S220/pnedonosko.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_pzKqSIbyELY/Sr3Fc6DebZI/AAAAAAAAAR0/RZ0tu7HRs1c/s72-c/home.PNG' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832475216201619291.post-388755272622555988</id><published>2009-07-30T00:24:00.029+03:00</published><updated>2009-07-31T13:54:12.395+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jcr'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='maven2'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Setup eXo JCR development environment</title><content type='html'>Short intro in preparations to &lt;a href="http://nedonosko.blogspot.com/2009/07/exo-jcr-1112-overview.html"&gt;eXo JCR&lt;/a&gt; development.&lt;br /&gt;&lt;br /&gt;All eXo products development based on &lt;a href="http://maven.apache.org/index.html"&gt;Maven2&lt;/a&gt; project management. So, easiest way to start the development with eXo it's to setup right Maven2 project and its dependencies.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/Portal/"&gt;eXo Portal&lt;/a&gt; (and &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/ECM/"&gt;ECM&lt;/a&gt;, &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/ECM/DMS"&gt;DMS,&lt;/a&gt; &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/WCM/"&gt;WCM&lt;/a&gt;, &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/CS/"&gt;CS&lt;/a&gt;, &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/KS/"&gt;KS&lt;/a&gt; etc) developers can find lot of useful resources on eXo wiki:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/Main/Developers"&gt;eXo Developers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/Products+Interop/Create+a+Custom+Product"&gt;Create Custom Product&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/Main/Building+from+sources"&gt;Build eXo from sources&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;All thing from there are actual for &lt;a href="http://nedonosko.blogspot.com/2009/07/exo-jcr-1112-overview.html"&gt;eXo JCR&lt;/a&gt; development also... but there is easiest way - just setup a right &lt;a href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html"&gt;POM&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Prerequisites&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/install.html"&gt;Java 5&lt;/a&gt; (add JDK executables to the PATH on your system)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://maven.apache.org/download.html#Installation"&gt;Maven2&lt;/a&gt; (add Maven2 executables to the PATH on your system, )&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/downloads/"&gt;Eclipse&lt;/a&gt; (optional)&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Creating project (POM)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;We say that our project name is &lt;span style="font-style: italic;"&gt;my-jcrapp&lt;/span&gt; (use your name instead of this  dummy one).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;In empty folder run Maven command:&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;mvn archetype:create -DgroupId=com.mycompany.exojcr -DartifactId=my-jcrapp&lt;/span&gt;&lt;/blockquote&gt;This command creates the project folder named &lt;span style="font-style: italic;"&gt;my-jcrapp&lt;/span&gt; with ready to use &lt;a href="http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html"&gt;files structure&lt;/a&gt;. There are &lt;span style="font-style: italic;"&gt;pom.xml&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;src&lt;/span&gt; folder with place for application code and tests. Project model (&lt;span style="font-style: italic;"&gt;pom.xml&lt;/span&gt;) contains dependencies declaration,  here is only JUnit now.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;eXo JCR dependency&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So, you have to add &lt;a href="http://maven2.exoplatform.org/rest/maven2/org/exoplatform/jcr/exo.jcr.component.core/1.11.2"&gt;eXo JCR dependency&lt;/a&gt; to the POM...&lt;br /&gt;&lt;br /&gt;but... eXo JCR jar files don't live on &lt;a href="http://repo1.maven.org/maven2/"&gt;central Maven2 repository&lt;/a&gt;, they are on &lt;a href="http://maven2.exoplatform.org/"&gt;eXoPlatform one.&lt;/a&gt;&lt;br /&gt;Add eXo repo to Maven2 local repositories list: or into &lt;a href="http://maven.apache.org/settings.html"&gt;settings.xml&lt;/a&gt; or directly in the your project POM (add repositories element after the dependencies).&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;&lt;pre class="brush:xml"&gt;&amp;lt;repositories&amp;gt;&lt;br /&gt; &amp;lt;repository&amp;gt;&lt;br /&gt;   &amp;lt;id&amp;gt;exo-int&amp;lt;/id&amp;gt;&lt;br /&gt;   &amp;lt;name&amp;gt;exoplatform.org repository&amp;lt;/name&amp;gt;&lt;br /&gt;   &amp;lt;url&amp;gt;http://maven2.exoplatform.org/rest/maven2 &amp;lt;/url&amp;gt;&lt;br /&gt;   &amp;lt;layout&amp;gt;default&amp;lt;/layout&amp;gt;&lt;br /&gt; &amp;lt;/repository&amp;gt;&lt;br /&gt;&amp;lt;/repositories&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;Now add the JCR core dependency:&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;pre class="brush:xml"&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt; &amp;lt;groupid&amp;gt;org.exoplatform.jcr&amp;lt;/groupid&amp;gt;&lt;br /&gt; &amp;lt;artifactid&amp;gt;exo.jcr.component.core&amp;lt;/artifactid&amp;gt;&lt;br /&gt; &amp;lt;version&amp;gt;1.11.2&amp;lt;/version&amp;gt;&lt;br /&gt; &amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;If you need JCR Ext features then add this dependency (in fact you need only Ext one, it will points JCR core itself):&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;pre class="brush:xml"&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt; &amp;lt;groupid&amp;gt;org.exoplatform.jcr&amp;lt;/groupid&amp;gt;&lt;br /&gt; &amp;lt;artifactid&amp;gt;exo.jcr.component.ext&amp;lt;/artifactid&amp;gt;&lt;br /&gt; &amp;lt;version&amp;gt;1.11.2&amp;lt;/version&amp;gt;&lt;br /&gt; &amp;lt;scope&amp;gt;compile&amp;lt;/scope&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;/pre&gt;&lt;/span&gt;And it's ready to build!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Build project&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Run given command and wait till eXo JCR with its dependencies will be downloaded to your local Maven2 repo (~25Mb):&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;mvn clean compile&lt;/span&gt;&lt;/blockquote&gt; and be sure you see BUILD SUCCESSFUL at the end of this execution.&lt;br /&gt;&lt;br /&gt;If something goes wrong with the build check all step from the begin and proxy.&lt;br /&gt;&lt;br /&gt;Successful? Voi-la, you're ready to eXo JCR development!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;IDE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To write real code you need any of good Java IDE.&lt;br /&gt;We're &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/Main/Eclipse+Configuration"&gt;using Eclipse&lt;/a&gt;, the best one :). But NetBeans or &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/Main/How+to+import+in+Intellij+Idea"&gt;Intellij&lt;/a&gt; Idea so good also.&lt;br /&gt;Those short instructions are actual for any IDE, but I assumed that the IDE supports import of existing sources.&lt;br /&gt;&lt;br /&gt;The best way it's to load just created &lt;span style="font-style: italic;"&gt;my-jcrapp &lt;/span&gt;Maven2 project&lt;span style="font-style: italic;"&gt;&lt;/span&gt; to the IDE.&lt;br /&gt;Maven2 helps great with this task. Create Eclipse project files by the command:&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:100%;"&gt;mvn eclipse:eclipse&lt;/span&gt;&lt;/blockquote&gt;Then open Eclipse and Import the project as an existing project.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_pzKqSIbyELY/SnDVpExfV6I/AAAAAAAAAOg/Ll92tAzDv2I/s1600-h/eclipse_import1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 277px; height: 320px;" src="http://2.bp.blogspot.com/_pzKqSIbyELY/SnDVpExfV6I/AAAAAAAAAOg/Ll92tAzDv2I/s320/eclipse_import1.JPG" alt="" id="BLOGGER_PHOTO_ID_5364022057830930338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Add local Maven2 repo path variable M2_REPO to Java build classpath:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pzKqSIbyELY/SnDbndi8RWI/AAAAAAAAAOo/gILvt_AfAWs/s1600-h/eclipse_M2_REPO.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 284px;" src="http://4.bp.blogspot.com/_pzKqSIbyELY/SnDbndi8RWI/AAAAAAAAAOo/gILvt_AfAWs/s320/eclipse_M2_REPO.JPG" alt="" id="BLOGGER_PHOTO_ID_5364028627190826338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now the project is ready to development in Eclipse:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pzKqSIbyELY/SnDcpIp2OfI/AAAAAAAAAOw/MIVICtyEQQo/s1600-h/eclipse_import2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 205px;" src="http://1.bp.blogspot.com/_pzKqSIbyELY/SnDcpIp2OfI/AAAAAAAAAOw/MIVICtyEQQo/s320/eclipse_import2.JPG" alt="" id="BLOGGER_PHOTO_ID_5364029755454011890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7832475216201619291-388755272622555988?l=nedonosko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nedonosko.blogspot.com/feeds/388755272622555988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7832475216201619291&amp;postID=388755272622555988' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default/388755272622555988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default/388755272622555988'/><link rel='alternate' type='text/html' href='http://nedonosko.blogspot.com/2009/07/setup-exo-jcr-development-environment.html' title='Setup eXo JCR development environment'/><author><name>Peter Nedonosko</name><uri>http://www.blogger.com/profile/15935725261504516657</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp3.blogger.com/_pzKqSIbyELY/SIuEy9NrXxI/AAAAAAAAAAM/cr62oKKw_H8/S220/pnedonosko.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_pzKqSIbyELY/SnDVpExfV6I/AAAAAAAAAOg/Ll92tAzDv2I/s72-c/eclipse_import1.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832475216201619291.post-8757179832994164189</id><published>2009-07-27T20:59:00.029+03:00</published><updated>2009-08-22T15:08:05.179+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jcr'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='exoplatform'/><category scheme='http://www.blogger.com/atom/ns#' term='exo'/><category scheme='http://www.blogger.com/atom/ns#' term='content-driven'/><title type='text'>eXo JCR 1.11.2: overview</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;a href="http://blog.exoplatform.org/2009/07/27/exo-jcr-1112-released/"&gt;eXo JCR 1.11.2 is out&lt;/a&gt; - What are inside.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is a new version of our JCR 1.x product line.&lt;br /&gt;It will be a "database" for a next version of &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/Portal/"&gt;eXo Portal&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.jboss-portal.org/2009/06/welcome-exo.html"&gt;eXo JBoss JCR&lt;/a&gt; &lt;a href="http://blog.exoplatform.org/tags/exo/"&gt;project&lt;/a&gt; will be based on this release codebase also.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;With many features listed below eXo JCR is ready to &lt;a href="http://www.slideshare.net/jgollner/content-oriented-architectures-coa"&gt;content-oriented-architecture&lt;/a&gt;.  Check them here in short or visit &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/"&gt;eXo JCR wiki&lt;/a&gt; for a full list of capabilities.&lt;br /&gt;&lt;br /&gt;Try eXo JCR in action via bundled samples - read after the features.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Main features&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;eXo JCR it’s an implementation of &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/JCR+%28JSR%2D170%29+API+main+concepts"&gt;Java Content Repository API&lt;/a&gt; (&lt;a href="http://jcp.org/en/jsr/detail?id=170"&gt;JSR-170&lt;/a&gt;). Java Content Repository provides common &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/Compatibility+Levels"&gt;programmatic interface&lt;/a&gt; to stores of hierarchical and unstructured data, content &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/Compatibility+Levels#HLevelsofCompatibility"&gt;versioning&lt;/a&gt;, &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/Locking"&gt;locking&lt;/a&gt;, &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/Compatibility+Levels#HLevelsofCompatibility"&gt;observation&lt;/a&gt;, &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/Searching+Repository+Content"&gt;search&lt;/a&gt; (including full-text search), content &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/How+to+JCR+import+export"&gt;export/import&lt;/a&gt; and many more.&lt;br /&gt;&lt;br /&gt;In addition to JSR-170 features we provide &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/JCR+Extensions"&gt;Extension Actions API&lt;/a&gt; which allow use of programmatic actions triggering on content update or access. Actions can be configured via filters.&lt;br /&gt;&lt;p&gt;Plus you can find set of useful Extensions out of the box:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/Registry+Service"&gt;Registry service&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Replication (&lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/Clustering"&gt;Synchronous&lt;/a&gt; and &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/Asynchronous+replication"&gt;Asynchronous&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/Organization+Service"&gt;Organization service&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/Backup+service"&gt;Backup service&lt;/a&gt; and &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/Backup+client"&gt;HTTP backup agent&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/Access+Control+extension"&gt;Access-control actions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/Metadata+Extensions"&gt;Metadata actions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/REST+Groovy+services"&gt;Node Representation service&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/Groovy+REST+Services"&gt;Groovy REST-services&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/Auditing"&gt;Audit service&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/Using+JCR#HJCRApplicationpractices"&gt;Session providers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/NodeType+registration"&gt;Node Types registration&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/Namespace+altering"&gt;Namespace altering&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/Repository++and+Workspace+management"&gt;Repository  and Workspace management&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;eXo JCR supports &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/RMI"&gt;RMI&lt;/a&gt;, &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/WebDav"&gt;WebDAV&lt;/a&gt; and &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/FTP"&gt;FTP&lt;/a&gt; network access to a repository.&lt;br /&gt;&lt;p&gt;Repository implementation &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/JDBC+Data+Container+config"&gt;uses database&lt;/a&gt; as a persistent storage for a content. We support  Oracle, DB2, MySQL, PostgreSQL, MSSQL, Ingres, Derby and HSQLDB backends.&lt;/p&gt; It’s possible to store content using &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/External+Value+Storages"&gt;External Value storage&lt;/a&gt;. Our implementation comes with several file-system storages.  External Value storage API allows develop custom storages e.g. for store data on type or in customer databases.&lt;br /&gt;&lt;p&gt;Additionally we’re supporting Amazon Web Services as a backend:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/External+Value+Storages#HS3FileValueStorage"&gt;S3 External Value Storage&lt;/a&gt; (stores only Values on S3)&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/Workspace+SimpleDB+storage"&gt;SimpleDB Workspace storage&lt;/a&gt; (Beta status)&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;span style="font-weight: bold;"&gt;Samples&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To see the JCR in action download eXo JCR Tomcat &lt;a href="http://download.forge.objectweb.org/exoplatform/exo-jcr-1.11.2-tomcat.zip"&gt;bundle&lt;/a&gt;, extract it in empty folder and run &lt;span style="font-style: italic;"&gt;eXo.bat&lt;/span&gt; (&lt;span style="font-style: italic;"&gt;eXo.sh&lt;/span&gt; for Unixes) fron &lt;span style="font-style: italic;"&gt;bin&lt;/span&gt; folder. Bundle contains full JCR with dependencies - it's ready base for eXo &amp;amp; JCR development.&lt;br /&gt;There are two very simple visual applications: JCR browser and JCR FCKeditor. After the Tomcat started open the url: &lt;a href="http://localhost:8080/browser"&gt;http://localhost:8080/browser&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pzKqSIbyELY/Sm6dSDp2FQI/AAAAAAAAAOI/jfZVqrPLH4o/s1600-h/jcr-browser1.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 278px;" src="http://3.bp.blogspot.com/_pzKqSIbyELY/Sm6dSDp2FQI/AAAAAAAAAOI/jfZVqrPLH4o/s320/jcr-browser1.PNG" alt="" id="BLOGGER_PHOTO_ID_5363397139788862722" border="0" /&gt;&lt;/a&gt;Sample bundles comes with enabled &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/WebDav"&gt;WebDAV&lt;/a&gt; and &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/FTP"&gt;FTP&lt;/a&gt; JCR servers also. So you can surf Repository from external, e.g. via Windows Web-folders or any FTP-client (port 2121).&lt;br /&gt;&lt;br /&gt;Open WebDAV view &lt;a href="http://localhost:8080/rest/jcr/repository/production/"&gt;http://localhost:8080/rest/jcr/repository/production/&lt;/a&gt; (for Windows Web-folders open vie InternetExplorer: Ctrl+O, enter the view url and enable "Open as Web-folder").&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_pzKqSIbyELY/Sm6eiMAu6QI/AAAAAAAAAOQ/fpgmKEy3t2I/s1600-h/webdav_open.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 170px;" src="http://3.bp.blogspot.com/_pzKqSIbyELY/Sm6eiMAu6QI/AAAAAAAAAOQ/fpgmKEy3t2I/s320/webdav_open.PNG" alt="" id="BLOGGER_PHOTO_ID_5363398516421880066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;We provide Samples as EAR also. Deploy procedure described in the readme.txt of the bundle. EAR contains full JCR with dependencies and same samples as Tomcat bundle.&lt;br /&gt;&lt;br /&gt;RMI bundle contains &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/RMI"&gt;RMI&lt;/a&gt; Server and sample client binaries, it's useful example to start JCR-RMI coding.&lt;br /&gt;&lt;br /&gt;All eXo JCR Samples runs in &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/Kernel/Service+Configuration+for+Beginners#HStandaloneContainer"&gt;StandaloneContainer&lt;/a&gt;, so it's ready to embedding to another applications or can be used as standalone application (web or via main class).&lt;br /&gt;&lt;br /&gt;eXo JCR can be used in &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/Kernel/Service+Configuration+for+Beginners#HPortalContainer"&gt;PortalContainer&lt;/a&gt; also, &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/Portal/"&gt;eXo Portal&lt;/a&gt; uses it in that way.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Main changes of eXo JCR 1.11.2&lt;/strong&gt; &lt;ul&gt;&lt;li&gt;JCR Core Binary Values improved processing: use of input stream with only on-demand spooling of big Binary Values.&lt;/li&gt;&lt;li&gt; Asynchronous and Synchronous replication Binary Values processing improved: changes storage for replication use less amount of files&lt;/li&gt;&lt;li&gt;Lot of Asynchronous replication improvements: merger, subscriber lifecycle, connection and local storage consistency etc.&lt;/li&gt;&lt;li&gt;Synchronous Replication Proxy mode simple configuration. Proxy Replication allows several running servers on the same physical host (useful for development).&lt;/li&gt;&lt;li&gt;Support of Values large of 2GiB in External Value Storage.&lt;/li&gt;&lt;li&gt;JCR Core Node.gatProperties() bugfix of duplicate Properties returned for unsaved Node  when changes occurs in another Session.&lt;/li&gt;&lt;li&gt;Lot of minor Backup Service bugs fixed. Asynchronous restore support added.&lt;/li&gt;&lt;li&gt;HTTP Backup agent improvements of API.&lt;/li&gt;&lt;li&gt;WeBDAV codestyle refactoring and bugfixes of PROPPATCH and DELETE calls&lt;/li&gt;&lt;li&gt;Version history Import/Export utility bugfix of Items import.&lt;/li&gt;&lt;/ul&gt;Find more about eXo JCR on &lt;a href="http://wiki.exoplatform.com/xwiki/bin/view/JCR/"&gt;wiki&lt;/a&gt;. &lt;p&gt;Ask about JCR on the Community &lt;a href="http://www.exoplatform.org/portal/public/website/community/forum"&gt;forum&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Download eXo JCR 1.11.2 from OW2 Forge &lt;a href="http://forge.ow2.org/project/showfiles.php?group_id=151"&gt;page&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Sources repository &lt;a href="http://svn.exoplatform.org/svnroot/exoplatform/projects/jcr/tags/1.11.2"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7832475216201619291-8757179832994164189?l=nedonosko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nedonosko.blogspot.com/feeds/8757179832994164189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7832475216201619291&amp;postID=8757179832994164189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default/8757179832994164189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default/8757179832994164189'/><link rel='alternate' type='text/html' href='http://nedonosko.blogspot.com/2009/07/exo-jcr-1112-overview.html' title='eXo JCR 1.11.2: overview'/><author><name>Peter Nedonosko</name><uri>http://www.blogger.com/profile/15935725261504516657</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp3.blogger.com/_pzKqSIbyELY/SIuEy9NrXxI/AAAAAAAAAAM/cr62oKKw_H8/S220/pnedonosko.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_pzKqSIbyELY/Sm6dSDp2FQI/AAAAAAAAAOI/jfZVqrPLH4o/s72-c/jcr-browser1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832475216201619291.post-7426031392448167104</id><published>2008-10-24T23:08:00.029+03:00</published><updated>2008-10-25T15:46:25.630+03:00</updated><title type='text'>New eXo Platform JCR v.1.10</title><content type='html'>&lt;div  style="text-align: center;font-family:arial;"&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:100%;"&gt;Today we have released &lt;a href="http://www.exoplatform.org/"&gt;eXo Platform&lt;/a&gt; &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/"&gt;JCR&lt;/a&gt; v.1.10.&lt;br /&gt;&lt;br /&gt;This is a improvement version of 1.x JCR family&lt;br /&gt;which comming with set of new features.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;JCR 1.10 contains such new features&lt;/span&gt;&lt;span style="font-size:100%;"&gt; as&lt;br /&gt;- JCR based Organization Service&lt;br /&gt;- Amazon SimpleDB &lt;/span&gt;&lt;span style="font-size:100%;"&gt;support &lt;/span&gt;&lt;span style="font-size:100%;"&gt;for Workspace &lt;/span&gt;&lt;span style="font-size:100%;"&gt;storage&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;- Repositoy management with ONLINE, READ-ONLY and OFFLINE &lt;/span&gt;&lt;span style="font-size:100%;"&gt;states&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;- Content Addressable External Values Storage&lt;br /&gt;- New authentication policy mechanism&lt;br /&gt;- FCKeditor uses REST based access to JCR resources&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Main improvements&lt;/span&gt;&lt;span style="font-size:100%;"&gt; are&lt;br /&gt;- Cache optimization for Items access and modification&lt;br /&gt;- Replication members connection recovery and priority mechanism&lt;br /&gt;- Replication BLOBs processing mechanism&lt;br /&gt;- SessionProvider multithreading usage&lt;br /&gt;- Item Move and Remove operations optimization&lt;br /&gt;- ACL and Permissions logic upgraded&lt;br /&gt;&lt;br /&gt;In this release we work on &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;quality and performance of JCR core&lt;/span&gt;&lt;span style="font-size:100%;"&gt;.&lt;br /&gt;You will meet better speed of Items Move, Copy, Clone and Remove&lt;br /&gt;operations.&lt;br /&gt;Versioning and Locking operations are faster now too.&lt;br /&gt;Be in touch with eXo JCR performance &amp;amp; QA process &lt;a href="http://tests.exoplatform.org/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;We have modernized our Replication service&lt;/span&gt;&lt;span style="font-size:100%;"&gt;.&lt;br /&gt;The service new features such as Members priority and&lt;br /&gt;Member 'heart-beat' mechanism will help implement more realistic&lt;br /&gt;JCR Cluster.&lt;br /&gt;Replication BLOBs operations were tested again and some issues fixed.&lt;br /&gt;New articles about Replication/Cluster configuration published on eXo wiki.&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/Replication+configuration"&gt;configuration for JCR 1.8, 1.9 and higher&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/Clustering"&gt;Cluster implementation&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/Replication+bandwidth+allocation"&gt;Replication bandwidth allocation&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;We have reviewed set of validation aspects according the JSR-170&lt;br /&gt;specification in our JCR core. JCR Path validation more strict now.&lt;br /&gt;Security level and JCR Permissions upgraded using new eXo Core&lt;br /&gt;Security service.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;But lets talk about new features of the eXo JCR 1.10&lt;/span&gt;&lt;span style="font-size:100%;"&gt;.&lt;br /&gt;&lt;br /&gt;We start eXo &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Organization Service&lt;/span&gt;&lt;span style="font-size:100%;"&gt; API implementation &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;on JCR storage&lt;/span&gt;&lt;span style="font-size:100%;"&gt;.&lt;br /&gt;The service actually transparent for other applications having use&lt;br /&gt;Organization Service API, sure as eXoPlatform Portal or ECM.&lt;br /&gt;Only simple component should be &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR/Organization+Service"&gt;configured.&lt;/a&gt;&lt;br /&gt;All existing listeners and initializers can be used with the service.&lt;br /&gt;&lt;br /&gt;We step on to SaaS path these days :)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;eXo JCR storage in Amazon SimpleDB and S3&lt;/span&gt;&lt;span style="font-size:100%;"&gt; are beta now.&lt;br /&gt;Yes as the Amazon services.&lt;br /&gt;Today you can setup eXo JCR (Portal, ECM) on SimpleDB (and S3),&lt;br /&gt;put the application on EC2 and you got it.&lt;br /&gt;It's beta now. Beta status mostly thanks to Amazon... the stuff thanks&lt;br /&gt;to Amazon.&lt;br /&gt;But we run it on demo EC2. Ask us if you are interested!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;External Values Storage now can be CASasble&lt;/span&gt;&lt;span style="font-size:100%;"&gt;.&lt;br /&gt;We are supporting &lt;a href="http://en.wikipedia.org/wiki/Content-addressable_storage"&gt;Content-Addressable-Storage.&lt;/a&gt;&lt;br /&gt;The feature most useful for usecases where same content may be&lt;br /&gt;stored (duplicated) in different locations.&lt;br /&gt;With the Value storage the Value will stored once (one file)&lt;br /&gt;and will be shared between multiple JCR Properties.&lt;br /&gt;&lt;br /&gt;So... add Repository state management, new authentication policy,&lt;br /&gt;WebDAV improvements and REST based access to a JCR content.&lt;br /&gt;Would it be tasty for Web2.0, 3.0?&lt;br /&gt;&lt;br /&gt;Find more details on &lt;a href="http://jira.exoplatform.org/secure/ReleaseNote.jspa?projectId=10003&amp;amp;styleName=Html&amp;amp;version=10373"&gt;JIRA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Try it! Adopt it!&lt;br /&gt;&lt;br /&gt;Ask me ;)&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7832475216201619291-7426031392448167104?l=nedonosko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nedonosko.blogspot.com/feeds/7426031392448167104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7832475216201619291&amp;postID=7426031392448167104' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default/7426031392448167104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default/7426031392448167104'/><link rel='alternate' type='text/html' href='http://nedonosko.blogspot.com/2008/10/new-exo-platform-jcr-v110.html' title='New eXo Platform JCR v.1.10'/><author><name>Peter Nedonosko</name><uri>http://www.blogger.com/profile/15935725261504516657</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp3.blogger.com/_pzKqSIbyELY/SIuEy9NrXxI/AAAAAAAAAAM/cr62oKKw_H8/S220/pnedonosko.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7832475216201619291.post-4166820983731448685</id><published>2008-07-26T16:41:00.004+03:00</published><updated>2008-07-27T01:35:11.853+03:00</updated><title type='text'>Manage content with Java Content Repository</title><content type='html'>&lt;div  style="text-align: center;font-family:arial;"&gt;&lt;div style="text-align: left;"&gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;Very useful technology for Java developers, and not only&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;Technology specification &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jcp.org/en/jsr/detail?id=170"&gt;http://jcp.org/en/jsr/detail?id=170&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Implementations&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;eXo Platform JCR &lt;a href="http://wiki.exoplatform.org/xwiki/bin/view/JCR"&gt;http://wiki.exoplatform.org/xwiki/bin/view/JCR/&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Jackrabbit &lt;a href="http://jackrabbit.apache.org/"&gt;http://jackrabbit.apache.org/&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Alfresco JCR &lt;a href="http://wiki.alfresco.com/wiki/Introducing_the_Alfresco_Java_Content_Repository_API"&gt;http://wiki.alfresco.com/wiki/Introducing_the_Alfresco_Java_Content_Repository_API&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Jeceira &lt;a href="http://sourceforge.net/projects/jeceira/"&gt;http://sourceforge.net/projects/jeceira/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Usage&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's similar to a File System we use everyday. But has more features and advantages.&lt;br /&gt;&lt;br /&gt;You have to obtain a &lt;span style="font-style: italic;"&gt;Repository&lt;/span&gt; instance to start. It's implementation specific and simple for most JCRs.&lt;br /&gt;&lt;br /&gt;Each Repository presents a list of workspaces. Let us imagine it's drives in file system.&lt;br /&gt;&lt;br /&gt;To begin the work with a content you have to login into &lt;span style="font-style: italic;"&gt;Repository &lt;/span&gt;with&lt;span style="font-style: italic;"&gt; &lt;/span&gt;selected&lt;span style="font-style: italic;"&gt; Workspace.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;InitialContext ctx = ...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Repository repository = (Repository)ctx.lookup("myrepo");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;// Get a Credentials object&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Credentials credentials = new SimpleCredentials("MyName", "MyPassword".toCharArray());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;// Get a Session&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Session mySession = repository.login(credentials, "MyWorkspace");&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;After the login you have the Session. So, you have a tool which gives access to a content storage.&lt;br /&gt;&lt;br /&gt;Add 'file'&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 102, 0);font-size:85%;" &gt;&lt;blockquote&gt;Node myFile = mySession.getRootNode().addNode("my-first-file");&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Node&lt;/span&gt; it's only object which handles 'file' entity... say handler. Node may contains &lt;span style="font-style: italic;"&gt;Property(es). &lt;/span&gt;The &lt;span style="font-style: italic;"&gt;Property&lt;/span&gt; it's a content. String, Integer, Float, Binary, Path etc.&lt;br /&gt;&lt;br /&gt;You will use &lt;span style="font-style: italic;"&gt;Property&lt;/span&gt; to read/write data.&lt;br /&gt;&lt;br /&gt;Write&lt;br /&gt;&lt;span&gt;&lt;span style="font-style: italic; color: rgb(0, 102, 0);font-size:85%;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-style: italic; color: rgb(0, 102, 0);font-size:85%;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span&gt;&lt;span style="font-style: italic; color: rgb(0, 102, 0);font-size:85%;" &gt;myFile.setProperty("creator_name", "John");&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-style: italic; color: rgb(0, 102, 0);font-size:85%;" &gt;myFile.setProperty("create_date", Calendar.getInstance());&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-style: italic; color: rgb(0, 102, 0);font-size:85%;" &gt;myFile.setProperty("file_content", source.getInputStream());&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Read&lt;br /&gt;&lt;span&gt;&lt;span style="font-style: italic; color: rgb(0, 102, 0);font-size:85%;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span&gt;&lt;span style="font-style: italic; color: rgb(0, 102, 0);font-size:85%;" &gt;myFile.getProperty("creator_name").getSTring();&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-style: italic; color: rgb(0, 102, 0);font-size:85%;" &gt;myFile.getProperty("create_date").getDate();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-style: italic; color: rgb(0, 102, 0);font-size:85%;" &gt;myFile.getProperty("file_content").getStream();&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span&gt;&lt;span style="font-style: italic; color: rgb(0, 102, 0);font-size:85%;" &gt;&lt;/span&gt;&lt;/span&gt;So, not so complicated.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Node&lt;/span&gt; can include sub-nodes also. It's only managed by &lt;span style="font-style: italic;"&gt;NodeType &lt;/span&gt;(like file type, but richer).&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-size:85%;" &gt;&lt;span style="font-style: italic;"&gt;&lt;blockquote&gt;myFile.addNode("sub-file");&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;You may get &lt;span style="font-style: italic;"&gt;Node&lt;/span&gt; or &lt;span style="font-style: italic;"&gt;Property&lt;/span&gt; by path, relative from other Node or Property or via &lt;span style="font-style: italic;"&gt;Session.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 102, 0);font-size:85%;" &gt;&lt;span style="font-style: italic;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;// relative&lt;/span&gt;&lt;br /&gt;Node ssFile = myFile.getNode("sub-file/sub-sub-file");&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);font-size:85%;" &gt;&lt;span style="font-style: italic;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;// or by abs path&lt;/span&gt;&lt;br /&gt;Node ssFile = (&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);font-size:85%;" &gt;&lt;span style="font-style: italic;"&gt;Node&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);font-size:85%;" &gt;&lt;span style="font-style: italic;"&gt;) mySession.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);font-size:85%;" &gt;&lt;span style="font-style: italic;"&gt;getItem("/&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic; color: rgb(0, 102, 0);"&gt;my-first-file/&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);font-size:85%;" &gt;&lt;span style="font-style: italic;"&gt;sub-file/sub-sub-file");&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(0, 102, 0);font-size:85%;" &gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Simple? I hope - yes.&lt;br /&gt;&lt;br /&gt;It's a good alternative to a databases in content-oriented applications and makes development process close to a task. A developer should know at least the specification, but it's simple than JDBC anyway.&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-size:85%;" &gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7832475216201619291-4166820983731448685?l=nedonosko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nedonosko.blogspot.com/feeds/4166820983731448685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7832475216201619291&amp;postID=4166820983731448685' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default/4166820983731448685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7832475216201619291/posts/default/4166820983731448685'/><link rel='alternate' type='text/html' href='http://nedonosko.blogspot.com/2008/07/drive-content-with-java-content.html' title='Manage content with Java Content Repository'/><author><name>Peter Nedonosko</name><uri>http://www.blogger.com/profile/15935725261504516657</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://bp3.blogger.com/_pzKqSIbyELY/SIuEy9NrXxI/AAAAAAAAAAM/cr62oKKw_H8/S220/pnedonosko.JPG'/></author><thr:total>0</thr:total></entry></feed>
