在Jboss中部署jar

时间:2010-06-30 22:12:55

标签: java jsp jboss

我有一些.jspf文件是我在新的.jsp文件中包含的片段。它们是片段的原因是它们可以在多个jsps中使用一些额外的组件重复使用。

我现在的问题是我想在两个不同的.war文件中使用这些.jsps。

所以我创建了一个新的.jar文件,其中包含了这些jspf,现在我正在尝试部署这个jar,然后我将它导入我的新jsp中,这是在2场战争中的1场内。

我无法在Jboss 4.2中成功部署jar。我正在使用Eclipse ide。 有什么想法吗?如果有替代方法,我会很感激任何想法。


感谢您的建议,我已经按照这个想法部署了包含我的.jspf文件的war1。

所以在我关于jsp的war2中我做了:

    <c:import context="/sharedComponents" url="/easyPayNamePaymentOption.jspf" var="easyPayName"/>

<%@ include file="easyPayNamePaymentOption.jspf" %>

但是我无法使用包含的片段呈现此页面,我不知道如何处理导入的jspf。我尝试了几种不同的方式:

<%@ include file="/sharedComponents/easyPayNamePaymentOption.jspf" %>

并使用var名称:

<%@ include file="#{easyPayName}" %>

然而,它一直在寻找目前的战争。如何告诉它包含新导入的片段并显示它?

提前致谢。

1 个答案:

答案 0 :(得分:3)

我可以看到你正在尝试做什么,但这不适用于JAR文件。所有JSP文件(包括JSPF)都必须在WAR内部,而不是JAR。

最简单的解决方案是将JSPF文件的副本放入需要使用它们的每个WAR中。假设您不想这样做,那么有一种替代方法,称为cross-context WAR。

默认情况下,JBoss允许其webapps相互请求资源。例如,假设webapp1(上下文路径/app1)想要从webapp2(上下文路径/my.jspf)导入JSPF /app2。您可以使用JSTL从webapp1内部执行此操作:

<c:import context="/app2" url="/my.jspf"/>

因此,如果您要创建一个包含JSPF文件的“共享”WAR文件,并将其部署到JBoss,那么您的其他Web应用程序可以使用上述技术将JSPF的内容包含到自己的JSP中。


编辑:我已阅读您更新的问题,但我不明白为什么您将var="easyPayName"添加到<c:import>代码中。所有这一切都是导入easyPayNamePaymentOption.jspf的内容并将其存储在名为easyPayName的变量中,这似乎完全没必要。

我想也许您正在将<c:import>与java import相关联?如果是这样,不要 - 他们完全不同。 <c:import>应该被称为<c:include>,因为它就是它的作用。

保持简单,删除属性,然后

<c:import context="/sharedComponents" url="/easyPayNamePaymentOption.jspf"/>

这就是你需要做的全部 - 它将直接在JSP中包含easyPayNamePaymentOption.jspf的内容。