首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AbstractEndpointExceptionResolver,cglib代理,空字段

AbstractEndpointExceptionResolver,cglib代理,空字段
EN

Stack Overflow用户
提问于 2016-06-01 19:21:07
回答 1查看 274关注 0票数 0

我有WebService。通过扩展SoapFaultMappingExceptionResolver,我编写了自己的异常解析器。

每当我尝试抛出异常时,我都会得到NPE:

代码语言:javascript
复制
 java.lang.NullPointerException
   at    org.springframework.ws.server.endpoint.AbstractEndpointExceptionResolver.resolveException(AbstractEndpointExceptionResolver.java:104)

这是在网上发生的:

代码语言:javascript
复制
if (logger.isDebugEnabled()) {
            logger.debug("Resolving exception from endpoint [" + endpoint + "]: " + ex);
        }

因为记录器为空。据我在调试过程中所理解,这是因为我的扩展ExceptionResolver正在被CGLIB代理。CGLIB代理里面有我的解析器的副本,但是它也包含对我实际的(初始化的)解析器的引用,它看起来像这样:

代码语言:javascript
复制
CGLIB$CALLBACK_0 = {org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor@19853} 
CGLIB$CALLBACK_1 = {org.springframework.aop.framework.CglibAopProxy$StaticUnadvisedInterceptor@19854} 

如果我进入这些回调targetSource-target,我可以看到带有初始化属性的解析器。

那么我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2016-06-01 20:18:29

好吧,我找到了解决这个问题的小方法。我根本不想禁用代理,因为在某些情况下我需要它。所以,基本上,你可以在你的配置中:

代码语言:javascript
复制
<aop:aspectj-autoproxy proxy-target-class="true" />

启用全局代理。为了修复我的异常解析器,我将其添加到异常列表中,如下所示:

代码语言:javascript
复制
<aop:aspectj-autoproxy proxy-target-class="false">
    <aop:include name="myExceptionResolver" />
</aop:aspectj-autoproxy>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37567214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档