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