gpt4 book ai didi

java - Apache CXF 设置上传大小

转载 作者:行者123 更新时间:2023-11-30 04:56:31 25 4
gpt4 key购买 nike

我正在使用 cxf 2.4.4 来制作 RESTful Web 服务

我有这项服务:

@WebService
public interface Remote {
@POST
@Path("/create")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_XML)
public CustomXML makerService();
}

消耗MULTIPART_FORM_DATA

我想限制附件大小。我发现this documentation ,它确实完成了工作,只是它返回 HTTP 500 状态

我想知道如何返回其他状态(HTTP 413 状态 就像预期的那样)或者捕获此异常并重新抛出它。

编辑
我设法通过拦截器做到这一点,就像这样

@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 状态)

我提前感谢任何帮助

最佳答案

检查 CXF source code表示通过抛出 javax.ws.rs.WebApplicationException 返回非 500 个结果;它是一个 RuntimeException 子类,因此您不需要声明它,并且它有一个接受响应代码的单参数构造函数(或者您可以构造一个完整的 Response) ,或者任何你真正喜欢的东西)。

关于java - Apache CXF 设置上传大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8362289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com