Pergunta
Como usar o RMI para me conectar ao CRX a partir um aplicativo externo?
Resposta, Resolução
O ouvinte de conexão RMI está configurado no web.xml
do aplicativo web crx. Em uma instalação padrão, o arquivo war é extraído para crx_install_dir/server/runtime/0/_crx/
. Você poderá encontrar o web.xml em crx_install_dir/server/runtime/0/_crx/WEB-INF/webxml
.
Por padrão, o RMI não está habilitado, para habilitá-lo você precisará:
- Editar web.xml e comentar as seguintes linhas em Servlet de Repositório
<init-param> <param-name>rmi-port</param-name> <param-value>1234</param-value> <description> A porta RMI para registrar o repositório no Registro RMI. Se for igual a 0, a porta padrão será usada. Omita este parâmetro para desabilitar totalmente o servidor RMI. </description> </init-param>
- Reinicie o CRX e verifique se o seu servidor está escutando na porta definida (você pode usar o comando unix: lsof -i)
- Escreva uma classe java que se conecte ao CRX por meio do RMI. Abaixo está um exemplo muito simples mostrando como fazer logon no CRX e obter uma sessão Crx:
import javax.jcr.Repository; import javax.jcr.Session; import javax.jcr.SimpleCredentials; import org.apache.jackrabbit.rmi.client.ClientRepositoryFactory; /* * Simple CRX RMI test class that connects to the CRX and logs in as admin * */ public class RMITest { public static void main (String[] args){ ClientRepositoryFactory factory = new ClientRepositoryFactory(); Repository repository; String crxApplicationName = "crx"; String repoUrl = "//localhost:1234/"+crxApplicationName; String workspace = "crx.default"; String username = "admin"; char [] password = "admin".toCharArray(); try { repository = factory.getRepository(repoUrl); Session s = repository.login(new SimpleCredentials(username,password), workspace); System.out.println("userId:"+s.getUserID()); } catch (Exception e) { e.printStackTrace(); } } }
Nota
Certifique-se de ter os seguintes arquivos jar prontos para que isso funcione,
\crx-quickstart\server\lib\container\jcr-*.*.jar
\crx-quickstart\server\lib\server\slf4j-log4j12-*.*.jar
\crx-quickstart\server\lib\server\log4j-*.*.*.jar
\crx-quickstart\server\runtime\0\_crx\WEB-INF\lib\jackrabbit-jcr-rmi-*.*.*.jar
\crx-quickstart\server\runtime\0\_crx\WEB-INF\lib\crx-rmi-*.*.*.jar