[英]JSP taglib in a JAR file packaged in an EAR file
我有以下情况:
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
所以在JSP文件webapp.war
和其他WAR文件都可以使用它的标签。 我在JSP文件中尝试了以下指令,但没有成功:
<%@ taglib uri="/taglib.jar" prefix="xxx" %>
<%@ taglib uri="taglib.jar" prefix="xxx" %>
是否可以将JSP taglib JAR文件打包到EAR文件中? 如果是,我应该在taglib
指令的uri
属性中指定哪个值?
注意:我当然可以在每个WAR文件的/WEB-INF/lib
中打包taglib.jar
,但这正是我试图避免的。
上下文:我在JBoss 4.2.3上部署EAR文件。
编辑:我担心这是不可能的,特别是因为我从Maven WAR插件文档中读到了关于skinny WARs的部分 :
有时,必须将JAR列表打包到WAR(...)中才能使其正常工作,就像使用标记库一样。
jar taglib只能出现在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加载标记库。
这是一个古老的主题,但我想分享我的解决方案:在eclipse上用鼠标右键单击项目,导出为带有“导出生成的类文件和资源”选项的jar并为其命名(ex.customtags。罐)。 使用7Zip打开打包的.jar,我们应该看到类似于以下的结构:
将所有taglib复制到.jar文件根目录下的META-INF文件夹(不是任何其他位置)。
更改此jar后,将其添加到要使用taglib的项目的webapp \\ WEB-INF \\ lib文件夹中。 在jsp文件中输入以下内容:
这应该工作得很好!
此致,MS
这是不可能的。 我能做的最好的事情是在EAR文件中打包taglib.jar
,并在每个WAR文件的/WEB-INF
目录中复制TLD文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.