You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by Tobias Bocanegra <to...@day.com> on 2006/12/07 10:12:00 UTC
Re: Error in logging in to remote repository via JNDI (using Tomcat)
hi,
this is probably a problem of the escaping of the classpaths in the
RMI layer of the jdk:
in the path of "c:/Program Files/..." the space is not properly
escaped, hence this error:
java.net.MalformedURLException: no protocol:
Files/netbeans-5.0/enterprise2/jakarta-tomcat-5.5.9/common/classes/
see also:
http://archives.java.sun.com/cgi-bin/wa?A2=ind0205&L=rmi-users&P=797
the simplest fix is to move your installation to a path that does not
contain spaces.
regards, toby
On 12/6/06, Ruchi Goel <Ru...@sun.com> wrote:
> Hi,
>
> I have RMIServer :
> public class RMIServer {
>
> private static String REPOSITORY_CONFIG="repository-xml.xml";
> private static String REPOSITORY_DIR="PortalContentRepository";
>
>
> /**
> * The main entry point of the example application.
> *
> * @param args command line arguments (ignored)
> * @throws Exception if an error occurs
> */
> public static void main(String[] args) throws Exception {
> Repository repository = new
> TransientRepository(REPOSITORY_CONFIG,REPOSITORY_DIR);
>
> ServerAdapterFactory factory = new ServerAdapterFactory();
> RemoteRepository remote = factory.getRemoteRepository(repository);
> Registry reg = LocateRegistry.createRegistry(1101);
> reg.rebind("jackrabbit", remote);
>
>
> }
>
>
> Following RMIClient is able to conenct and write to the above repository.
> public class RMIClient {
>
> /**
> * The main entry point of the example application.
> *
> * @param args command line arguments (ignored)
> * @throws Exception if an error occurs
> */
> public static void main(String[] args) throws Exception {
> ClientRepositoryFactory factory = new ClientRepositoryFactory();
> Repository repository =
> factory.getRepository("rmi://localhost:1101/jackrabbit");
>
> Session session = repository.login(new
> SimpleCredentials("superuser", "superuser".toCharArray()),null);
> //Session session = repository.login();
> try {
> String user = session.getUserID();
> String name =
> repository.getDescriptor(Repository.REP_NAME_DESC);
> System.out.println(
> "Logged in as " + user + " to a " + name + "
> repository.");
>
> //Test adding and saving of node via to repository accessed
> via rmi
> Node rn = session.getRootNode();
> Node cms = rn.addNode("cms");
>
> //---------------------------add first
> ad-----------------------------------
> Node ad = cms.addNode("ad");
> ad.setProperty("title","IT Jobs !!");
> session.save();
> ad.save();
>
> } finally {
> session.logout();
> }
> }
>
>
> Now, I am trying JNDI from web application to discover the remote
> repository. I registered under Tomcat server.xml following :
> <Resource auth="Container"
> factory="org.apache.jackrabbit.rmi.client.ClientRepositoryFactory"
> name="jcr/globalRepository" url="rmi://localhost:1101/jackrabbit"
> type="javax.jcr.Repository" />
> and the web application tries to login to repository via following :
> InitialContext initial = new InitialContext();
>
> //Look up needed for Tomcat
> Context context = (Context) initial.lookup("java:comp/env");
> System.out.println("before lookup");
> repository = (Repository) context.lookup("jcr/GlobalRepository");
> repository.login(new SimpleCredentials("superuser",
> "superuser".toCharArray()));
>
> I get following error in last line , while I am able to login as anonymous.
> java.rmi.ServerException: RemoteException occurred in server thread;
> nested exception is:
> java.rmi.UnmarshalException: error unmarshalling arguments;
> nested exception is:
> java.net.MalformedURLException: no protocol:
> Files/netbeans-5.0/enterprise2/jakarta-tomcat-5.5.9/common/classes/
> at
> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:325)
> at sun.rmi.transport.Transport$1.run(Transport.java:153)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
> at
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
> at
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
> at java.lang.Thread.run(Thread.java:595)
> at
> sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
> at
> sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
> at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126)
> at
> org.apache.jackrabbit.rmi.server.ServerRepository_Stub.login(Unknown Source)
> at
> org.apache.jackrabbit.rmi.client.ClientRepository.login(ClientRepository.java:97)
> at
> com.sun.portal.cms.ad.service.AdModelServiceImpl.getSession(AdModelServiceImpl.java:43)
> at
> com.sun.portal.cms.ad.service.AdModelServiceImpl.getAd(AdModelServiceImpl.java:67)
> at
> com.sun.portal.cms.ad.model.TemplateFiller.getHtmlFromCMS(TemplateFiller.java:69)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> P.S .I have jcr-rmi.jar under commons as well webapp WEB-INF//lib
> directory
>
>
> Appreciate help.
> Thanks,
> Ruchi
>
>
>
>
>
>
--
-----------------------------------------< tobias.bocanegra@day.com >---
Tobias Bocanegra, Day Management AG, Barfuesserplatz 6, CH - 4001 Basel
T +41 61 226 98 98, F +41 61 226 98 97
-----------------------------------------------< http://www.day.com >---