jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pathare, Gaurang (GE Global Research)" <path...@ge.com>
Subject Unable to access repository using WebDAV from java.
Date Tue, 15 Apr 2014 18:15:42 GMT
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


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message