我们已将所有自定义标签文件从主应用程序移至新项目,并计划在不同的上下文中重用它们/简化开发过程。
我们已经将所有文件打包在 META-INF / tags 类中。为了访问标签,我们编写了一个TLD文件,其中引用了所有标签。 标签与原始标签没有变化。
所有JSP页面均已更新,可以使用URI或tagdir来引用我们的自定义标记文件。
一切正常,大部分时间。大多数时候,因为有时对于在其他JSP页面中广泛使用的标记,呈现步骤会放弃“ ClassDefNotFound”异常。问题在于该类应该存在,并且确实存在,因为在同一页面上呈现了相同的标记。
工作页面与非工作页面之间的唯一区别是最后一个页面使用AJAX调用加载所有这些元素。
是否存在某种可能导致这种奇怪行为的缓存?我们正在使用jboss 4.2.3。
答案 0 :(得分:0)
几个月后,我发现有罪。
这是在运行应用程序的服务器中定义 JspServlet 的方式。
实际上,更改 development 的值(默认为TRUE)或减少更改检查(因此在重新编译标签之间留出更多时间)以增加 modificationTestInterval 的值strong>(默认值为4)使您有更多时间来编译相同的标记,并且整个页面都会生成。
问题在于只有一些页面多次使用相同的标签(最多20个或更多)。使用新值,错误消失了,因为现在servlet总是有足够的时间来生成整个页面而无需触发新的编译。
无论如何,为什么对于嵌入的标签(在Web应用程序内部定义)有效,而对外部化的标签(在另一个JAR中定义)失败,为什么仍然未知。