use of org.apache.jackrabbit.rmi.server.RemoteAdapterFactory in project jackrabbit by apache.
the class RepositoryStubImpl method getRepository.
@Override
public synchronized Repository getRepository() throws RepositoryStubException {
if (repository == null) {
try {
Repository repo = super.getRepository();
principal = findKnownPrincipal(repo);
RemoteAdapterFactory raf = new ServerAdapterFactory();
remote = raf.getRemoteRepository(repo);
// Make sure that the remote reference survives serialization
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(buffer);
oos.writeObject(RemoteObject.toStub(remote));
oos.close();
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray()));
LocalAdapterFactory laf = new ClientAdapterFactory();
repository = laf.getRepository((RemoteRepository) ois.readObject());
} catch (Exception e) {
throw new RepositoryStubException(e);
}
}
return repository;
}
use of org.apache.jackrabbit.rmi.server.RemoteAdapterFactory in project jackrabbit by apache.
the class RemoteBindingServlet method getRemoteRepository.
/**
* Returns the configured remote repository reference. The remote
* repository is instantiated and memorized during the first call to
* this method.
*
* @return remote repository
* @throws ServletException if the repository could not be instantiated
*/
protected RemoteRepository getRemoteRepository() throws ServletException {
if (remote == null) {
try {
RemoteAdapterFactory factory = getRemoteAdapterFactory();
remote = factory.getRemoteRepository(new ServletRepository(this));
} catch (RemoteException e) {
throw new ServletException("Failed to create the remote repository reference", e);
}
}
return remote;
}
use of org.apache.jackrabbit.rmi.server.RemoteAdapterFactory in project jackrabbit by apache.
the class JCRServer method start.
public void start() throws Exception {
if (this.localAddress == null) {
throw new IllegalStateException("local repository address is null");
}
if (this.remoteAddress == null) {
throw new IllegalStateException("remote repository address is null");
}
// local repository
InitialContext localContext = createInitialContext(localEnvironment);
localRepository = (Repository) localContext.lookup(this.localAddress);
if (localRepository == null) {
throw new IllegalArgumentException("local repository not found at " + this.localAddress);
}
// remote repository
InitialContext remoteContext = createInitialContext(remoteEnvironment);
RemoteAdapterFactory factory = new ServerAdapterFactory();
remote = factory.getRemoteRepository(localRepository);
// bind remote server
remoteContext.bind(this.remoteAddress, remote);
}
Aggregations