私はこのサービスを持ってRESTfulなWebサービス のApache CXF設定アップロードサイズ
を作るためにCXF 2.4.4を使用しています。添付ファイルのサイズを制限したいと思います。私はthis documentationを見つけ、HTTP 500 status
を返す以外は作業を行います。
他のステータス(HTTP 413 status
のようなもの)を返す方法を知りたい、あるいはこの例外をキャッチして再投函する方法を知りたいのですが。
EDIT
私はこの
@Service("remote")
@InInterceptors(interceptors = {"myCompany.AttachmentInInterceptor"})
public class RemoteImpl implements Remote {
...
}
とインターセプタのように、インターセプタを介してこれを行うには、管理:
public class AttachmentInInterceptor extends AbstractPhaseInterceptor<Message> {
public AttachmentInInterceptor() {
super(Phase.RECEIVE);
}
public void handleMessage(Message message) {
String contentType = (String) message.get(Message.CONTENT_TYPE);
Map<String, List<String>> headers;
if (contentType != null && contentType.toLowerCase().indexOf("multipart/form-data") >= 0) {
AttachmentDeserializer ad = new AttachmentDeserializer(message);
headers = (Map<String, List<String>>) message.get(Message.PROTOCOL_HEADERS);
String len = headers.get("Content-Length").toString();
len = len.replaceAll("\\[", "");
len = len.replaceAll("\\]", "");
Long length = Long.valueOf(len);
if (length > 100000000) {
throw new Fault(new CustomException("Archivo grande", ErrorCode.ERROR.getCode()));
}
try {
ad.initializeAttachments();
} catch (IOException e) {
throw new Fault(e);
}
}
}
@Override
public void handleFault(Message message) {
}
}
が、私はまだ必要な応答(HTTP 413 status
を送信することはできません。 )
私は事前に助けていただきありがとうございます
こんにちは、感謝を返します。私はあなたが言ったことを試みたが、私はクライアントからhttpリクエストを実行するとまだ500になる。何が間違っているのかわからない –
@MHero:それは非常に奇妙です。多分、あなたはそれが動作するはずであると仮定してCXFに対するバグを起こさなければならないかもしれません(また、500への変換を引き起こしている別のフィルタを配置していないと仮定して、私は過去に同様にばかげたことをしています)... –