An open-source, federated content repository

Announcing ModeShape 2.2

I’m very happy to announce that ModeShape 2.2 is now available. Yes, it’s just a few weeks since releasing 2.1, but we’ve managed to add a couple of great features and fix several bugs. As usual, ModeShape 2.2 is available in the JBoss Maven repository (under the “org.modeshape” group ID) and on our downloads page. We’ve updated our Getting Started Guide, Reference Guide , and JavaDoc.

ModeShape 2.2 has several improvements and new features:

  • Deploying on JBoss AS – We’ve improved the kit for deploying ModeShape into JBoss Application Server introduced as a technology preview in the previous release. It still is as simple as downloading and unzipping into a profile directory. ModeShape will run as a service in JBoss AS, so you can simply deploy applications that use the standard JCR 2.0 API to find and access their javax.jcr.Repository instance. You also get the WebDAV and RESTful services, and use JOPR for monitoring, alerting, and administration. We’ve also added several sequencers to the default configuration.
  • JDBC driver – We’ve improved the JDBC driver that was introduced as a technology preview in 2.1. And it’s now possible to use JDBC metadata, even if the driver is running in a remote process.
  • Teiid relational model sequencerTeiid Designer is a visual tool that enables rapid, model-driven definition, integration, management and testing of data services without programming using the Teiid database virtualization and federation engine. This new sequencer is able to parse parse relational model files produced by Teiid Designer, and extract the structured data model of the relational database design, including catalogs/schemas, tables, views, columns, primary keys, foreign keys, indexes, procedures, procedure results, procedure results, and logical relationships. This means that when these models are uploaded into a ModeShape repository, the sequencer writes to the repository all this relational metadata, where it can be queried and accessed by JCR, RESTful, and JDBC clients.
  • Teiid VDB sequencer – This new sequencer parses the virtual database archive files produced by the Teiid Designer, and extracts the structured relational data model described by each of the contained XMI files. This means that when VDB files are uploaded into a ModeShape repository, the sequencer writes to the repository all this virtual database and relational metadata contained in the VDB, where it can be queried and accessed by JCR, RESTful, and JDBC clients.

There are other smaller features, improvements, and quite a few bug fixes. See the release notes for the complete list.

ModeShape is  lightweight, fast, pluggable, open-source JCR repository that federates and unifies content from multiple systems, including files systems, databases, data grids, other repositories, etc. It implements all of the required JCR 2.0 features (repository acquisition, authentication, reading/navigating, query, export, node type discovery, and permissions and capability checking) and most of the optional JCR 2.0 features (writing, import, observation, workspace management, versioning, locking, node type management, same-name siblings, orderable child nodes, and shareable nodes). That means you can use the JCR API to access the information you already have, or use it like a conventional JCR system (just with more ways to persist your content).

Many thanks to the ModeShape community of users and contributors, who have (once again) shown what a fantastic and active community can do in a very short time!

Give ModeShape 2.2 a try and let us know what you think!

Filed under: features, jcr, news, repository, rest, tools

ModeShape showcase at Red Hat Summit and JBoss World

The annual Red Hat Summit and JBoss World conferences are being held next week in Boston, and there will be a lot to see. Of special note, however, is the mobile sweepstakes trivia game put together by CityTech to demonstrate how to easily create a highly available and scalable application using JBoss technologies.

Along with using JBoss AS6, RESTEasyHornetQ, RHQ, and CirrAS, they’re using ModeShape and JCR API to access the highly-scalable Infinispan data grid. Server components are deployed to Amazon Web Services, while users interact with the game using a web interface and native iPhone and Android clients.  Check out Jeff Brown’s blog and Tom Kelly’s blog for the implementation details.

Filed under: jcr, news, open source, rest

ModeShape 1.1 adds versioning, WebDAV, JCR connector, and more

ModeShape 1.1 has arrived a mere one month after the prior release, and it brings some fantastic improvements:

  • support for JCR versioning
  • a new WebDAV server module
  • a new connector to other JCR repositories
  • improved import from JCR System and Document Views
  • almost 2 dozen other fixes and improvements

ModeShape now supports all the JCR 1.0 Level 1 and Level 2 features, plus the optional locking, versioning, and observation features. ModeShape also supports the required XPath query language, a simple search language, and the new JCR-SQL2 query language. ModeShape integrates with JAAS and web application security, or you can easily integrate it with other systems. ModeShape can use a variety of back-ends to store information (RDBMSes, Infinispan data grid, memory, JBoss Cache, JCR repositories), can access content in multiple systems (file systems, SVN repositories, JDBC metadata), can federate multiple stores and systems into a single JCR repository, or can access other systems using custom connectors. ModeShape is also able to automatically extract and store useful content from files you upload into the repository using its library of sequencers, making that information much more accessible and searchable than if it remains locked up inside the stored files. And ModeShape provides WebDAV and RESTful servers to allow various clients to access the content.

All the ModeShape 1.1.0.Final artifacts are in the JBoss Maven repository and on the project’s downloads page. The detailed list of the changes are in the release notes.

Congratulations to the fantastic ModeShape community!

Filed under: features, jcr, news, open source, repository, rest

Announcing JBoss DNA 0.5

Hot off the presses is the 0.5 release for JBoss DNA. It’s in the JBoss Maven repository and in our project’s downloads area. Of course, the best place to get started is our Getting Started guide, or for those wanting all the detail, the Reference Guide. Both of these documents were completely rewritten to be more complete and better reorganized. And we always have JavaDocs.

For those of you not familiar with our project, here’s a brief summary:

JBoss DNA is a JCR implementation that provides access to content stored in many different kinds of systems. A JBoss DNA repository isn’t yet another silo of isolated information, but rather it’s a JCR view of the information you already have in your environment: files systems, databases, other repositories, services, applications, etc.

To your applications, JBoss DNA looks and behaves like a regular JCR repository. Using the standard JCR API, applications can search, navigate, version, and listen for changes in the content. But under the covers, JBoss DNA gets its content by federating multiple back-end systems (like databases, services, other repositories, etc.), allowing those systems to continue “owning” the information while ensuring the unified repository stays up-to-date and in sync.

This release brings quite a few new features. First and foremost, this release brings a new technique for configuring the JBoss DNA engine that is much easier and works programmatically or via a configuration file (or configuration repository). JBoss DNA also supports defining node types with CND files, and allows registration of new node types using the same approach as in JSR-283. (There’s even a new CND sequencer.) All of our examples now use JBoss DNA as the JCR implementation.

By the way, JBoss DNA supports all JCR Level 1 features except XPath queries, and all JCR Level 2 features except authorization, referential integrity for reference properties, re-ordering of orderable child nodes, workspace cloning and corresponding nodes, workspace copying. This release includes some features we’ll need in the next release to close the gap on JCR compatibility. We’ve been reserving the “1.0” release label for when we reach compatibility with Level 1 and Level 2 (plus some optional features), and we’re getting really close!

Another great feature we’ve added is a new RESTful web service front end to JBoss DNA. Deploying to a web server is pretty easy, and your applications and use HTTP and JSON to access or update repository content. Although the initial version of this REST server only supports the JBoss DNA JCR implementation, it has been designed to make integration with other JCR implementors easy.

This release also sees an enhanced connector framework, and we improved most of our connectors in some way. The federation connector was completely rewritten to leverage a fork-join type algorithm for parallel execution and pushdowns. The SVN connector is pretty cool, though it’s currently read-only and doesn’t yet push events.

The last improvement I’ll note is that we’ve improved the ability for JBoss DNA to use an authentication and authorization system. It works with JAAS (see one of our example applications) and with servlet container security.

We were able to get back on the “release early, release often” bandwagon with this release. It was just a little over a month since we released 0.4, and this sure was a lot more sane.

Thanks to all the folks in our community that worked on this release. We really pushed ourselves with an aggressive schedule, but everyone came through. Gotta love open source!

Filed under: jcr, news, repository, rest

AtomPub, REST, repositories … and Starbucks?

InfoQ has a great article on how REST and AtomPub work, using a “Starbucks” example. (Via Joel Amoussou.)

One thing this article does well is explain how representations can contain URIs for followup activities (e.g., what can be done next with a resource). In addition to the “next” used in the article, activities might include undoing the last change, or “publishing” some artifact. This works extremely well when coupled with some sort of state transition (process) engine on the back end and allows clients to “discover” the process, even when that process changes! And note that the process might include lifecycle changes and/or workflow.

Now, how does REST and AtomPub relate to JBoss DNA and JCR repositories? Well, it’s always useful to have a REST API into a JCR repository. For the most part, I think a generic repository library like JBoss DNA will provide a generic REST interface. After all, working with a JCR repository doesn’t have a lot of process – it’s mostly just simple get/post/put/delete operations on the nodes (resources). But AtomPub only defines three levels (services, collections, and entries), and this doesn’t really map well to a hierarchical repository. (Yes, I could conceive of several different mappings, but the question is whether any of them really are useful.)

So while a content repository system might not provide a generic AtomPub, a domain that uses a JCR repository may very well want to use AtomPub to allow clients to work with the domain’s content. Consider a SOA governance repository, which may have multiple collections (e.g., “services”, “published services”, “news”, “policies”, etc.), and workflow (e.g., uploading a service, publishing a service, etc.). Here, AtomPub can be mapped to the SOA governance domain pretty easily, but this mapping is probably different than other domains.

It would be nice if JBoss DNA could have a generic “AtomPub” facility that is content-driven: specify the collections (maybe defined as queries), map the entities to workflow processes, etc. But that’s getting ahead of ourselves. First things first.

Filed under: rest, techniques, tools

ModeShape is

a lightweight, fast, pluggable, open-source JCR repository that federates and unifies content from multiple systems, including files systems, databases, data grids, other repositories, etc.

Use the JCR API to access the information you already have, or use it like a conventional JCR system (just with more ways to persist your content).

ModeShape used to be 'JBoss DNA'. It's the same project, same community, same license, and same software.