use of org.apache.jackrabbit.rmi.server.ServerAdapterFactory 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.ServerAdapterFactory 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