gpt4 book ai didi

rest - CXF 休息 : How can I retrieve the POJO object from the message in an interceptor before it gets marshal'd?

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

我们已经在 CXF 中实现了一个 REST API。我的目标是能够在 POJO 上定义自定义注释,并在它们被编码之前在 CXF 拦截器中处理它们。我相信除了在拦截器中检索实际对象之外,我拥有执行此操作所需的所有信息。我的代码如下所示:

  • 资源类
    @Path("/mypath")
    public class MyResource {

    @GET
    public MyObject getObject() {
    MyObject o = new MyObject();
    ...
    return o;
    }
    }
  • 我的对象
    public class MyObject {

    private String x;

    @MyAnnotation
    public String getX() {
    return x;
    }

    public String setX(x) {
    this.x = x;
    }
    }
  • 拦截器
    public class MyInterceptor extends AbstractPhaseInterceptor<Message> {

    public VersionOutInterceptor() {
    super(Phase.POST_LOGICAL);
    }

    public final void handleMessage(Message message) {
    // 1. STUCK -- get object from the message
    // 2. parse annotations and manipulate the object
    // 3. put the object back on the message for serialization
    }
    }

  • 如何从消息中获取对象,根据注释对其进行操作,然后将其放回消息中?

    最佳答案

    我有类似的要求,这就是我可以做到的

    对于 In Interceptor 我使用了 PRE_INVOKE 相位和输出拦截器 PRE_LOGICAL 阶段。
    此代码仅显示日志记录,但如果用例需要,您可以更改对象。

    下面的代码将获取您正在寻找的对象

    @Override
    public void handleMessage(Message message) throws Fault {
    MessageContentsList objs = MessageContentsList.getContentsList(message);
    if (objs != null && objs.size() == 1) {
    Object responseObj = objs.get(0);
    DomainPOJO do= (DomainPOJO)responseObj;
    _logger.info(do.toString());
    }
    }

    关于rest - CXF 休息 : How can I retrieve the POJO object from the message in an interceptor before it gets marshal'd?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11620622/

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