2013-03-13 60 views
4

我在开发我的WebSphere 7应用程序时遇到问题。以下是安装程序。我有一个基于maven的项目,包含RAD 7.5.5.2开发的多个模块。WebSphere + RAD + Taglib

其中一个模块是一个使用JSP并依赖于taglib的普通Web应用程序(war)。

Taglib本身就是另一个模块 - 只有两个文件的纯java项目,META-INF/tags下的taglib描述符和标记文件。

当我构建taglib jar并手动将其复制到Web应用程序的WEB-INF/lib中时,该标记将被正确拾取并呈现在页面上。

当我通过RAD部署项目 - taglib没有拿起。错误说:

``` 
com.ibm.ws.jsp.JspCoreException: JSPG0047E: Unable to locate tag library for 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 
``` 

我看到我的taglib的条目:

``` 
file:/D:/Data/MyProject/UIComponents/target/classes 
``` 

在它看起来像WS不小心打包项目作为在开发周期JAR,然后它不拿起换句话说作为taglib。

有没有办法告诉RAD(或WebSphere)“请将此项目打包为JAR,然后再将其添加到类路径中”?任何替代方式来使这个设置工作也表示赞赏。我无法在开发过程中一直手动复制jar - 我们都希望事情能够自动工作。免责声明:我不是一位WebSphere专家(仅与这位野兽合作一周),我可能错过了一些明显的设置。请提出任何可能解决此问题的建议。

+0

您可以一次创建jar并将其作为共享库添加到websphere。由于您无需每次都部署它,现在可以访问所有应用程序。 – 2013-03-16 19:49:33

+0

感谢您的建议Gregory。我会用它作为最后的手段 - 如果可能的话,想使它成为“正确”的方式。 – Juriy 2013-03-17 12:22:23

+0

您是否将您的项目打包在RAD内的EAR项目中? – 2013-03-20 17:00:58

回答

0

就我所知RAD是在eclipse平台上制作的。我知道用maven你可以创建构建jar文件并放入本地存储库的工件。其他模块可以通过M2_REPO变量引用该罐子。然后你坚持使用maven,并且必须使用maven插件来进行eclipse,这有助于将maven集成到eclipse中。但考虑用project builder and ant配置您的项目的选项。然后,您可以在构建之前轻松运行ant目标,以在部署之前制作瓶子。该技术不仅在eclipse IDE中使用,而且在其他IDE中使用。在项目构建之前或之后运行ant目标是非常宝贵的功能。

0

将您的taglib打包为maven jar并将其安装到本地.m2存储库。然后在您的主项目中引用pom中的依赖项。它将被拉进包装。如果它是为了本地开发而重新启动,那可能是因为打开了工作区分辨率。

此外,在基于Maven的项目中将JAR添加到WEB-INF/lib中并不是最佳实践,因为您已经规避了maven的主要目的,即控制构建项目所需的依赖关系。