一个NestedServletException的起源是什么?

5

最近我一直在使用Hybris平台,今天在Tomcat上遇到了一个异常。问题是我似乎找不到任何有价值的信息来解释什么是NestedServletException或为什么会抛出它。目前我的首要任务是理解这个概念,然后解决它。

如果有用的话,我会附上StackTrace:

Estado HTTP 500 - Error while processing internal filterchain. Exception occurred at chain position: 5 of 15. Current filter: 'es.logista.storefront.filters.cms.CMSSiteFilter@539dc64a'!; nested exception is java.lang.NullPointerException

type Informe de Excepción

mensaje Error while processing internal filterchain. Exception occurred at chain position: 5 of 15. Current filter: 'es.logista.storefront.filters.cms.CMSSiteFilter@539dc64a'!; nested exception is java.lang.NullPointerException

descripción El servidor encontró un error interno que hizo que no pudiera rellenar este requerimiento.

excepción

org.springframework.web.util.NestedServletException: Error while processing internal filterchain. Exception occurred at chain position: 5 of 15. Current filter: 'es.logista.storefront.filters.cms.CMSSiteFilter@539dc64a'!; nested exception is java.lang.NullPointerException
    de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:234)
    es.logista.storefront.filters.RequestLoggerFilter.doFilter(RequestLoggerFilter.java:89)
    de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
    es.logista.storefront.filters.AcceleratorAddOnFilter.doFilter(AcceleratorAddOnFilter.java:92)
    de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
    de.hybris.platform.servicelayer.web.SessionFilter.doFilter(SessionFilter.java:73)
    de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
    de.hybris.platform.servicelayer.web.Log4JFilter.doFilter(Log4JFilter.java:47)
    de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
    de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain.doFilterInternal(AbstractPlatformFilterChain.java:156)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    es.logista.storefront.filters.AcceleratorAddOnFilter.doFilter(AcceleratorAddOnFilter.java:92)
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
    de.hybris.platform.servicelayer.web.XSSFilter.doFilter(XSSFilter.java:230)

causa raíz

java.lang.NullPointerException
    java.util.concurrent.ConcurrentHashMap.get(Unknown Source)
    de.hybris.platform.persistence.property.PersistenceInfoCache.getCachedExternalTableTypes(PersistenceInfoCache.java:70)
    de.hybris.platform.persistence.property.DBPersistenceManager.getExternalTableTypes(DBPersistenceManager.java:883)
    de.hybris.platform.persistence.flexiblesearch.typecache.impl.DefaultFlexibleSearchTypeCacheProvider.getExternalTableTypes(DefaultFlexibleSearchTypeCacheProvider.java:137)
    de.hybris.platform.persistence.flexiblesearch.ParsedType.<init>(ParsedType.java:93)
    de.hybris.platform.persistence.flexiblesearch.ParsedType.<init>(ParsedType.java:78)
    de.hybris.platform.persistence.flexiblesearch.FromClause.createSingleType(FromClause.java:89)
    de.hybris.platform.persistence.flexiblesearch.FromClause.translateNested(FromClause.java:73)
    de.hybris.platform.persistence.flexiblesearch.ParsedText$2.translate(ParsedText.java:269)
    de.hybris.platform.persistence.flexiblesearch.FlexibleSearchTools.replace(FlexibleSearchTools.java:310)
    de.hybris.platform.persistence.flexiblesearch.ParsedText.translate(ParsedText.java:263)
    de.hybris.platform.persistence.flexiblesearch.FromClause.translate(FromClause.java:48)
    de.hybris.platform.persistence.flexiblesearch.ParsedQuery.translate(ParsedQuery.java:401)
    de.hybris.platform.persistence.flexiblesearch.ParsedQuery.getTranslatedQuery(ParsedQuery.java:181)
    de.hybris.platform.persistence.flexiblesearch.QueryParser.translateQuery(QueryParser.java:229)
    de.hybris.platform.jalo.flexiblesearch.FlexibleSearch.translate(FlexibleSearch.java:2007)
    de.hybris.platform.jalo.flexiblesearch.FlexibleSearch.search(FlexibleSearch.java:1412)
    de.hybris.platform.jalo.flexiblesearch.FlexibleSearch.search(FlexibleSearch.java:1628)
    de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService$2.execute(DefaultFlexibleSearchService.java:374)
    de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService$2.execute(DefaultFlexibleSearchService.java:1)
    de.hybris.platform.servicelayer.session.impl.DefaultSessionService.executeInLocalView(DefaultSessionService.java:91)
    de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService.getJaloResult(DefaultFlexibleSearchService.java:363)
    de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService.search(DefaultFlexibleSearchService.java:164)
    de.hybris.platform.servicelayer.internal.dao.AbstractItemDao.search(AbstractItemDao.java:70)
    de.hybris.platform.cms2.servicelayer.daos.impl.DefaultCMSSiteDao.findAllCMSSites(DefaultCMSSiteDao.java:42)
    de.hybris.platform.cms2.servicelayer.services.impl.DefaultCMSSiteService.getSites(DefaultCMSSiteService.java:317)
    de.hybris.platform.cms2.servicelayer.services.impl.DefaultCMSSiteService.getSiteForURL(DefaultCMSSiteService.java:269)
    de.hybris.platform.acceleratorcms.context.impl.DefaultContextInformationLoader.initializeSiteFromRequest(DefaultContextInformationLoader.java:98)
    es.logista.storefront.filters.cms.CMSSiteFilter.processNormalRequest(CMSSiteFilter.java:161)
    es.logista.storefront.filters.cms.CMSSiteFilter.doFilterInternal(CMSSiteFilter.java:97)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
    es.logista.storefront.filters.RequestLoggerFilter.doFilter(RequestLoggerFilter.java:89)
    de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
    es.logista.storefront.filters.AcceleratorAddOnFilter.doFilter(AcceleratorAddOnFilter.java:92)
    de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
    de.hybris.platform.servicelayer.web.SessionFilter.doFilter(SessionFilter.java:73)
    de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
    de.hybris.platform.servicelayer.web.Log4JFilter.doFilter(Log4JFilter.java:47)
    de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:226)
    de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain.doFilterInternal(AbstractPlatformFilterChain.java:156)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    es.logista.storefront.filters.AcceleratorAddOnFilter.doFilter(AcceleratorAddOnFilter.java:92)
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
    de.hybris.platform.servicelayer.web.XSSFilter.doFilter(XSSFilter.java:230)

nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/7.0.59.

根本原因是您收到了一个“NullPointerException”。这个异常可能在您的链中的某个地方被包装在“NestedServletException”中。 - M. Deinum
你需要运行系统更新,因为你修改了类型系统但是数据库不知道这个变化,所以你从一个灵活的搜索查询中得到了一个空指针。 - Juan
@Juan,我们最终发现我们需要初始化系统...我们太蠢了,但还是感谢你的提示! :) - Javier García Manzano
1个回答

15
嵌套异常是指包含在另一个异常中的异常。人们会这样做出多种原因(其中一些在此提到)。
正如您在堆栈跟踪中看到的,根异常是一个nullpointer异常
所以基本上你的NestedServletException只是一个NullpointerException,在某个时候被捕获并再次抛出,但被包装在一个ServletException中。

1
谢谢@Seth!以那种方式看,似乎非常明显,但我没想到 :) - Javier García Manzano

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接