私はKarafの中でホストされているRESTサービスを持っています。これはマルチパートリクエスト以外のすべてのリクエストでうまく機能しています。私はcom.sun.jersey
パッケージを使用しています。私はこれらのURLをHTTP経由でアクセスできるようにホストすることに成功しただけです。私はPOST内HttpServletRequest
を受け取り、それにgetParts()
メソッドを呼び出すしようとすると、私はエラーを取得するJAX-RS Multipart with com.sun.jersey
:
IllegalStateException: No multipart config for servlet
私は私のサーブレットに注釈をしないのですという私を発見したので、私私が使用しているサーブレットの実装にこれを追加しました。私はcom.sun.jersey.spi.container.servlet.ServletContainer
を拡張し、そのクラスにアノテーションを追加します。しかし、これは機能しません。
私は、エラーを再現HttpServlet
クラスの私自身の延長使用してみました:私はResourceConfig
に登録MultiPartFeature
クラスを作るorg.glassfish.jersey
パッケージを使用してのアプローチを見てきました
@MultipartConfig
public class MultipartServlet extends HttpServlet {
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
try {
final HttpServletRequest httpRequest = (HttpServletRequest)request;
final Collection<Part> parts = httpRequest.getParts();
System.out.println("There are " + parts.size() + " parts");
}
catch (Exception exception) {
System.out.println("MEGA FAIL");
System.out.println(exception.getMessage());
}
super.service(request, response);
}
}
を、しかし、私はこれらのパッケージをKaraf内のHTTP経由でアクセスできるようにはできませんでした(サービスはエラーなしで登録するように見えますが、すべてのリクエストは404応答を返します)。
ですべての部分にアクセスすることができますこの方法では、なぜあなたは、サーブレットでマルチパートを使用しようとしています。 Jersey 1.xのマルチパートサポートについては、[この記事](https://www.mkyong.com/webservices/jax-rs/file-upload-example-in-jersey/)を参照してください。 –
その記事では、マルチパート要求。私は、メソッド自体の本体内で未知数の部分を扱うことができる必要があります。そのため、私は 'HttpServletRequest'を使用しようとしていました。代わりにジャージーを使用してこれを達成する方法はありますか? –
@peeskillet Karafの内部でこれを実行していることを強調する価値がありますので、Karafと一緒にインストールされた 'HttpService'に対してこのサーブレットを登録しました。これは、RESTfulサービスをホストする唯一の方法でしたKarafはHTTP経由でアクセス可能でした(つまり、localhost:8181)。それに近づくより良い方法があれば、どんな方向にも感謝されます –