我在开发 WebSphere 7 应用程序时遇到问题。这是设置。我有一个基于 Maven 的项目,由多个模块组成,是在 RAD 7.5.5.2 中开发的
其中一个模块是一个普通的 Web 应用程序(war),它使用 JSP 并依赖于 taglib。
Taglib 本身是另一个模块 - 纯 Java 项目,只有两个文件,即
META-INF/tags
下的 taglib 描述符和标记文件。
当我构建 taglib jar 并将其手动复制到 Web 应用程序的
WEB-INF/lib
时,标签会被正确选择并呈现在页面上。
当我通过 RAD 部署项目时 - 未拾取 taglib。错误说:
com.ibm.ws.jsp.JspCoreException:JSPG0047E:无法找到 uri 的标记库http://juriy.com/myproject/jsp/my-taglib
打包为 JAR 并添加到
WEB-INF/lib
的相同标签库可以完美运行。
当我打开 WebSphere 管理控制台时,我看到 taglib 项目已被 WebSphere 识别。但是它没有打包为 JAR,而是将项目的路径添加到 webapp 类路径中。在
Troublehooting -> Class Loader Viewer -> Module - com.ibm.ws.classloader.CompoundClassLoader
我看到我的标签库的条目:
file:/D:/Data/MyProject/UIComponents/target/classes
换句话说,WS 似乎并不关心在开发周期中将项目打包为 JAR,然后它就不会被拾取为 taglib。
有没有办法告诉 RAD(或 WebSphere)“请将此项目打包为 JAR,然后再将其添加到类路径”?任何使此设置工作的替代方法也值得赞赏。我无法在开发过程中一直手动复制 jar - 我们都希望事情能够自动工作。
免责声明:我不是WebSphere专家(只使用了这个野兽一周),我可能错过了一些明显的设置。请提出任何可以解决此问题的建议。
据我所知RAD是在eclipse平台上制作的。我知道使用 Maven,您可以创建构建 jar 文件并放入本地存储库的工件。其他模块可以通过
M2_REPO
变量引用该 jar。然后你坚持使用maven,并且必须使用maven插件来帮助将maven集成到eclipse中。但请考虑使用 project builder 和 ant 配置项目的选项。然后,您可以在构建时轻松运行 ant 目标,以便在部署之前制作 jar。这种技术不仅在 eclipse IDE 中使用,在其他 IDE 中也使用。在项目构建之前或之后运行 ant 目标是非常宝贵的功能。
将 taglib 打包为 Maven jar 并将其安装到本地 .m2 存储库。然后在主项目的 pom 中引用依赖项。它将被拉入包装。如果它解析为本地开发,可能是因为工作区解析已打开。
此外,将 jar 添加到基于 Maven 的项目中的 WEB-INF/lib 并不是最佳实践,因为您已经规避了 Maven 的主要目的,即控制构建项目所需的依赖项。
您是否尝试将 manifest 添加到您的 WAR 中?