Gọi getMetaData() trên một thành phần trong Coldfusion 10 dường như ngẫu nhiên ném NullPointerException bên trong. Mặc dù ngoại lệ này không được phơi bày cũng như không ảnh hưởng đến yêu cầu thực tế (và do đó không quan trọng đối với các ứng dụng của chúng tôi), nó vẫn lấp đầy nhanh chóng các tệp exception.log
.getMetaData() ném nội bộ NullPointerException
Tôi nhận thấy điều này có thể liên quan đến bộ nhớ đệm đường dẫn của ColdFusion vì tôi nhận các mục nhập NullPointerException này trên máy chủ sản xuất. Tôi cũng nhận thấy rằng ngoại lệ này chỉ được ném một lần cho mỗi thành phần mà tôi sử dụng getMetaData() trên, mặc dù không phải mọi cuộc gọi đầu tiên dường như kích hoạt nó.
Để làm rõ: getMetaData() hoạt động hoàn toàn tốt, nhưng đôi khi nó ghi nhật ký NullPointerException trong tệp exception.log của ColdFusion.
Có ai biết giải pháp (ngoài việc tắt bộ nhớ đệm hoặc tệp exception.log) không?
Bối cảnh: Tôi sử dụng getMetaData() để xác định các thành phần, đặc biệt hữu ích khi sử dụng <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)
Vì CF là nguồn đóng, sẽ rất khó để có được câu trả lời cho lý do tại sao điều đó xảy ra với bất kỳ ai khác ngoài nhóm kỹ thuật CF. Tôi sẽ gửi báo cáo lỗi tại đây: https://bugbase.adobe.com/. Trong thời gian đó, bạn có thể sử dụng IsInstanceOf() để xác định loại thành phần không? https://wikidocs.adobe.com/wiki/display/coldfusionen/IsInstanceOf –
Thật không may isInstanceOf() yêu cầu đường dẫn đủ điều kiện. Vì tôi sử dụng ánh xạ động trên các môi trường máy chủ khác nhau, tôi không biết đường dẫn chính xác. Phản ánh thông qua getMetaData() dường như là cách tốt nhất để làm điều đó. Vâng, tôi không đoán được. – Alex
Trừ khi bạn nhìn thấy một vấn đề hiệu suất cụ thể với các lỗi được ném tôi sẽ gắn bó với những gì bạn có. Trong trường hợp của bạn, nó có thể là giải pháp tốt nhất.Việc đăng nhập thêm có lẽ chỉ là một lỗi mà Adobe cần khắc phục. Nếu câu hỏi đăng nhập sử dụng Log4J, bạn có thể tìm thấy các tệp thuộc tính và tắt ghi nhật ký cho gói đó. Log4J là một thư viện ghi nhật ký Java phổ biến. http://stackoverflow.com/questions/4972954/how-to-disable-loggers-of-a-class-or-of-whole-package –