JBoss中没有堆栈跟踪的异常

时间:2014-07-31 15:51:20

标签: jsf jsf-2 jboss stack-trace

我在控制器方法中抛出了一个NPE:

@ManagedBean
@RequestScoped
public class Controller {

    ...

    @PostConstruct
    @Override
    protected void init() {
        throw new NullPointerException();
    }

    ...

}

和jboss日志包含以下条目:

19:34:53,045 SEVERE [javax.enterprise.resource.webcontainer.jsf.context](http- / 127.0.0.1:8080-1)java.lang.IllegalStateException:JBAS011048:构建组件实例失败

问题是没有堆栈跟踪。我已经做了很多谷歌搜索并遇到了几个关于同一问题的帖子,但是那些人对解决异常的根本原因很感兴趣,他们设法或多或少地做到了,但我对堆栈跟踪感兴趣本身。我已经尝试过自定义异常处理程序(http://wmarkito.wordpress.com/2012/04/05/adding-global-exception-handling-using-jsf-2-x-exceptionhandler/)和primefaces异常处理程序(http://www.primefaces.org/showcase-ext/views/ajaxErrorHandler.jsf;jsessionid=1gvidy1bnjzr8jggq89l59gcs)但没有成功。

如果控制器方法出现异常以及如何处理,我会很感激为什么没有堆栈跟踪的想法。

1 个答案:

答案 0 :(得分:0)

由于以下原因,未正确记录控制器的@PostConstruct方法中引发的异常: 在org.jboss.as.ee.component.BasicComponent类中,每个异常都被捕获并用IllegalStateException包装:

try {
    componentInstancePostConstructInterceptor.processInvocation(interceptorContext);
} catch (Exception e) {
    throw MESSAGES.componentConstructionFailure(e);
}

并且在jboss内部深处,有一个类com.sun.faces.context.PartialViewContextImpl,它在组件构造期间采用controll,具有以下代码:

try {
    // do the default behavior...
    comp.encodeAll(ctx);
}
catch (Exception ce) {
    if (LOGGER.isLoggable(Level.SEVERE)) {
    LOGGER.severe(ce.toString());
}

并非所有组件都受到影响