CXF REST:如何在截取程序中的消息被封送之前从消息中检索POJO对象;D
我们已经在CXF中实现了RESTAPI。我的目标是能够在POJO上定义自定义注释,并在它们被封送之前在CXF拦截器中处理它们。我相信我有所有的信息,我需要能够做到这一点,除了检索拦截器中的实际对象。我的代码如下所示:CXF REST:如何在截取程序中的消息被封送之前从消息中检索POJO对象;D,rest,cxf,message,interceptor,pojo,Rest,Cxf,Message,Interceptor,Pojo,我们已经在CXF中实现了RESTAPI。我的目标是能够在POJO上定义自定义注释,并在它们被封送之前在CXF拦截器中处理它们。我相信我有所有的信息,我需要能够做到这一点,除了检索拦截器中的实际对象。我的代码如下所示: 资源类 @Path("/mypath") public class MyResource { @GET public MyObject getObject() { MyObject o = new MyObject(); ...
@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
}
}
公共类MyInterceptor扩展了AbstractPhaseInterceptor{
公共版本计算接收器(){
超级(阶段后逻辑);
}
公共最终无效句柄消息(消息消息){
//1.卡住--从消息中获取对象
//2.解析注释并操作对象
//3.将对象放回消息中进行序列化
}
}
如何从消息中获取对象,根据注释对其进行操作,然后将其放回消息中?我有类似的要求,这就是我可以做到的 对于In-Interceptor,我使用了PRE\u INVOKE阶段,对于Out-Interceptor,我使用了PRE\u 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());
}
}
在这里喝一杯: