当前位置 : 主页 > 网络推广 > seo >

CXF REST:在获取编组之前,如何从拦截器中的消息中检索POJO对象?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我们在CXF中实现了一个REST API.我的目标是能够在POJO上定义自定义注释并在它们获得编组之前在CXF拦截器中处理它们.我相信除了检索拦截器中的实际对象之外,我还需要能够做到这一点的
我们在CXF中实现了一个REST API.我的目标是能够在POJO上定义自定义注释并在它们获得编组之前在CXF拦截器中处理它们.我相信除了检索拦截器中的实际对象之外,我还需要能够做到这一点的所有信息.我的代码看起来像这样:

>资源类

@Path("/mypath")
public class MyResource {

    @GET
    public MyObject getObject() {
       MyObject o = new MyObject();
       ...
       return o;
    }
}

> MyObject

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阶段和Out Interceptor 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());
  }
}
网友评论