<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>eXo Blog - The Cloud User Experience Platform &#187; jcr</title>
	<atom:link href="http://blog.exoplatform.org/tag/jcr/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.exoplatform.org</link>
	<description>The Cloud User Experience Platform</description>
	<lastBuildDate>Tue, 31 Jan 2012 14:01:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>eXo JCR 1.14: New Features for eXo Platform 3.5</title>
		<link>http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/</link>
		<comments>http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 23:18:48 +0000</pubDate>
		<dc:creator>Nicolas Filotto</dc:creator>
				<category><![CDATA[Tech Talk]]></category>
		<category><![CDATA[eXo Platform 3.5]]></category>
		<category><![CDATA[jcr]]></category>

		<guid isPermaLink="false">http://blog.exoplatform.org/?p=2772</guid>
		<description><![CDATA[For almost everything it can do &#8211; and it can do a lot, from websites to community extranets to enterprise social intranets and much more &#8211; eXo Platform relies on its built-in Java Content Repository (JCR). With eXo Platform 3.5, working with content and data will be both easier and more ready for prime-time enterprise [...]]]></description>
			<content:encoded><![CDATA[<p>For almost everything it can do &#8211; and it can do a lot, from websites to community extranets to enterprise social intranets and much more &#8211; eXo Platform relies on its built-in Java Content Repository (JCR). With <a href="http://www.exoplatform.com/company/en/platform/exo-platform-35">eXo Platform 3.5</a>, working with content and data will be both easier and more ready for prime-time enterprise deployments.</p>
<p>At eXo, I lead a team of developers in building eXo JCR, our open source implementation of the JSR-170 spec, which is used in eXo Platform. We’ve just released eXo JCR 1.14.0-GA, which will add many new features and enhancements to the upcoming eXo Platform 3.5. This version is quite a big step forward since JCR 1.12: between JCR 1.12 and 1.14, we worked on no less than 50 improvements and 100 new features!! In this post, I will describe the new features and improvements that we added since <a href="http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/">my last blog post</a>.</p>
<h2>New Features</h2>
<h3>Managed Transactions &amp; JCA Support</h3>
<p>In eXo JCR 1.12 and earlier, our Java Transaction API (JTA) support was limited and experimental. Because we wanted to be able to support managed transactions and JCA 1.5 in eXo Platform 3.5 and beyond, we completely overhauled our JTA support for eXo JCR 1.14.</p>
<ul>
<li><strong>Managed Transactions Support: </strong>If you use managed data sources, you simply need to configure your eXo JCR instance to allow it to distinguish the managed data sources from the others. eXo JCR will then know whether or not it needs to delegate the commit and rollback calls to the Application Server.</li>
<li><strong>Java EE Connector Architecture (JCA) Support: </strong>If you intend to use eXo JCR in your custom application to store your data, and you would like to delegate the management of the JCR session life-cycle to your application server, you can now use the JCA Resource Adapter for eXo JCR.</li>
</ul>
<h3>Asynchronous Indexing</h3>
<p>Lucene is used any time we execute a JCR query, which means it’s a critical part of eXo JCR. That’s also why, in previous versions, full indexing used to be blocking. Now you can make it non blocking in order to access to your application immediately, even if a full indexing is running. However, as long as the indexing is running, you won’t be able to execute a JCR query; only pure API calls will be allowed. Another interesting aspect of this feature is the fact that you can rebuild the Lucene indexes of a given workspace at runtime, using JMX.</p>
<h3>External Backup Tools Allowed</h3>
<p>eXo JCR now provides a secure way for you to use external backup tools to back up the data of your JCR instance. It was possible to use third-party backup tools with previous versions, but you had to ensure that no transactions were running (which is not trivial). The latest version of eXo JCR leverages JMX, which lets you suspend and resume all the current transactions on your JCR instance. So if you want to use your own tools, simply suspend the current transactions, launch your tools to back up your data, then resume the transactions.</p>
<h3>Other Interesting New Features</h3>
<ul>
<li>If you wanted to keep big objects or non-serializable objects in a replicated eXo cache instance, you can configure your eXo cache to enable an invalidation mechanism. This will automatically invalidate your data anytime it detects a changed value in your cluster.</li>
<li>A new syntax allows you to define a default value in your configuration files. For example, ${my.value:10} will be understood by the kernel as, try to find the value of the variable called &#8220;my.value&#8221;, and if no value is found use &#8220;10&#8243;.</li>
<li>You can use your own Lucene lock factory and/or Lucene directory if the default ones don’t fulfill your requirements.</li>
<li>We added a mime type detection mechanism that allows eXo JCR to properly extract the meta-data and the full text content of a document, even if the extension is missing in the name of the file.</li>
</ul>
<h2>Improvements</h2>
<h3>Multi-Database Schema Support</h3>
<p>Frequently a single database instance must be shared by several other applications. But some of our customers have also asked for a way to host several JCR instances in the same database instance. To fulfill this need, we had to review our queries and scope them to the current schema in a different way; it’s now possible to have one JCR instance per DB schema instead of per DB instance.</p>
<h3>Monitoring</h3>
<p>In this new version, we worked a lot on improving the monitoring capabilities. We did this by exposing many new MBeans in the JMX console, and by simply giving more understandable names to all the threads of eXo JCR. You now have a better overview of what’s going on in your eXo JCR instance.</p>
<h3>Pattern-based Methods</h3>
<p>In many applications based on eXo JCR, we realized that people obtain their data property by property; this is not necessarily a good practice, especially when there are many properties to fetch. To provide a much more scalable solution, we worked on improving the methods Node.getNodes(NamePattern) and Node.getProperties(NamePattern). So now, instead of potentially making the eXo JCR execute as many queries as you have properties in your node (assuming that the cache is empty), we can obtain all data properties using a single query.</p>
<h3>Other Interesting Improvements</h3>
<ul>
<li>Access Control List (ACL) management has been updated to drastically reduce the total amount of database accesses needed to get the ACL of a given node.</li>
<li>We added a new method in our internal interface called ExtendedNode.getNodesLazily. This can be used as an alternative of Node.getNodes in the parts of your application where you can have a lot of sub nodes, and where consistency is not necessarily an issue.</li>
</ul>
<h2>Download</h2>
<p>You can download eXo JCR 1.14.0-GA from <a href="//www.jboss.org/exojcr/downloads">here</a> and get the documentation from jboss.org <a href="http://www.jboss.org/exojcr/documentation">here</a>.</p>
<p>Enjoy,<br />
Nicolas</p>
<div class='bookmarkify'><a name='bookmarkify'></a><div class='title' title='Use these links to share this page with others'>Share this blog post with :</div><div class='linkbuttons'><a href='http://www.bloglines.com/sub/http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/' title='Save to Bloglines' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/bloglines.png' style='width:16px; height:16px;' alt='[Bloglines] ' /></a> <a href='http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/&amp;title=eXo JCR 1.14: New Features for eXo Platform 3.5' title='Save to BlogMarks' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/blogmarks.png' style='width:16px; height:16px;' alt='[BlogMarks] ' /></a> <a href='http://del.icio.us/post?url=http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/&amp;title=eXo JCR 1.14: New Features for eXo Platform 3.5' title='Save to del.icio.us' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/delicious.png' style='width:16px; height:16px;' alt='[del.icio.us] ' /></a> <a href='http://digg.com/submit?phase=2&amp;url=http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/&amp;title=eXo JCR 1.14: New Features for eXo Platform 3.5' title='Digg It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/digg.png' style='width:16px; height:16px;' alt='[Digg] ' /></a> <a href='http://www.dzone.com/links/add.html?description=eXo JCR 1.14: New Features for eXo Platform 3.5&amp;url=http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/&amp;title=eXo JCR 1.14: New Features for eXo Platform 3.5' title='Save to dzone' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/dzone.png' style='width:16px; height:16px;' alt='[dzone] ' /></a> <a href='http://www.facebook.com/share.php?u=http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/' title='Save to Facebook' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/facebook.png' style='width:16px; height:16px;' alt='[Facebook] ' /></a> <a href='http://www.furl.net/storeIt.jsp?u=http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/&amp;t=eXo JCR 1.14: New Features for eXo Platform 3.5' title='Save to Furl' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/furl.png' style='width:16px; height:16px;' alt='[Furl] ' /></a> <a href='http://ma.gnolia.com/bookmarklet/add?url=http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/&amp;title=eXo JCR 1.14: New Features for eXo Platform 3.5' title='Save to Ma.gnolia' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/magnolia.png' style='width:16px; height:16px;' alt='[Ma.gnolia] ' /></a> <a href='http://www.newsvine.com/_tools/seed?popoff=0&amp;u=http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/' title='Seed Newsvine' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/newsvine.png' style='width:16px; height:16px;' alt='[Newsvine] ' /></a> <a href='http://reddit.com/submit?url=http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/&amp;title=eXo JCR 1.14: New Features for eXo Platform 3.5' title='Reddit' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/reddit.png' style='width:16px; height:16px;' alt='[Reddit] ' /></a> <a href='http://slashdot.org/bookmark.pl?url=http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/&amp;title=eXo JCR 1.14: New Features for eXo Platform 3.5' title='Slashdot It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/slashdot.png' style='width:16px; height:16px;' alt='[Slashdot] ' /></a> <a href='http://www.stumbleupon.com/submit?url=http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/&amp;title=eXo JCR 1.14: New Features for eXo Platform 3.5' title='Stumble It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/stumbleupon.png' style='width:16px; height:16px;' alt='[StumbleUpon] ' /></a> <a href='http://technorati.com/faves?add=http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/' title='Add to my Technorati Favorites' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/technorati.png' style='width:16px; height:16px;' alt='[Technorati] ' /></a> <a href='http://twitter.com/?status=eXo JCR 1.14: New Features for eXo Platform 3.5+http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/' title='Save to Twitter' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/twitter.png' style='width:16px; height:16px;' alt='[Twitter] ' /></a> <a href='http://www.feedburner.com/fb/a/emailFlare?itemTitle=eXo JCR 1.14: New Features for eXo Platform 3.5&amp;uri=http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/&amp;loc=en_US' title='Email this to a friend' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/email.png' style='width:16px; height:16px;' alt='[Email] ' /></a>  <a title='See more bookmark and sharing options...' href='http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/#bookmarkify' rel='nofollow'><small>More&nbsp;&raquo;</small></a></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.exoplatform.org/2011/09/22/exo-jcr-1-14-new-features-for-exo-platform-3-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Top 5 New Features in eXo Cloud IDE</title>
		<link>http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/</link>
		<comments>http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 13:01:00 +0000</pubDate>
		<dc:creator>Benjamin Mestrallet</dc:creator>
				<category><![CDATA[Tech Talk]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cloud ide]]></category>
		<category><![CDATA[cloudbees]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Heroku]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jax-rs]]></category>
		<category><![CDATA[jcr]]></category>
		<category><![CDATA[OpenShift]]></category>
		<category><![CDATA[PaaS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.exoplatform.org/?p=2694</guid>
		<description><![CDATA[Four months ago we launched cloud-ide.com, the first free online service eXo has ever provided, and its success has been incredible. Our goal: to be the preferred path for developers to Platform-as-a-Service (PaaS) deployments. Today we are unveiling a major upgrade to the service, with more than 75 new features. I would like to show [...]]]></description>
			<content:encoded><![CDATA[<p>Four months ago we launched <a href="http://cloud-ide.com/">cloud-ide.com</a>, the first free online service eXo has ever provided, and its success has been incredible. Our goal: to be the preferred path for developers to Platform-as-a-Service (PaaS) deployments.</p>
<p>Today we are unveiling a major upgrade to the service, with more than 75 new features. I would like to show you my top 5 favorites.</p>
<p><strong>1) Git Support</strong></p>
<p><a href="https://github.com/">Git</a> popularity is huge and more and more projects use it to manage their source code. Even some PaaS, such as Heroku or Openshift Express, use it as an application deployment paradigm.</p>
<p>Supporting Git in <a href="http://cloud-ide.com/">eXo Cloud IDE</a> was clearly our number 1 priority, and we focused on improving the integration we announced in May at Red Hat Summit. Now we support most of the protocol commands, all natively integrated within eXo Cloud IDE.</p>
<p>As you can see in the first screenshot, we support many Git commands that are exposed in a new Git menu in the IDE. It is possible to init or clone a remote repository, add a file to the index, create a branch, add remote repositories and push the code to different branches on different remote repositories! And at every step of the way, you can view the current status of your repo.</p>
<p><img class="aligncenter size-full wp-image-2696" title="image00" src="http://blog.exoplatform.org/wp-content/uploads/2011/07/image00.png" alt="image00" width="422" height="317" /></p>
<p>To be able to support private Git repositories, and to communicate with them using the SSH protocol, we have also added the capability to create private and public keys for dedicated domains, and the ability to upload existing private keys and bind them to a domain. In the next screenshots, you can see that I have created 2 private/public keys for the <a href="http://www.heroku.com/">Heroku</a> and <a href="https://github.com/">GitHub</a> domains, as well as uploaded 2 private keys for <a href="https://openshift.redhat.com/app/">Red Hat OpenShift</a> and<a href="http://www.cloudbees.com/"> CloudBees</a>.</p>
<p><img class="aligncenter size-full wp-image-2697" title="image07" src="http://blog.exoplatform.org/wp-content/uploads/2011/07/image07.png" alt="image07" width="440" /></p>
<p>It is also possible to browse the version history of Git repositories, see the changes and who made them!</p>
<p><img class="aligncenter size-full wp-image-2698" title="image03" src="http://blog.exoplatform.org/wp-content/uploads/2011/07/image03.png" alt="image03" width="440" /></p>
<p><strong>2) OpenShift and Heroku Support</strong></p>
<p>The primary goal of eXo Cloud IDE is to be able to develop apps in the cloud, then deploy them to the different PaaS available in the market. With this upgrade, we now support 3 different PaaS, each that has a different deployment model.</p>
<p>For <a href="http://www.heroku.com/">Heroku</a> and <a href="https://openshift.redhat.com/app/">OpenShift</a>, we use some REST commands from the PaaS menu (see the next screenshot) to create applications bound to a Git repository.</p>
<p><img class="aligncenter size-full wp-image-2699" title="image05" src="http://blog.exoplatform.org/wp-content/uploads/2011/07/image05.png" alt="image05" width="440" /></p>
<p>Then we use the Git menu to clone and push modifications to this remote repository, such as the OpenShift repo shown in the next screenshot.</p>
<p><img class="aligncenter size-full wp-image-2700" title="image04" src="http://blog.exoplatform.org/wp-content/uploads/2011/07/image04.png" alt="image04" width="440" /></p>
<p>We have announced <a href="http://blog.exoplatform.org/2011/05/04/from-portals-to-the-cloud-extending-the-exo-red-hat-partnership/">our Red Hat OpenShift support</a> at Red Hat Summit last month in Boston. You can see the video demonstrating how to deploy to OpenShift <a href="http://exoplatform.com/company/en/resource-viewer/Getting-Started-Guide/deploy-to-red-hat-openshift-paas-from-exo-cloud-ide">here</a>.</p>
<p><strong>3) CloudBees Support</strong></p>
<p>For deploying Java apps to <a href="http://www.cloudbees.com/run.cb">CloudBees RUN@cloud</a> PaaS, we only use Git and the <a href="http://www.cloudbees.com/dev.cb">CloudBees DEV@cloud</a> service.</p>
<p>A developer first has to create a Java project in eXo Cloud IDE.  Then he has to init that repository and push the code to the CloudBees Git repository (after having registered its public SSH key in the service). From here, we leverage <a href="http://www.cloudbees.com/dev.cb">CloudBees DEV@cloud</a>, which uses Maven and Jenkins to manage both the build of the Java WAR artifacts and the deployment to <a href="http://www.cloudbees.com/run.cb">CloudBees RUN@cloud</a> PaaS.</p>
<p><img class="aligncenter size-full wp-image-2701" title="image02" src="http://blog.exoplatform.org/wp-content/uploads/2011/07/image02.png" alt="image02" width="388" height="174" /></p>
<p><strong>4) Java / JSP support</strong></p>
<p>Java is the language of choice for most eXo developers. In the first version of Cloud IDE a developer could write some REST API in Java using the JAX-RS specification. He could also store structured data inside a Java Content Repository (JCR).</p>
<p>With this upgrade, we now also support standard Java classes (Servlets or POJOs) and Java Server Pages (JSP).</p>
<p>As before, every file has some color syntaxing, code completion and outline. The next screenshot shows those features for a JSP page.</p>
<p><img class="aligncenter size-full wp-image-2702" title="image06" src="http://blog.exoplatform.org/wp-content/uploads/2011/07/image06.png" alt="image06" width="440" /></p>
<p>Once the Java and JSP have been written it is possible to deploy them to <a href="http://www.cloudbees.com/dev.cb">CloudBees DEV@cloud</a>, which manages the build (it can also manage any unit tests that you add in the Cloud IDE) and the deployment of the generated WAR.</p>
<p>As you can see, you can now create, test and deploy standard Java projects directly in the Cloud.</p>
<p><strong>5) Ruby and PHP Support</strong></p>
<p>With the launch of Red Hat OpenShift Express, we announced support for the Ruby language within eXo Cloud IDE. A developer can quickly create a Ruby file; the IDE provides some color syntaxing, outline and auto completion. A Ruby project can then be deployed to either OpenShift or Heroku, as described previously.</p>
<p><img class="aligncenter size-full wp-image-2703" title="image01" src="http://blog.exoplatform.org/wp-content/uploads/2011/07/image01.png" alt="image01" width="440" /></p>
<p>Red Hat OpenShift also supports the PHP language, so it was a great opportunity for us to add support for this dynamic language to our catalog. And of course, we have some color syntaxing, outline and auto completion.</p>
<p>These are my top 5 favorite new features. I hope you will check out the <a href="http://cloud-ide.com/">new and improved Cloud IDE</a> and give us your feedback!</p>
<p>For now, we’re getting back to work &#8211; this is just the beginning of a new era.</p>
<div class='bookmarkify'><a name='bookmarkify'></a><div class='title' title='Use these links to share this page with others'>Share this blog post with :</div><div class='linkbuttons'><a href='http://www.bloglines.com/sub/http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/' title='Save to Bloglines' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/bloglines.png' style='width:16px; height:16px;' alt='[Bloglines] ' /></a> <a href='http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/&amp;title=The Top 5 New Features in eXo Cloud IDE' title='Save to BlogMarks' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/blogmarks.png' style='width:16px; height:16px;' alt='[BlogMarks] ' /></a> <a href='http://del.icio.us/post?url=http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/&amp;title=The Top 5 New Features in eXo Cloud IDE' title='Save to del.icio.us' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/delicious.png' style='width:16px; height:16px;' alt='[del.icio.us] ' /></a> <a href='http://digg.com/submit?phase=2&amp;url=http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/&amp;title=The Top 5 New Features in eXo Cloud IDE' title='Digg It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/digg.png' style='width:16px; height:16px;' alt='[Digg] ' /></a> <a href='http://www.dzone.com/links/add.html?description=The Top 5 New Features in eXo Cloud IDE&amp;url=http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/&amp;title=The Top 5 New Features in eXo Cloud IDE' title='Save to dzone' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/dzone.png' style='width:16px; height:16px;' alt='[dzone] ' /></a> <a href='http://www.facebook.com/share.php?u=http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/' title='Save to Facebook' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/facebook.png' style='width:16px; height:16px;' alt='[Facebook] ' /></a> <a href='http://www.furl.net/storeIt.jsp?u=http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/&amp;t=The Top 5 New Features in eXo Cloud IDE' title='Save to Furl' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/furl.png' style='width:16px; height:16px;' alt='[Furl] ' /></a> <a href='http://ma.gnolia.com/bookmarklet/add?url=http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/&amp;title=The Top 5 New Features in eXo Cloud IDE' title='Save to Ma.gnolia' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/magnolia.png' style='width:16px; height:16px;' alt='[Ma.gnolia] ' /></a> <a href='http://www.newsvine.com/_tools/seed?popoff=0&amp;u=http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/' title='Seed Newsvine' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/newsvine.png' style='width:16px; height:16px;' alt='[Newsvine] ' /></a> <a href='http://reddit.com/submit?url=http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/&amp;title=The Top 5 New Features in eXo Cloud IDE' title='Reddit' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/reddit.png' style='width:16px; height:16px;' alt='[Reddit] ' /></a> <a href='http://slashdot.org/bookmark.pl?url=http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/&amp;title=The Top 5 New Features in eXo Cloud IDE' title='Slashdot It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/slashdot.png' style='width:16px; height:16px;' alt='[Slashdot] ' /></a> <a href='http://www.stumbleupon.com/submit?url=http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/&amp;title=The Top 5 New Features in eXo Cloud IDE' title='Stumble It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/stumbleupon.png' style='width:16px; height:16px;' alt='[StumbleUpon] ' /></a> <a href='http://technorati.com/faves?add=http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/' title='Add to my Technorati Favorites' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/technorati.png' style='width:16px; height:16px;' alt='[Technorati] ' /></a> <a href='http://twitter.com/?status=The Top 5 New Features in eXo Cloud IDE+http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/' title='Save to Twitter' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/twitter.png' style='width:16px; height:16px;' alt='[Twitter] ' /></a> <a href='http://www.feedburner.com/fb/a/emailFlare?itemTitle=The Top 5 New Features in eXo Cloud IDE&amp;uri=http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/&amp;loc=en_US' title='Email this to a friend' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/email.png' style='width:16px; height:16px;' alt='[Email] ' /></a>  <a title='See more bookmark and sharing options...' href='http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/#bookmarkify' rel='nofollow'><small>More&nbsp;&raquo;</small></a></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.exoplatform.org/2011/07/20/the-top-5-new-features-in-exo-cloud-ide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>eXo JCR 1.14.0-CR1 is out</title>
		<link>http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/</link>
		<comments>http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 18:20:29 +0000</pubDate>
		<dc:creator>Nicolas Filotto</dc:creator>
				<category><![CDATA[Tech Talk]]></category>
		<category><![CDATA[apache tika]]></category>
		<category><![CDATA[infinispan]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[jboss cache]]></category>
		<category><![CDATA[jcr]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://blog.exoplatform.org/?p=2563</guid>
		<description><![CDATA[The core Java Content Repository functionality that we leverage in both GateIn and eXo Platform 3 is eXo JCR (developed in JBoss.org, the JBoss open source forge). We have made many improvements and introduced new features in our upcoming version of eXo JCR (eXo JCR 1.14.0-CR1). The following post provides a technical deep-dive into some [...]]]></description>
			<content:encoded><![CDATA[<p>The core Java Content Repository functionality that we leverage in both GateIn and eXo Platform 3 is eXo JCR (developed in JBoss.org, the JBoss open source forge). We have made many improvements and introduced new features in our upcoming version of eXo JCR (eXo JCR 1.14.0-CR1). The following post provides a technical deep-dive into some of these changes.</p>
<h2>New Features</h2>
<h3>JBoss Infinispan</h3>
<p>The most significant of the new features found in eXo JCR 1.14 is the ability to rely on<a href="http://www.jboss.org/infinispan"> Infinispan</a> as the underlying cache; this provides a more scalable clustering solution. For now, we only used and tested Infinispan (also known as ISPN) as an alternative to JBoss Cache (also known as JBC, which you can still use if you prefer). In other words, Infinispan is only used as a simple replicated cache, which is still interesting in terms of memory footprint and concurrency.</p>
<p>According to our first internal tests, ISPN seems to consume less memory than JBC; more importantly, ISPN clearly reduces the contention compared to JBC. With JBC, you can face contention issues especially when you use any eviction algorithm other than expiration, since any read access to a JBC Node will add an eviction event to the <em>LinkedBlockingQueue</em> instance of the whole region. In ISPN, they had the brilliant idea to implement their own version of <em>ConcurrentHashMap</em>, which they call <em><a href="https://github.com/infinispan/infinispan/blob/master/core/src/main/java/org/infinispan/util/concurrent/BoundedConcurrentHashMap.java">BoundedConcurrentHashMap</a></em>, to manage the eviction within each segment. This means that we now have one LinkedBlockingQueue instance per segment, so you can reduce the contention generated by the eviction algorithm by simply increasing the concurrency level.</p>
<p>Another significant improvement ISPN offers is the remove method. In our internal tests we realized that in some use cases, it could be over 800 times faster to remove a cache entry in ISPN compared to JBC. This is mainly due to the notion of Node trees in JBC that is not found in ISPN. Actually, when you remove a node in JBC, it needs to remove all its descendants &#8211; which consumes a lot of time and CPU when you have a lot of children nodes.</p>
<p>Next we will try to improve our ISPN integration, to fully benefit on the distributed cache capabilities offered by ISPN. In real-life scenarios, it is difficult to ask a customer to deploy their application on hundreds of instances of a given application server, since the required licenses and support would be cost-prohibitive (not to mention a nightmare for the administrator). On the other hand, it sounds more acceptable if the customer only needs to deploy their application on 3-8 app server instances; these would be used as frontal servers, while hundreds of ISPN cache instances could be deployed in standalone mode to act as the cache server. This would allow ISPN to be used as a cache server, although in our context this is not possible out of the box (due to a lack of JTA support when ISPN is used as cache server &#8211; more details <a href="https://issues.jboss.org/browse/ISPN-375">here</a>).</p>
<h3>Java Security</h3>
<p><a href="http://blog.exoplatform.org/2011/03/15/exo-extends-enterprise-portals-to-the-cloud/">As you may know</a>, our new eXo Cloud IDE is a free developer service for Java Platform as a Service (PaaS). This ability to easily create and deploy REST components on the fly is very interesting in terms of productivity. However, it needs to be over-protected to ensure that no malicious users affect the integrity of your environment. So we made the entire eXo JCR stack rely on Java Security, meaning that when the <em>SecurityManager</em> is installed, access to sensitive methods is impossible unless the full call stack has enough rights.</p>
<h3>Apache Tika</h3>
<p>eXo JCR already has a plugin-based framework that enables the extraction of both the meta-data and the full text content of the most common document types, such as Text, XML, HTML, PDF, MS Office and Open Office documents. But we wanted to support many more types of documents, so we decided to implement a plugin for Tika. This is actually an open door to many new document types, including images, audio and video.</p>
<h3>Other Interesting New Features&#8230;</h3>
<ul>
<li>If you dedicate a listener for a specific event broadcast by the <em>ListenerService</em>, you can elect to receive the event asynchronously by adding the annotation <em>@Asynchronous</em> (from the package <em>org.exoplatform.services.listener</em>) to the class declaration level of your listener.</li>
<li>eXo JCR can be deployed on Jetty.</li>
<li>H2 DB is now supported.</li>
</ul>
<h2>Improvements</h2>
<h3>JCR Re-Indexing</h3>
<p>With full text search engines such as Lucene, it is helpful to rebuild them regularly to preserve consistency, get rid of potentially corrupted indexes, and ensure optimal performance. We decided to speed up the re-indexing mechanism by making it multi-threaded, and by relying more on features specific to RDBMS, such as SQL paging. The results are quite interesting: according to the total amount of core and the db type used, the indexing of millions of JCR nodes could be 4 to 6 times faster.</p>
<h3>Lucene Indexing in Clustered Environments</h3>
<p>In the previous version of eXo JCR, we stored the Lucene indexes in a shared file system, so it was possible to add a node to the cluster dynamically (meaning the new node could access the Lucene indexes directly, so they could be started and made available quickly). The problem with this approach was that the performances in read and write accesses were affected, and that using a shared file system could have side effects. In addition, only the main cluster node (a.k.a. coordinator in JGroups terminology) could see the latest changes. This is because, for performance reasons, they are only persisted after a certain amount of time, while the rest of the cluster could only see the persisted changes.</p>
<p>To improve this, we took a new approach. Each node can see all changes in near-real time, and has its own version of Lucene indexes. This improves performance and means we no longer rely on a shared file system. This change is possible because we were able to improve the index recovery. Now, when a new node is launched that doesn’t have its own version of Lucene Indexes, you can either decide to rebuild them from a configuration (if the DB is not too big, knowing the re-indexing has been improved too) or get it from the coordinator. The latter method allows you to get a new node up and running in a reasonable amount of time, and fully benefit from having the Lucene indexes locally.</p>
<p>The next step will be to implement a non-blocking index recovery in order to have the new cluster node ready to use even faster.</p>
<h3>Backup/Restore</h3>
<p>The backup/restore feature has been completely reviewed to better fulfill the requirement of an enterprise; it is now faster, more reliable and much easier to use.</p>
<h3>Other Interesting Improvements</h3>
<ul>
<li>An application with a lot of workspaces requires a lot of JBC instances (3 per workspace: JCR Cache, JCR Indexing and JCR Lock). To reduce the total amount of JBC instances, you can configure your JCR to make your cache instances shareable &#8211; meaning you only need 3 JBC instances, and they can be used by all your workspaces. With this configuration, your JCR will create a dedicated JBC region per workspace instead of launching a new JBC instance.</li>
<li>The way missing values are cached is optimized for applications that require frequent testing of the existence of specific nodes or properties. If the searched-for node or property does not exist, the information indicating that the data is missing in the DB is stored in the cache, instead of accessing the database at each call. Because future re-tests will find this information in the cache instead of having to query the DB, your application will be faster and more scalable.</li>
<li>All cluster nodes can now be launched in parallel, even when the JCR has never been initialized. This was a limitation in the previous version, since the JCR had to be initialized first.</li>
</ul>
<h2>Download</h2>
<p>You can download eXo JCR 1.14.0-CR1 from <a href="http://forge.ow2.org/project/showfiles.php?group_id=151&amp;release_id=4539">here</a> and get the documentation from jboss.org <a href="http://www.jboss.org/exojcr/documentation">here</a>.</p>
<p>You can test it with jetty or tomcat; for both be sure to read the file <em>exo-readme.txt</em> to know how to test it with the default configuration,  JBoss Cache or Infinispan. In a nutshell, you simply need to launch it from eXo batches with a new parameter: <em>jbc</em> for JBoss Cache and <em>ispn</em> for Infinispan.</p>
<p>The best ways to quickly test it are:</p>
<ul>
<li>The WebDav access available <a href="http://localhost:8080/rest/jcr/repository/production">here</a></li>
<li>The FTP access available from port 2121</li>
</ul>
<p>For both, use the account <em>root</em> with the password <em>exo</em>.</p>
<p>Enjoy,<br />
Nicolas</p>
<div class='bookmarkify'><a name='bookmarkify'></a><div class='title' title='Use these links to share this page with others'>Share this blog post with :</div><div class='linkbuttons'><a href='http://www.bloglines.com/sub/http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/' title='Save to Bloglines' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/bloglines.png' style='width:16px; height:16px;' alt='[Bloglines] ' /></a> <a href='http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/&amp;title=eXo JCR 1.14.0-CR1 is out' title='Save to BlogMarks' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/blogmarks.png' style='width:16px; height:16px;' alt='[BlogMarks] ' /></a> <a href='http://del.icio.us/post?url=http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/&amp;title=eXo JCR 1.14.0-CR1 is out' title='Save to del.icio.us' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/delicious.png' style='width:16px; height:16px;' alt='[del.icio.us] ' /></a> <a href='http://digg.com/submit?phase=2&amp;url=http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/&amp;title=eXo JCR 1.14.0-CR1 is out' title='Digg It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/digg.png' style='width:16px; height:16px;' alt='[Digg] ' /></a> <a href='http://www.dzone.com/links/add.html?description=eXo JCR 1.14.0-CR1 is out&amp;url=http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/&amp;title=eXo JCR 1.14.0-CR1 is out' title='Save to dzone' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/dzone.png' style='width:16px; height:16px;' alt='[dzone] ' /></a> <a href='http://www.facebook.com/share.php?u=http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/' title='Save to Facebook' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/facebook.png' style='width:16px; height:16px;' alt='[Facebook] ' /></a> <a href='http://www.furl.net/storeIt.jsp?u=http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/&amp;t=eXo JCR 1.14.0-CR1 is out' title='Save to Furl' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/furl.png' style='width:16px; height:16px;' alt='[Furl] ' /></a> <a href='http://ma.gnolia.com/bookmarklet/add?url=http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/&amp;title=eXo JCR 1.14.0-CR1 is out' title='Save to Ma.gnolia' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/magnolia.png' style='width:16px; height:16px;' alt='[Ma.gnolia] ' /></a> <a href='http://www.newsvine.com/_tools/seed?popoff=0&amp;u=http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/' title='Seed Newsvine' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/newsvine.png' style='width:16px; height:16px;' alt='[Newsvine] ' /></a> <a href='http://reddit.com/submit?url=http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/&amp;title=eXo JCR 1.14.0-CR1 is out' title='Reddit' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/reddit.png' style='width:16px; height:16px;' alt='[Reddit] ' /></a> <a href='http://slashdot.org/bookmark.pl?url=http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/&amp;title=eXo JCR 1.14.0-CR1 is out' title='Slashdot It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/slashdot.png' style='width:16px; height:16px;' alt='[Slashdot] ' /></a> <a href='http://www.stumbleupon.com/submit?url=http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/&amp;title=eXo JCR 1.14.0-CR1 is out' title='Stumble It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/stumbleupon.png' style='width:16px; height:16px;' alt='[StumbleUpon] ' /></a> <a href='http://technorati.com/faves?add=http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/' title='Add to my Technorati Favorites' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/technorati.png' style='width:16px; height:16px;' alt='[Technorati] ' /></a> <a href='http://twitter.com/?status=eXo JCR 1.14.0-CR1 is out+http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/' title='Save to Twitter' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/twitter.png' style='width:16px; height:16px;' alt='[Twitter] ' /></a> <a href='http://www.feedburner.com/fb/a/emailFlare?itemTitle=eXo JCR 1.14.0-CR1 is out&amp;uri=http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/&amp;loc=en_US' title='Email this to a friend' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/email.png' style='width:16px; height:16px;' alt='[Email] ' /></a>  <a title='See more bookmark and sharing options...' href='http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/#bookmarkify' rel='nofollow'><small>More&nbsp;&raquo;</small></a></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.exoplatform.org/2011/03/31/exo-jcr-1-14-0-cr1-is-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction to CRaSH</title>
		<link>http://blog.exoplatform.org/2011/01/11/introduction-to-crash/</link>
		<comments>http://blog.exoplatform.org/2011/01/11/introduction-to-crash/#comments</comments>
		<pubDate>Tue, 11 Jan 2011 10:23:44 +0000</pubDate>
		<dc:creator>Julien Viet</dc:creator>
				<category><![CDATA[Tech Talk]]></category>
		<category><![CDATA[GateIn]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[jcr]]></category>
		<category><![CDATA[resource center]]></category>
		<category><![CDATA[resources]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://blog.exoplatform.org/?p=2291</guid>
		<description><![CDATA[I&#8217;ve just written a new tutorial that gives a technical introduction to CRaSH, an open source project I lead that makes interacting with Java Content Repository (JCR) technology easier. The complete tutorial can be found on the eXo Resource Center &#8211; but here&#8217;s a sneak peak: It&#8217;s been a year now since I started the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just written a new tutorial that gives a technical introduction to CRaSH, an open source project I lead that makes interacting with Java Content Repository (JCR) technology easier. The <a href="http://www.exoplatform.com/company/en/resource-viewer/Tutorial/Introduction-to-Crash">complete tutorial</a> can be found on the eXo Resource Center &#8211; but here&#8217;s a sneak peak:</p>
<blockquote><p>It&#8217;s been a year now since I started the <a href="http://crsh.googlecode.com">CRaSH</a> project. We use Java Content Repository (JCR) technology a lot at eXo, and I realized we all spent too much time and effort trying to interact with content repositories. We needed a tool to make this easier &#8211; so I decided to write a shell for JCR. While this new project, CRaSH, started as an interactive shell for browsing, querying and modifying JCR  repositories, it has evolved into more than that.</p>
<p>The architecture of CRaSH is founded on two ideas:</p>
<ul>
<li>The capability to serve multiple protocols: telnet and SSH are must-have&#8217;s</li>
<li>Extending the shell should be easy, and possible at runtime</li>
</ul>
<p>CRaSH started very simply, so the first usable version took me only a few days to write. In this first version, I remember I used the <a href="http://www.jboss.org/netty">Netty</a> library to provide connectivity, as it had basic support for the telnet protocol (I didn’t need anything more at the time). I also selected <a href="http://groovy.codehaus.org/">Groovy</a> language for writing shell commands, thinking it was the perfect match for two reasons. First, Groovy is dynamic and easy to compile, and second, you only need a little knowledge of Groovy to begin using it.</p>
<p>Since then, CRaSH has evolved to become richer and offer more capabilities. Netty was dropped because its telnet support was too basic; instead, Wimpi Telnetd and Apache SSHD were adopted to provide a real shell experience. CRaSH benefited from a couple of contributions as well (it’s always nice to have people in the open source community helping you), so it is pretty mature as of the recent 1.0.0-beta18 release (the only missing feature I would like is command line completion).</p>
<p>CRaSH is now a valuable tool to interact with a JVM runtime. The latest release provides two bundles. The first one, the core bundle, can be deployed in any servlet container. The second one is the GateIn bundle, which is built specifically for the GateIn portal server to add a powerful set of JCR features.</p>
<p>In this tutorial, we will focus on explaining basic CRaSH development, and demonstrate this by coding a command that will display a nice list of the JVM system properties.</p></blockquote>
<p>Continue reading the &#8220;<a href="http://www.exoplatform.com/company/en/resource-viewer/Tutorial/Introduction-to-Crash">Introduction to CRaSH</a>&#8221; tutorial on the eXo Resource Center&#8230;</p>
<div class='bookmarkify'><a name='bookmarkify'></a><div class='title' title='Use these links to share this page with others'>Share this blog post with :</div><div class='linkbuttons'><a href='http://www.bloglines.com/sub/http://blog.exoplatform.org/2011/01/11/introduction-to-crash/' title='Save to Bloglines' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/bloglines.png' style='width:16px; height:16px;' alt='[Bloglines] ' /></a> <a href='http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http://blog.exoplatform.org/2011/01/11/introduction-to-crash/&amp;title=Introduction to CRaSH' title='Save to BlogMarks' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/blogmarks.png' style='width:16px; height:16px;' alt='[BlogMarks] ' /></a> <a href='http://del.icio.us/post?url=http://blog.exoplatform.org/2011/01/11/introduction-to-crash/&amp;title=Introduction to CRaSH' title='Save to del.icio.us' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/delicious.png' style='width:16px; height:16px;' alt='[del.icio.us] ' /></a> <a href='http://digg.com/submit?phase=2&amp;url=http://blog.exoplatform.org/2011/01/11/introduction-to-crash/&amp;title=Introduction to CRaSH' title='Digg It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/digg.png' style='width:16px; height:16px;' alt='[Digg] ' /></a> <a href='http://www.dzone.com/links/add.html?description=Introduction to CRaSH&amp;url=http://blog.exoplatform.org/2011/01/11/introduction-to-crash/&amp;title=Introduction to CRaSH' title='Save to dzone' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/dzone.png' style='width:16px; height:16px;' alt='[dzone] ' /></a> <a href='http://www.facebook.com/share.php?u=http://blog.exoplatform.org/2011/01/11/introduction-to-crash/' title='Save to Facebook' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/facebook.png' style='width:16px; height:16px;' alt='[Facebook] ' /></a> <a href='http://www.furl.net/storeIt.jsp?u=http://blog.exoplatform.org/2011/01/11/introduction-to-crash/&amp;t=Introduction to CRaSH' title='Save to Furl' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/furl.png' style='width:16px; height:16px;' alt='[Furl] ' /></a> <a href='http://ma.gnolia.com/bookmarklet/add?url=http://blog.exoplatform.org/2011/01/11/introduction-to-crash/&amp;title=Introduction to CRaSH' title='Save to Ma.gnolia' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/magnolia.png' style='width:16px; height:16px;' alt='[Ma.gnolia] ' /></a> <a href='http://www.newsvine.com/_tools/seed?popoff=0&amp;u=http://blog.exoplatform.org/2011/01/11/introduction-to-crash/' title='Seed Newsvine' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/newsvine.png' style='width:16px; height:16px;' alt='[Newsvine] ' /></a> <a href='http://reddit.com/submit?url=http://blog.exoplatform.org/2011/01/11/introduction-to-crash/&amp;title=Introduction to CRaSH' title='Reddit' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/reddit.png' style='width:16px; height:16px;' alt='[Reddit] ' /></a> <a href='http://slashdot.org/bookmark.pl?url=http://blog.exoplatform.org/2011/01/11/introduction-to-crash/&amp;title=Introduction to CRaSH' title='Slashdot It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/slashdot.png' style='width:16px; height:16px;' alt='[Slashdot] ' /></a> <a href='http://www.stumbleupon.com/submit?url=http://blog.exoplatform.org/2011/01/11/introduction-to-crash/&amp;title=Introduction to CRaSH' title='Stumble It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/stumbleupon.png' style='width:16px; height:16px;' alt='[StumbleUpon] ' /></a> <a href='http://technorati.com/faves?add=http://blog.exoplatform.org/2011/01/11/introduction-to-crash/' title='Add to my Technorati Favorites' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/technorati.png' style='width:16px; height:16px;' alt='[Technorati] ' /></a> <a href='http://twitter.com/?status=Introduction to CRaSH+http://blog.exoplatform.org/2011/01/11/introduction-to-crash/' title='Save to Twitter' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/twitter.png' style='width:16px; height:16px;' alt='[Twitter] ' /></a> <a href='http://www.feedburner.com/fb/a/emailFlare?itemTitle=Introduction to CRaSH&amp;uri=http://blog.exoplatform.org/2011/01/11/introduction-to-crash/&amp;loc=en_US' title='Email this to a friend' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/email.png' style='width:16px; height:16px;' alt='[Email] ' /></a>  <a title='See more bookmark and sharing options...' href='http://blog.exoplatform.org/2011/01/11/introduction-to-crash/#bookmarkify' rel='nofollow'><small>More&nbsp;&raquo;</small></a></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.exoplatform.org/2011/01/11/introduction-to-crash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>eXo at JUDCon Berlin: GateIn Presentation from Julien Viet</title>
		<link>http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/</link>
		<comments>http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 18:33:18 +0000</pubDate>
		<dc:creator>Katie Poplin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[jcr]]></category>

		<guid isPermaLink="false">http://blog.exoplatform.org/?p=2228</guid>
		<description><![CDATA[For those of you who are attending the JBoss User &#38; Developers Conference (JUDCon) in Berlin next week, be sure to check out Julien Viet&#8217;s session. Julien, who serves as the project manager (from the eXo side) for GateIn, will be giving a talk on Day 2 of the conference, 8 October, at 14:30 in [...]]]></description>
			<content:encoded><![CDATA[<p>For those of you who are attending the JBoss User &amp; Developers Conference (JUDCon) in Berlin next week, be sure to check out Julien Viet&#8217;s session.  Julien, who serves as the project manager (from the eXo side) for GateIn, will be giving a talk on <a href="http://jboss.org/events/JUDCon/JUDCon2010Berlin/agenda.html">Day 2 of the conference, 8 October, at 14:30 in the Workflow and BPM track</a>.  He&#8217;ll be introducing Chromattic, an open source project that provides GateIn with a JCR persistence layer for rapid development of content-based apps.  Here&#8217;s the complete abstract:</p>
<blockquote><p><strong><a href="http://jboss.org/events/JUDCon/JUDCon2010Berlin/agenda.html">Julien Viet &#8211; Advanced JCR Persistence in the GateIn Portal Framework</a></strong></p>
<p>The GateIn Portal comes with a built in Java Content Repository server for managing pages, layouts and portlets. The Chromattic open source project was initiated to develop the GateIn object model persistence in a JCR server. Beyond natively powering the heart of GateIn, Chromattic can be used to rapidly develop rich and complex JCR based applications.</p>
<p>Chromattic is an object mapper framework that uses JCR as persistence layer. It provides a natural support for various JCR features, thanks to the usage of Java Annotations. Annotations declare which and how classes are mapped to nodes, turning any repository node into a Java object. It provides important features to JCR development such as type safety and object orientation which are lacking when the JCR native interfaces are used. Moderns IDE most used features like code completion and refactoring are de facto available when developing Chromattic applications.</p>
<p>The key concepts of Chromattic will be presented, through the development of a simple Chromattic application in real-time. This sample application will be made available to the attendees so they can use the sample code as a starting point. This advanced technical session will show:</p>
<li>How to integrate Chromattic with a modern IDE using a Maven-based build</li>
<li>How to deploy a Chromattic application in GateIn</li>
<li>How to connect to and manage a repository server</li>
<p>In addition, several advanced features of Chromattic will be highlighted, to demonstrate the power of the framework.</p></blockquote>
<div class='bookmarkify'><a name='bookmarkify'></a><div class='title' title='Use these links to share this page with others'>Share this blog post with :</div><div class='linkbuttons'><a href='http://www.bloglines.com/sub/http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/' title='Save to Bloglines' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/bloglines.png' style='width:16px; height:16px;' alt='[Bloglines] ' /></a> <a href='http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/&amp;title=eXo at JUDCon Berlin: GateIn Presentation from Julien Viet' title='Save to BlogMarks' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/blogmarks.png' style='width:16px; height:16px;' alt='[BlogMarks] ' /></a> <a href='http://del.icio.us/post?url=http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/&amp;title=eXo at JUDCon Berlin: GateIn Presentation from Julien Viet' title='Save to del.icio.us' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/delicious.png' style='width:16px; height:16px;' alt='[del.icio.us] ' /></a> <a href='http://digg.com/submit?phase=2&amp;url=http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/&amp;title=eXo at JUDCon Berlin: GateIn Presentation from Julien Viet' title='Digg It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/digg.png' style='width:16px; height:16px;' alt='[Digg] ' /></a> <a href='http://www.dzone.com/links/add.html?description=eXo at JUDCon Berlin: GateIn Presentation from Julien Viet&amp;url=http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/&amp;title=eXo at JUDCon Berlin: GateIn Presentation from Julien Viet' title='Save to dzone' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/dzone.png' style='width:16px; height:16px;' alt='[dzone] ' /></a> <a href='http://www.facebook.com/share.php?u=http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/' title='Save to Facebook' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/facebook.png' style='width:16px; height:16px;' alt='[Facebook] ' /></a> <a href='http://www.furl.net/storeIt.jsp?u=http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/&amp;t=eXo at JUDCon Berlin: GateIn Presentation from Julien Viet' title='Save to Furl' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/furl.png' style='width:16px; height:16px;' alt='[Furl] ' /></a> <a href='http://ma.gnolia.com/bookmarklet/add?url=http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/&amp;title=eXo at JUDCon Berlin: GateIn Presentation from Julien Viet' title='Save to Ma.gnolia' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/magnolia.png' style='width:16px; height:16px;' alt='[Ma.gnolia] ' /></a> <a href='http://www.newsvine.com/_tools/seed?popoff=0&amp;u=http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/' title='Seed Newsvine' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/newsvine.png' style='width:16px; height:16px;' alt='[Newsvine] ' /></a> <a href='http://reddit.com/submit?url=http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/&amp;title=eXo at JUDCon Berlin: GateIn Presentation from Julien Viet' title='Reddit' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/reddit.png' style='width:16px; height:16px;' alt='[Reddit] ' /></a> <a href='http://slashdot.org/bookmark.pl?url=http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/&amp;title=eXo at JUDCon Berlin: GateIn Presentation from Julien Viet' title='Slashdot It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/slashdot.png' style='width:16px; height:16px;' alt='[Slashdot] ' /></a> <a href='http://www.stumbleupon.com/submit?url=http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/&amp;title=eXo at JUDCon Berlin: GateIn Presentation from Julien Viet' title='Stumble It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/stumbleupon.png' style='width:16px; height:16px;' alt='[StumbleUpon] ' /></a> <a href='http://technorati.com/faves?add=http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/' title='Add to my Technorati Favorites' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/technorati.png' style='width:16px; height:16px;' alt='[Technorati] ' /></a> <a href='http://twitter.com/?status=eXo at JUDCon Berlin: GateIn Presentation from Julien Viet+http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/' title='Save to Twitter' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/twitter.png' style='width:16px; height:16px;' alt='[Twitter] ' /></a> <a href='http://www.feedburner.com/fb/a/emailFlare?itemTitle=eXo at JUDCon Berlin: GateIn Presentation from Julien Viet&amp;uri=http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/&amp;loc=en_US' title='Email this to a friend' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/email.png' style='width:16px; height:16px;' alt='[Email] ' /></a>  <a title='See more bookmark and sharing options...' href='http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/#bookmarkify' rel='nofollow'><small>More&nbsp;&raquo;</small></a></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.exoplatform.org/2010/10/01/exo-at-judcon-berlin-gatein-presentation-from-julien-viet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Webinar: How to Build a Multi-Tenancy Online Development Platform in Java</title>
		<link>http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/</link>
		<comments>http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 04:13:23 +0000</pubDate>
		<dc:creator>Katie Poplin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Tech Talk]]></category>
		<category><![CDATA[gadget]]></category>
		<category><![CDATA[gadgets]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[jax-rs]]></category>
		<category><![CDATA[jcr]]></category>
		<category><![CDATA[opensocial]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[webinar]]></category>

		<guid isPermaLink="false">http://blog.exoplatform.org/?p=2060</guid>
		<description><![CDATA[The talk that Benjamin gave at the local Java SIG this week was so well-received, we decided to host an encore version as a webinar on 22 April, at 9am PT / 12pm ET / 5pm GMT.  Benjamin will demonstrate how the eXo Platform can be used as an online Java development platform to create [...]]]></description>
			<content:encoded><![CDATA[<p>The talk that Benjamin gave at the local Java SIG this week was so well-received, we decided to host an encore version as a webinar on 22 April, at 9am PT / 12pm ET / 5pm GMT.  Benjamin will demonstrate how the eXo Platform can be used as an online Java development platform to create public and private clouds.  He will walk through the different technologies that eXo leverages, such as the GateIn open source portal framework, JAX-RS, Groovy and OpenSocial Gadgets.  Specifically, attendees will learn how to:</p>
<ul>
<li>use a JCR data store to model a cloud tenant</li>
<li>store and dynamically deploy JAX-RS services written in Groovy</li>
<li>store and dynamically deploy OpenSocial Gadgets that connect to previously online-created REST APIs</li>
<li>remotely expose those Gadgets to the public cloud</li>
</ul>
<p>The complete abstract and other details are available on the <a href="http://www.exoplatform.com/portal/public/website/community/__webinar-multi-tenancy" target="_blank">registration page</a>.</p>
<div class='bookmarkify'><a name='bookmarkify'></a><div class='title' title='Use these links to share this page with others'>Share this blog post with :</div><div class='linkbuttons'><a href='http://www.bloglines.com/sub/http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/' title='Save to Bloglines' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/bloglines.png' style='width:16px; height:16px;' alt='[Bloglines] ' /></a> <a href='http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/&amp;title=Webinar: How to Build a Multi-Tenancy Online Development Platform in Java' title='Save to BlogMarks' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/blogmarks.png' style='width:16px; height:16px;' alt='[BlogMarks] ' /></a> <a href='http://del.icio.us/post?url=http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/&amp;title=Webinar: How to Build a Multi-Tenancy Online Development Platform in Java' title='Save to del.icio.us' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/delicious.png' style='width:16px; height:16px;' alt='[del.icio.us] ' /></a> <a href='http://digg.com/submit?phase=2&amp;url=http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/&amp;title=Webinar: How to Build a Multi-Tenancy Online Development Platform in Java' title='Digg It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/digg.png' style='width:16px; height:16px;' alt='[Digg] ' /></a> <a href='http://www.dzone.com/links/add.html?description=Webinar: How to Build a Multi-Tenancy Online Development Platform in Java&amp;url=http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/&amp;title=Webinar: How to Build a Multi-Tenancy Online Development Platform in Java' title='Save to dzone' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/dzone.png' style='width:16px; height:16px;' alt='[dzone] ' /></a> <a href='http://www.facebook.com/share.php?u=http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/' title='Save to Facebook' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/facebook.png' style='width:16px; height:16px;' alt='[Facebook] ' /></a> <a href='http://www.furl.net/storeIt.jsp?u=http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/&amp;t=Webinar: How to Build a Multi-Tenancy Online Development Platform in Java' title='Save to Furl' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/furl.png' style='width:16px; height:16px;' alt='[Furl] ' /></a> <a href='http://ma.gnolia.com/bookmarklet/add?url=http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/&amp;title=Webinar: How to Build a Multi-Tenancy Online Development Platform in Java' title='Save to Ma.gnolia' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/magnolia.png' style='width:16px; height:16px;' alt='[Ma.gnolia] ' /></a> <a href='http://www.newsvine.com/_tools/seed?popoff=0&amp;u=http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/' title='Seed Newsvine' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/newsvine.png' style='width:16px; height:16px;' alt='[Newsvine] ' /></a> <a href='http://reddit.com/submit?url=http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/&amp;title=Webinar: How to Build a Multi-Tenancy Online Development Platform in Java' title='Reddit' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/reddit.png' style='width:16px; height:16px;' alt='[Reddit] ' /></a> <a href='http://slashdot.org/bookmark.pl?url=http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/&amp;title=Webinar: How to Build a Multi-Tenancy Online Development Platform in Java' title='Slashdot It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/slashdot.png' style='width:16px; height:16px;' alt='[Slashdot] ' /></a> <a href='http://www.stumbleupon.com/submit?url=http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/&amp;title=Webinar: How to Build a Multi-Tenancy Online Development Platform in Java' title='Stumble It!' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/stumbleupon.png' style='width:16px; height:16px;' alt='[StumbleUpon] ' /></a> <a href='http://technorati.com/faves?add=http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/' title='Add to my Technorati Favorites' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/technorati.png' style='width:16px; height:16px;' alt='[Technorati] ' /></a> <a href='http://twitter.com/?status=Webinar: How to Build a Multi-Tenancy Online Development Platform in Java+http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/' title='Save to Twitter' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/twitter.png' style='width:16px; height:16px;' alt='[Twitter] ' /></a> <a href='http://www.feedburner.com/fb/a/emailFlare?itemTitle=Webinar: How to Build a Multi-Tenancy Online Development Platform in Java&amp;uri=http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/&amp;loc=en_US' title='Email this to a friend' onclick='target="_blank";' rel='nofollow'><img src='http://blog.exoplatform.org/wp-content/plugins/bookmarkify/email.png' style='width:16px; height:16px;' alt='[Email] ' /></a>  <a title='See more bookmark and sharing options...' href='http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/#bookmarkify' rel='nofollow'><small>More&nbsp;&raquo;</small></a></div></div>]]></content:encoded>
			<wfw:commentRss>http://blog.exoplatform.org/2010/04/08/webinar-how-to-build-a-multi-tenancy-online-development-platform-in-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

