繁体   English   中英

封装在EAR文件中的JAR文件中的JSP taglib

[英]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.jarapp.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,我们应该看到类似于以下的结构:

  • COM
  • META-INF
  • Web应用程序
  • 的.classpath

将所有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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM