jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Niu, Xuetao" <Xuetao....@fiserv.com>
Subject RE: "Bad Request" exception using DavEx
Date Thu, 18 Mar 2010 13:57:01 GMT
Hi Angela,

I don't know better ways of "unlocking" the "/" node than follows:

- shutdown Tomcat
- kill all "java" processes.
- Delete the ".lock" file and the "workspaces" folder
- Removed all sequences, triggers, tables from my oracle database. (I
use oracle bundle persistence and oracle filesystem)

Still, I get the same error... What I don't understand is why using
TransientRepository (created by JcrUtils.getRepository(Map)) doesn't
have such problem. Is the root node locked by the standalone WAR app
itself?

Thanks for helping me further.

Xuetao

P.S. I made a mistake in my email statements. What I actually did was to
make "/" lockable in the 1st step, not versionable.

-----Original Message-----
From: Angela Schreiber [mailto:anchela@day.com] 
Sent: Thursday, March 18, 2010 1:48 PM
To: users@jackrabbit.apache.org
Subject: Re: "Bad Request" exception using DavEx

hi Xuetao

first of all: the exception you mention below ("Node locked. 
(JsonDiffHandler.java, line 575)" indicates that there has
been a lock set to that node in which case some other session
that isn't the lock owner will not be allowed to modify that
node (or even the whole subtree if the lock is deep).

so... at some point you most probably locked that node
-> unlock it first in order to make changes with another session.

i'm pretty sure that this will solve your problem.

and just as a side note:
if you want the root node to be versionable you should
use mix:versionable instead of mix:lockable.

regards
angela

> Thanks for your help. What I was trying to do, functionally, is to 
> 1) make "/" versionable, 
> 2) register namespace for "rtde:" if not registered yet for each
> session, 
> 3) remove "/rtde:root" if exists
> 4) save session
> 5) create "/rtde:root" 
> 6) save session (this gives exception)
> 
> To answer your questions:
> 
> - I create every node as "nt:unstructured".
> - Each node is not set as referenceable.
> - I just deployed the standalone WAR of jackrabbit2.0.0 into tomcat6,
> without specific configuration for the DavEx repo, except for the
> repository.xml file attached. 
> - I am not aware of how to do any security settings, so probably they
> are default. Do I set it in the repository.xml ? If so, I have <param
> name="anonymousId" value="anonymous"/>
> - A simple log file is attached, the only ERROR is: JsonDiffHandler:
> Node locked. (JsonDiffHandler.java, line 575), and I did delete the
> .lock file and the "workspaces" folder before starting Tomcat.
> 
> Thanks again!
> Xuetao
> 
> -----Original Message-----
> From: Angela Schreiber [mailto:anchela@day.com] 
> Sent: Thursday, March 18, 2010 12:19 PM
> To: users@jackrabbit.apache.org
> Subject: Re: "Bad Request" exception using DavEx
> 
> hi
> 
> not sure if properly understood what your problem is.
> from your description i created a simple test-case as follows
> and run it on my jackrabbit trunk (jcr2dav -> conformancetest)...
> that worked...
> 
> public void testSimple() throws Exception {
>          Session s = getHelper().getRepository().login(new 
> SimpleCredentials("", new char[0]), null);
>          try {
>              Node n = s.getRootNode();
>              n.addMixin("mix:lockable");
>              s.save();
> 
>              n.addNode("test");
>              s.save();
>          } finally {
>              s.logout();
>          }
> 
>          Session ss = getHelper().getReadOnlySession();
>          try {
>              assertTrue(ss.nodeExists("/test"));
>          } finally {
>              ss.logout();
>          }
>      }
> 
> do you use specific node types to create your nodes?
> are your nodes referenceable? (there were bugs with ref.
> nodes that i fixed just recently)...
> 
> how is the server side config of your davex repo? specially
> the security config... do you use the trivial configuration
> that allow any non-anonymous user to write?
> 
> did you check the log files? any entry that would allow to
> get some more information?
> 
> regards
> angela
> 
> 
> 
> Niu, Xuetao wrote:
>> Hi Angela,
>>
>> - The getRootNode() returns "/" of the default workspace
>> - The getRtdeRootNode() returns "/rtde:root" of the default workspace
>> - The addNode(root, RTDE_ROOT_NAME) adds "rtde:root" under the "/"
> node
>> of the default workspace.
>>
>> To get a node from the default workspace, I used this:
>> Session.getNode(path)
>>
>> To acquire a session, I used this: return
>>
>
JcrUtils.getRepository("http://localhost:8080/jackrabbit-webapp-2.0.0/se
>> rver").login(new SimpleCredentials("", new char[0]), null);
>>
>> Let me know if you need more info.
>>
>> Many Thanks!
>>
>> Xuetao
>>
>>
>> hi xuetao
>>
>> and what exactly does getRtdeRootNode(s) and getRootNode(s)
>> and addNode(root, RTDE_ROOT_NAME)?
>>
>> please try to narrow down the problem so we can see what
>> you are doing... otherwise it's not possible to help you.
>> at least not for me.
>>
>> thanks
>> angela
>>
>>> To explain what I did, I just called one method below and the 2nd
>>> "save()" gives the exception I pasted beneath:
>>>
>>>  
>>>
>>>       public static synchronized void
>> createRepositoryStructure(Session
>>> s, boolean removeExisting) {
>>>
>>>  
>>>
>>>             try {
>>>
>>>                   getRootNode(s).addMixin(MIXIN_LOCKABLE);
>>>
>>>                   s.save();
>>>
>>>             } catch (RepositoryException e) {
>>>
>>>                   throw e;
>>>
>>>             }
>>>
>>>  
>>>
>>>             try {
>>>
>>>                   Node node = getRtdeRootNode(s);
>>>
>>>                   if (node != null) {
>>>
>>>                         if (removeExisting) {
>>>
>>>                               node.remove();
>>>
>>>                               s.save();
>>>
>>>                         } else {
>>>
>>>                               return;
>>>
>>>                         }
>>>
>>>                   }
>>>
>>>                   Node root = getRootNode(s);
>>>
>>>                   Node rtdeRoot = addNode(root, RTDE_ROOT_NAME);
>>>
>>>                   addNode(rtdeRoot, TENANTS_ROOT_NAME);
>>>
>>>  
>>>
>>>                   // the following save action produced the
exception
>>>
>>>  
>>>
>>>                   s.save();
>>>
>>>  
>>>
>>>             } catch (RepositoryException e) {
>>>
>>>                   throw new e;
>>>
>>>             }
>>>
>>>  
>>>
>>>       }
>>>
>>>  
>>>
>>>  
>>>
>>> I am using DavEx to remotely connecting to a repository at
>>> http://localhost:8080/jackrabbit-webapp-2.0.0/server which works in
>> web
>>> browser but not with JCR API
>>>
>>>  
>>>
>>> When I call Session.save(), I got the "Bad Request" exception, but
if
>> I
>>> use a local repository impl, like TransientRepository, everything
>> works
>>> fine. Could you guys help me out?
>>>
>>>  
>>>
>>> Caused by: javax.jcr.RepositoryException: Bad Request
>>>
>>>                 at
>>>
>
org.apache.jackrabbit.spi2dav.ExceptionConverter.generate(ExceptionConve
>>> rter.java:113)
>>>
>>>                 at
>>>
>
org.apache.jackrabbit.spi2dav.ExceptionConverter.generate(ExceptionConve
>>> rter.java:49)
>>>
>>>                 at
>>>
>
org.apache.jackrabbit.spi2davex.RepositoryServiceImpl$BatchImpl.start(Re
>>> positoryServiceImpl.java:457)
>>>
>>>                 at
>>>
>
org.apache.jackrabbit.spi2davex.RepositoryServiceImpl$BatchImpl.access$2
>>> 00(RepositoryServiceImpl.java:399)
>>>
>>>                 at
>>>
>
org.apache.jackrabbit.spi2davex.RepositoryServiceImpl.submit(RepositoryS
>>> erviceImpl.java:304)
>>>
>>>                 at
>>>
>
org.apache.jackrabbit.jcr2spi.WorkspaceManager$OperationVisitorImpl.exec
>>> ute(WorkspaceManager.java:830)
>>>
>>>                 at
>>>
>
org.apache.jackrabbit.jcr2spi.WorkspaceManager$OperationVisitorImpl.acce
>>> ss$500(WorkspaceManager.java:797)
>>>
>>>                 at
>>>
>
org.apache.jackrabbit.jcr2spi.WorkspaceManager.execute(WorkspaceManager.
>>> java:594)
>>>
>>>                 at
>>>
>
org.apache.jackrabbit.jcr2spi.state.SessionItemStateManager.save(Session
>>> ItemStateManager.java:139)
>>>
>>>                 at
>>> org.apache.jackrabbit.jcr2spi.ItemImpl.save(ItemImpl.java:246)
>>>
>>>                 at
>>> org.apache.jackrabbit.jcr2spi.SessionImpl.save(SessionImpl.java:328)
>>>
>>>                 at
>>>
>
com.fiserv.repository.jcr.JCRUtils.createRepositoryStructure(JCRUtils.ja
>>> va:196)
>>>
>>>                 ... 51 more
>>>
>>> Caused by: org.apache.jackrabbit.webdav.DavException: Bad Request
>>>
>>>                 at
>>>
>
org.apache.jackrabbit.webdav.client.methods.DavMethodBase.getResponseExc
>>> eption(DavMethodBase.java:172)
>>>
>>>                 at
>>>
>
org.apache.jackrabbit.webdav.client.methods.DavMethodBase.checkSuccess(D
>>> avMethodBase.java:181)
>>>
>>>                 at
>>>
>
org.apache.jackrabbit.spi2davex.RepositoryServiceImpl$BatchImpl.start(Re
>>> positoryServiceImpl.java:453)
>>>
>>>                 ... 60 more
>>>
>>>  
>>>
>>> Thanks in advance!
>>>
>>> Xuetao
>>>
>>>  
>>>
>>>
>>
> 


Mime
View raw message