我有以下情况:
taglib.jar
:打包为JAR文件的自定义JSP taglib。 TLD文件为/META-INF/taglib.tld
。webapp.war
:包含使用taglib.jar
提供的标记的JSP文件的Web应用程序。app.ear
:包含webapp.war
和其他WAR文件的J2EE应用程序。我想在taglib.jar
中打包一个app.ear
,因此webapp.war
中的JSP文件和其他WAR文件都可以使用其标记。我在JSP文件中尝试了以下指令,但没有成功:
<%@ taglib uri="/taglib.jar" prefix="xxx" %>
<%@ taglib uri="taglib.jar" prefix="xxx" %>
是否可以将JSP taglib JAR文件打包到EAR文件中?如果是,我应该在uri
指令的taglib
属性中指定哪个值?
注意:我当然可以在每个WAR文件的taglib.jar
中打包/WEB-INF/lib
,但这正是我试图避免的。
上下文:我在JBoss 4.2.3上部署EAR文件。
编辑:我担心这是不可能的,特别是因为我从the section about skinny WARs阅读了Maven WAR plugin documentation:
有时,必须将JAR列表打包到WAR(...)中才能使其正常工作,就像使用标记库一样。
答案 0 :(得分:1)
jar标签库只能出现在WEB-INF / lib下。容器可能提供一些自定义方式来配置常用的tld。要在JBOSS中实现相同的目标,这就是
JspServlet支持新的engineOptionsClass,允许替换选项实现。默认设置现在使用特定于jboss的JspServletOptions:
engineOptionsClass org.jboss.web.tomcat.tc5.jasper.JspServletOptions
反过来使用自定义标记lib描述符缓存org.jboss.web.tomcat.tc5.jasper.TagLibCache从tomcat sar conf / tlds中的jar加载标记库。
答案 1 :(得分:0)
这是不可能的。我能做的最好的事情是将taglib.jar
打包到EAR文件中,并在每个WAR文件的/WEB-INF
目录中复制TLD文件。
答案 2 :(得分:0)
这是一个老话题,但我想分享我的解决方案: 在eclipse上用鼠标右键单击项目,导出为带有“导出生成的类文件和资源”选项的jar并为其命名(ex.customtags.jar)。 用7Zip打开打包的.jar,我们应该看到类似于以下的结构:
将所有taglib复制到.jar文件(不是任何其他位置)的根的META-INF文件夹。
更改此jar后,将其添加到要使用taglib的项目的webapp \ WEB-INF \ lib文件夹中。 在jsp文件中输入以下内容:
这应该可以正常工作!
此致 MS