gpt4 book ai didi

java - CXF中 "org.apache.cxf.resource.method"的意义是什么?

转载 作者:行者123 更新时间:2023-12-01 04:52:40 26 4
gpt4 key购买 nike

我很惊讶没有在 Google 上获得任何有关“org.apache.cxf.resource.method”的信息。尽管如此,有很多拦截器使用它(在我给出的代码中)。

例如(在自定义 FaultOutInterceptor 中):

private boolean isServiceResponseRequested(Message message) {
Method method = (Method) message.getExchange().getInMessage()
.get("org.apache.cxf.resource.method");
if (method != null) {
Class c = method.getReturnType();
if (c != null) {
if (c.getSimpleName().equals(
ServiceResponse.class.getSimpleName())) {
return true;
}
}
}
return false;
}

AbstractAuthorizingInInterceptor也有对其的引用。

有人愿意解释一下“org.apache.cxf.resource.method”的重要性以及如何以及在何处“设置”吗?

编辑:作为实现所需目标的黑客,这就是我所做的:

我为Phase.PRE_STREAM编写了一个inInterceptor,在jaxrs:inInterceptors

中配置
handleMessage(Message message) 
{
Message inMessage = message.getExchange().getInMessage();
Method appMethod = //Logic to determine the method based on the request Url
inMessage.put("org.apache.cxf.resource.method", appMethod);
}

虽然,它给了我想要的结果,但这完全是一个黑客,看起来并不正确。有意见吗?

最佳答案

org.apache.cxf.resource.method CXF 选择的 Java 方法来处理传入请求。这是由 CXF 在 Pre-Stream 阶段自动完成的,通常是通过检查 jaxrs:serviceBeans 的类和方法上存在的注释,特别是 @Path、@[HTTPMethod]、@Produces、@Consumes 等注释。

如果您需要对 CXF 选择哪种方法进行更精细的控制,那么实现 ResourceComparitor 可能更合适。 ,而不是实现拦截器来尝试从消息中解析此数据。

关于java - CXF中 "org.apache.cxf.resource.method"的意义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14712705/

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