0

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();
    }

}

簡単な答えだと思いますが、ドキュメントをトロールしても、これに関連するリソースやチュートリアルは表示されないようです。どんな助けでも感謝します。

4

1 に答える 1