当前位置: 首页 > 面试题库 >

如何在多次大战之间共享jsf错误页面

狄峻熙
2023-03-14
问题内容

我正在尝试在多次战争之间共享错误页面(error.xhtml)。它们都在一个大耳朵的应用程序中,并且都使用一个通用的jar库,我想在其中放置它。

错误页面应使用web.xml或更好的web-fragment.xml,并将其声明为标准的Java ee错误页面。

实际的EAR结构:

EAR
 EJB1
 EJB2
 WAR1 (using CommonWeb.jar)
 WAR2 (using CommonWeb.jar)
 WAR3 (using CommonWeb.jar)

仅将错误页面放在META-INF / resources下是行不通的,因为它不是资源。

我希望在每个war文件中尽可能少地进行配置。

我正在使用Glassfish 3.1,但希望尽可能使用Java EE 6标准。


问题答案:

您需要创建一个ResourceResolver从类路径解析资源的自定义,将其放入公共JAR文件中,然后web- fragment.xml在JAR(或web.xmlWAR)中声明它。

开球示例:

package com.example;

import java.net.URL;

import javax.faces.view.facelets.ResourceResolver;

public class FaceletsResourceResolver extends ResourceResolver {

    private ResourceResolver parent;
    private String basePath;

    public FaceletsResourceResolver(ResourceResolver parent) {
        this.parent = parent;
        this.basePath = "/META-INF/resources"; // TODO: Make configureable?
    }

    @Override
    public URL resolveUrl(String path) {
        URL url = parent.resolveUrl(path); // Resolves from WAR.

        if (url == null) {
            url = getClass().getResource(basePath + path); // Resolves from JAR.
        }

        return url;
    }

}

与in web-fragment.xmlweb.xml

<context-param>
    <param-name>javax.faces.FACELETS_RESOURCE_RESOLVER</param-name>
    <param-value>com.example.FaceletsResourceResolver</param-value>
</context-param>


 类似资料:
  • 问题内容: 我想将一些数据从一个HTML页面发送到另一HTML页面。我通过类似的查询参数发送数据 。这种方法的问题在于数据保留在URL中。是否有其他方法可以使用JavaScript或jquery在HTML页面之间发送数据。 问题答案: 为什么不将值存储在HTML5存储对象(例如或)中,请访问HTML5存储文档以获取更多详细信息。使用此功能,您可以在本地临时/永久存储中间值,然后在以后访问您的值。

  • 问题内容: 我们遇到了适用于多线程的方案。 在主线程中,执行一些逻辑操作并更新数据库,在某种程度上,它将调用另一个服务来更新数据库,该服务在另一个线程中运行。 我们希望两个线程共享同一个事务,这意味着任何一个线程中的任何一个操作都将失败,那么另一个线程中的该操作也将被回滚。 但是工作了几天,我发现一些帖子说JTA不支持多线程。当前我们使用Bitronix作为JTA提供者,有没有人知道Bitroni

  • 问题内容: 我正在评估Kubernetes作为我们新应用程序的平台。现在,一切看起来都非常令人兴奋!但是,我遇到了一个问题:我将群集托管在GCE上,并且需要某种机制在两个Pod之间共享存储(连续集成服务器和应用程序服务器)。用kubernetes做到这一点的最佳方法是什么?这些卷类型似乎都不符合我的需求,因为如果一个Pod需要写入GCE磁盘,则无法共享。NFS是完美的,但似乎需要为kubernet

  • 当我试图打开我的Apache POI excel文件时,我遇到了一些问题,该文件包含大量数据(600.000/700000行),为三个不同的表中生成的三个枢轴提供数据(使用流式SXSSFWorkbook)。 当我试图打开创建的Excel di MSExcel时,出现了这样的消息:“Excel无法用可用的Excel资源完成此活动...试着关闭一些东西……”。所以,为了节省资源,我尝试在前两个pivo

  • 用例:将一个值放入某个存储区,在所有浏览器选项卡中保持该值可访问,并在所有选项卡关闭时清除该值。

  • 问题内容: 我是Go菜鸟,无法找到在Go中打开mysql连接然后在http处理程序之间共享它的完整示例。到目前为止,这是我的代码,如何使用在HomeHandler中的main()中打开的db连接? 问题答案: 数据库/ sql程序包会自动为您管理连接池。 返回 代表连接池 而不是单个连接的句柄。如果池中的所有连接都忙,则数据库/ sql软件包会自动打开一个新连接。 将其应用于代码意味着,您只需要共