This is the zipped log file. Hope the mail-server won't block it...
-----Original Message----- From: Niu, Xuetao Sent: Thursday, March 18, 2010 1:36 PM To: users@jackrabbit.apache.org Subject: RE: "Bad Request" exception using DavEx Hi 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:anch...@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 >> >> >> >> > >