我需要获取从我的服务返回的响应Java对象,以便对数据进行一些处理。我不想编写代码来处理ServiceImpl类本身的数据,因为我想保持它的配置。我写过了拦截器。 根据这个question的答案,POJO对象应该在out拦截器中可用,但是我看到该对象实际上是一个响应的中间类。我得到一个ClassCastException与上面链接中提到的代码。
我错过了什么吗?可以在Out拦截器中使用Service类返回的相同POJO对象吗?
欢迎任何其他方法来实现这一目标。
MyOutInterceptor.java:
public class MyOutInterceptor extends AbstractPhaseInterceptor<Message> {
public MyOutInterceptor() {
super(Phase.MARSHAL); // Tried Phase.PRE_LOGICAL as well
}
public void handleMessage(Message message) throws Fault {
MessageContentsList objs = MessageContentsList.getContentsList(message);
if (objs != null && objs.size() == 1) {
Object responseObj = objs.get(0);
MyData data = (MyData) responseObj; // fails here with ClassCastException
...
}
的applicationContext.xml
<bean class="com.xyz.interceptor.MyOutInterceptor" id="outInterceptor" />
<jaxws:endpoint id="dataService" implementor="#masterDataService" address="/MasterDataService">
...
<jaxws:outInterceptors>
<ref bean="outInterceptor" />
</jaxws:outInterceptors>
</jaxws:endpoint>
答案 0 :(得分:1)
预逻辑阶段将起作用,但您需要执行:
addBefore(WrapperClassOutInterceptor.class.getName());
确保它在拦截器之前运行。