Package org.apache.jackrabbit.rmi.client

Client implementation of the transparent JCR-RMI layer.

See:
          Description

Interface Summary
LocalAdapterFactory Factory interface for creating local adapters for remote references.
 

Class Summary
BrokenRemoteRepository Dummy remote repository instance that throws a RemoteException whenever any method is invoked.
ClientAdapterFactory Default implementation of the LocalAdapterFactory interface.
ClientItem Local adapter for the JCR-RMI RemoteItem interface.
ClientItemDefinition Local adapter for the JCR-RMI RemoteItemDefinition interface.
ClientLock Local adapter for the JCR-RMI RemoteLock interface.
ClientLockManager  
ClientNamespaceRegistry Local adapter for the JCR-RMI RemoteNamespaceRegistry interface.
ClientNode Local adapter for the JCR-RMI RemoteNode interface.
ClientNodeDefinition Local adapter for the JCR-RMI RemoteNodeDefinition interface.
ClientNodeType Local adapter for the JCR-RMI RemoteNodeType interface.
ClientNodeTypeManager Local adapter for the JCR-RMI RemoteNodeTypeManager interface.
ClientObject Base class for client adapter objects.
ClientObservationManager The ClientObservationManager class This class uses an instance of the ClientEventPoll class for the actual registration and event dispatching.
ClientProperty Local adapter for the JCR-RMI RemoteProperty interface.
ClientPropertyDefinition Local adapter for the JCR-RMI RemotePropertyDefinition interface.
ClientQuery Local adapter for the JCR-RMI RemoteQuery interface.
ClientQueryManager Local adapter for the JCR-RMI RemoteQueryManager interface.
ClientQueryResult Local adapter for the JCR-RMI RemoteQueryResult interface.
ClientRepository Local adapter for the JCR-RMI RemoteRepository interface.
ClientRepositoryFactory Object factory for JCR-RMI clients.
ClientRow Local adapter for the JCR-RMI RemoteRow interface.
ClientSession Local adapter for the JCR-RMI RemoteSession interface.
ClientVersion Local adapter for the JCR-RMI RemoteVersion interface.
ClientVersionHistory Local adapter for the JCR-RMI RemoteVersionHistory interface.
ClientVersionManager  
ClientWorkspace Local adapter for the JCR-RMI RemoteWorkspace interface.
ClientXASession Local adapter for the JCR-RMI RemoteXASession interface.
SafeClientRepository A "safe" local adapter for the JCR-RMI RemoteRepository interface.
 

Exception Summary
RemoteRepositoryException JCR-RMI remote exception.
RemoteRuntimeException JCR-RMI remote runtime exception.
 

Package org.apache.jackrabbit.rmi.client Description

Client implementation of the transparent JCR-RMI layer.

This package contains the default client implementation of the transparent JCR-RMI layer. The classes in this package can be used to make a remote JCR-RMI service seem like a local JCR repository.

The contents of this package is designed using two design patterns, Factory and Adapter. All the ClientObject subclasses implement the Adapter pattern to adapt a remote JCR-RMI reference to the corresponding local JCR interface. The Factory pattern is used to centralize the creation and configuration of all adapter instances.

Looking up a JCR-RMI client

The ClientRepositoryFactory class provides a convenient mechanism for looking up a remote JCR-RMI repository. The factory can be used either directly or as a JNDI object factory.

The following example shows how to use the ClientRepositoryFactory directly:

    String name = ...; // The RMI URL of the repository
    
    ClientRepositoryFactory factory = new ClientRepositoryFactory();
    Repository repository = factory.getRepository(name);

The ClientRepositoryFactory can also be used via JNDI. The following example settings and code demonstrate how to configure and use the transparent JCR-RMI layer in a Tomcat 5.5 web application:

context.xml:
    <Resource name="jcr/Repository" auth="Container"
              type="javax.jcr.Repository"
              factory="org.apache.jackrabbit.rmi.client.ClientRepositoryFactory"
              url="..."/>
              
web.xml:
    <resource-env-ref>
      <description>The external content repository</description>
      <resource-env-ref-name>jcr/Repository</resource-env-ref-name>
      <resource-env-ref-type>javac.jcr.Repository</resource-env-ref-type>
    </resource-env-ref>

...SomeServlet.java:
    Context initial = new InitialContext();
    Context context = (Context) initial.lookup("java:comp/env");
    Repository repository = (Repository) context.lookup("jcr/Repository");

Note that in the example above only the context.xml configuration file contains a direct references to the JCR-RMI layer. All other parts of the web application can be implemented using the standard JCR interfaces.



Copyright © 2004-2010 The Apache Software Foundation. All Rights Reserved.