2011-05-19 22 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