在ColdFusion 10中的组件上调用getMetaData()似乎会随机引发内部NullPointerException。尽管此异常既不暴露也不影响实际请求(因此对我们的应用程序本身并不重要),但它仍会迅速填充exception.log
文件。
我注意到这可能与ColdFusion的路径缓存有关,因为我仅在生产服务器上获得了这些NullPointerException条目。我还注意到,在我使用getMetaData()的每个组件上仅抛出一次此异常,尽管并非每个首次调用似乎都会触发该异常。
为了澄清起见:getMetaData()可以很好地工作,但有时会在ColdFusion的exception.log文件中记录一个NullPointerException。
是否有人知道解决方案(除了禁用缓存或exception.log文件之外)?
背景:
我使用getMetaData()来识别组件,当使用<cfinterface>
时尤其有用。
java.lang.NullPointerException
at coldfusion.util.Utils.getServletPath(Utils.java:100)
at coldfusion.util.Utils.getServletPath(Utils.java:90)
at coldfusion.util.Utils.getBaseTemplatePath(Utils.java:419)
at coldfusion.runtime.TemplateProxyFactory.getTemplateFileHelper(TemplateProxyFactory.java:1567)
at coldfusion.runtime.MetadataUtils.getComponentMetadata(MetadataUtils.java:112)
at coldfusion.runtime.CfJspPage.GetComponentMetadata(CfJspPage.java:2744)
at coldfusion.runtime.TemplateProxy.getRuntimeComponentMetadata(TemplateProxy.java:1940)
at coldfusion.runtime.TemplateProxy.getRuntimeMetadata(TemplateProxy.java:1801)
at coldfusion.runtime.MetadataUtils.getMetaData(MetadataUtils.java:54)
at coldfusion.runtime.CfJspPage.GetMetadata(CfJspPage.java:2717)
最佳答案
您可以在try / catch块中环绕getMetaData(),并且在catch块内部将其为空,而不是标准e.printStackTrace(),因为这对实际应用程序的运行方式并不重要。