Jackrabbit 2.6.3 と commons httpclient 3 での作業を開始。
サーバーにファイルをアップロードするための単純な webDav クライアントを作成し、それを jackrabbit のスタンドアロン サーバーの既定のリポジトリに対してテストしたいと考えています。単純に、ファイルをデフォルトのリポジトリに入れたいだけです。
httpclient が接続し、メソッドがファイルのバッファリングを開始します。問題は、http メソッドをレポジトリに正しく配置するために、どの URL を指す必要があるかがうまくいかないように見えることです。スタンドアロン サーバーは以下で実行されています。
http://localhost:8080.
405 PUT がサポートされていないか、404 または 403、またはさらに奇妙な「リポジトリ '/' が '/default' で始まらない」というメッセージが表示されるようです。ブラウザを次の場所に向けます:
http://localhost:8080/repository/default/
簡単に言えば、私の質問は、PutMethod でこれを行うための URL は何ですか? それが聞こえるのと同じくらい初歩的です。
私が作成したクラス、特に現在使用しているメソッドの切り捨てられたコードをいくつか含めました。私のアプローチが正しいことを示すにはそれで十分だと思います。
public void insertFile(byte[] content, String id) throws Exception {
PutMethod httpMethod = new PutMethod("http://localhost:8080/repository/default/");
InputStream is = new ByteArrayInputStream(content);
FileMetaData meta = new FileMetaData();
meta.address = destUri;
meta.id = id;
meta.mimeType = Files.probeContentType(Paths.get(meta.address));
RequestEntity requestEntity = new InputStreamRequestEntity(is, meta.mimeType);
httpMethod.setRequestEntity(requestEntity);
try {
int statusCode = client.executeMethod(httpMethod);
if (statusCode != HttpStatus.SC_OK) System.err.println("Method failed: " + httpMethod.getStatusLine());
byte[] responseBody = httpMethod.getResponseBody();
System.out.println(new String(responseBody));
} catch (HttpException e) {
System.err.println("Fatal protocol violation: " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println("Fatal transport error: " + e.getMessage());
e.printStackTrace();
} finally {
httpMethod.releaseConnection();
}
}
簡単な答えだと思いますが、ドキュメントをトロールしても、これに関連するリソースやチュートリアルは表示されないようです。どんな助けでも感謝します。