2011-05-19 46 views
3

我有以下情况:JSP标签库包装在一个EAR文件中的JAR文件

  • taglib.jar:自定义标签库JSP打包为一个JAR文件。 TLD文件是/META-INF/taglib.tld
  • webapp.war:使用由taglib.jar提供的标签的JSP文件的Web应用程序。
  • app.ear:一个包含webapp.war和其他WAR文件的J2EE应用程序。

我要打包在app.ear一个taglib.jar所以在webapp.war的JSP文件和其他WAR文件都可以使用它的标签。我试图在JSP文件下面的指令,没有成功:

  • <%@ taglib uri="/taglib.jar" prefix="xxx" %>
  • <%@ taglib uri="taglib.jar" prefix="xxx" %>

是否有可能打包EAR文件的JSP标签库JAR文件?如果是,我应该在taglib指令的uri属性中指定哪个值?

注:我可以在每个WAR文件的/WEB-INF/lib当然包taglib.jar,但是这是刚才我尽量避免。

上下文:我在JBoss 4.2.3上部署了EAR文件。

编辑:恐怕这是不可能的,尤其是因为我从Maven WAR plugin documentationthe section about skinny WARs

有时JAR文件的清单必须被打包成WAR(...)为它能够正常工作,就像标签库一样。

回答

0

这是不可能的。我能做的最好的事情是将taglib.jar打包到EAR文件中,并将TLD文件复制到每个WAR文件的/WEB-INF目录中。

1

jar taglib的只能在WEB-INF/lib下出现。容器可能会提供一些自定义的方式来配置常用的tld。为了在JBOSS中实现这一点,这是方式

JspServlet支持一个新的engineOptionsClass,它允许替换选项实现。默认设置现在使用JBoss的具体JspServletOptions:

engineOptionsClass org.jboss.web.tomcat.tc5.jasper.JspServletOptions

又使用自定义的标记库描述符缓存org.jboss.web .tomcat.tc5.jasper.TagLibCache从tomcat sar conf/tlds中的jar中加载标签库。

+0

+1因为它似乎它的确是不可能在EAR文件共享标签库。 – 2011-05-20 09:03:29

0

这是一个老话题,但我想分享我的解决方案: 在eclipse上用鼠标右键单击项目,导出为带有选项“导出生成的类文件和资源”的jar并为其命名(ex.customtags.jar)。 打开与7Zip的包装.jar和我们应该看到类似下面这样的结构:

  • COM
  • META-INF
  • 的webapp
  • 的.classpath

复制所有taglibs添加到.jar文件的根目录(不是任何其他位置)的META-INF文件夹

更改此jar后,将此添加到您要使用taglib的项目的webapp \ WEB-INF \ lib文件夹中。 在jsp文件中加入以下内容:

这应该工作得很好!

问候, MS