Hi Gaurag, Make sure you have jackrabbit-jcr2dav on your classpath in your java client application. You need to have Jcr2davRepositoryFactory on your classpath in order to be able to connect to the repository through WebDAV using java application and it is included in the mentioned jar.
Regards, Jarek On Tue, Apr 15, 2014 at 8:15 PM, Pathare, Gaurang (GE Global Research) <[email protected]> wrote: > Hi, > > I've deployed jackrabbit-webapp-2.6.5.war in tomcat and I'm able to access > http://localhost:8082/jackrabbit-webapp-2.6.5/server from browser. > > But when I try to access repository from java test code > public class Test { > > @SuppressWarnings("nls") > public static void main(String[] args) { > > Repository repository; > Session session = null; > try { > repository = JcrUtils > > .getRepository("http://localhost:8082/jackrabbit-webapp-2.6.5/server"); > > session = repository.login(new SimpleCredentials("admin", > "admin" > .toCharArray())); > > Node node = session.getRootNode(); > > System.out.println("name" + node.getName() + " path " > + node.getPath()); > > } catch (Exception e) { > // TODO Auto-generated catch block > e.printStackTrace(); > } finally { > if (session != null) { > session.logout(); > } > > } > } > } > > It fails with following error. > . > javax.jcr.RepositoryException: Unable to access a repository with the > following settings: > org.apache.jackrabbit.repository.uri: > http://localhost:8082/jackrabbit-webapp-2.6.5/server > The following RepositoryFactory classes were consulted: > org.apache.jackrabbit.core.RepositoryFactoryImpl: declined > org.apache.jackrabbit.commons.JndiRepositoryFactory: declined > org.apache.jackrabbit.rmi.repository.RmiRepositoryFactory: failed > because of RemoteRuntimeException: java.rmi.RemoteException: Failed > to read the resource at URL > http://localhost:8082/jackrabbit-webapp-2.6.5/server; nested exception is: > java.io.IOException: Server returned HTTP response code: 401 > for URL: http://localhost:8082/jackrabbit-webapp-2.6.5/server > because of RemoteException: Failed to read the resource at URL > http://localhost:8082/jackrabbit-webapp-2.6.5/server; nested exception is: > java.io.IOException: Server returned HTTP response code: 401 > for URL: http://localhost:8082/jackrabbit-webapp-2.6.5/server > because of IOException: Server returned HTTP response code: 401 for > URL: http://localhost:8082/jackrabbit-webapp-2.6.5/server > org.apache.jackrabbit.jcr2spi.Jcr2spiRepositoryFactory: declined > Perhaps the repository you are trying to access is not available at the > moment. > at > org.apache.jackrabbit.commons.JcrUtils.getRepository(JcrUtils.java:219) > at > org.apache.jackrabbit.commons.JcrUtils.getRepository(JcrUtils.java:259) > at jackrabbit.Test.main(Test.java:33) > > > > I've made following changes to Web.xml : > > <servlet> > <servlet-name>Repository</servlet-name> > <description> > This servlet provides other servlets and jsps a common way to > access > the repository. The repository can be accessed via JNDI, RMI or > Webdav. > </description> > > <servlet-class>org.apache.jackrabbit.j2ee.RepositoryAccessServlet</servlet-class> > > <init-param> > <param-name>bootstrap-config</param-name> > > <param-value>/WEB-INF/repository/bootstrap.properties</param-value> > > > > And bootstrap.properties file looks as follows: > > # Repository configuration settings (will be adjusted by installer) > repository.config=/WEB-INF/repository/repository.xml > repository.home=../analyticCatalog > repository.name=analyticCatalog.repository > > # RMI Settings > rmi.enabled=true > rmi.port=1234 > rmi.host=localhost > # If the URI is not specified, it's composed as follows: > #rmi.uri=//${rmi.host}:${rmi.port}/${repository.name} > > # JNDI Settings > # all properties starting with 'java.naming.' will go into the > # environment of the initial context > jndi.enabled=true > # if the name is not specified, it's initialized with the repository.name > #jndi.name=${repository.name} > java.naming.provider.url=http://www.apache.org/jackrabbit > java.naming.factory.initial=org.apache.jackrabbit.core.jndi.provider.DummyInitialContextFactory > > > > security module in Reposiotry.xml: > > <Security appName="Jackrabbit"> > <SecurityManager > class="org.apache.jackrabbit.core.DefaultSecurityManager" > workspaceName="security"> > </SecurityManager> > <AccessManager > class="org.apache.jackrabbit.core.security.DefaultAccessManager"> > </AccessManager> > > <LoginModule > class="org.apache.jackrabbit.core.security.authentication.DefaultLoginModule"> > <param name="anonymousId" value="anonymous"/> > <param name="adminId" value="admin"/> > </LoginModule> > </Security> > > > My questions are : > > > 1. Am I missing anything here ? > > 2. Documentation says webDav should be enabled by default do I need to > explicitly enable webdav somewhere just like we have rmi.enabled flag in > bootstrap.properties ? > > 3. Since it is a 401 error do I need to make any changes to login module > ? or pass loging credentials when I call getRepository() ? > > Kindly let me know if you need any more details. > Thanks in advance. > > Regards, > Gaurang >
