如何从分解的 Web 应用程序的根读取资源?

发布于 2024-10-22 03:30:02 字数 365 浏览 6 评论 0原文

我有一个本地主机 JBoss 6 设置,其中包含 JBoss Tools 和 Eclipse,用于分解 Web 应用程序的热部署。我曾经使用带有显式类路径的主类和 JAR/WAR 文件通过 shell 启动我的 web 应用程序。我的资源加载器曾经完美地工作,但现在由于 Web 应用程序位于 JBoss 上的分解目录结构中,具有“未知”类路径,因此找不到“/db/jpql/whatever.jpql”等文本文件资源(返回 null ,导致 NPE)。

问题是:

如何从分解的 Web 应用程序(在 JBoss 中)的根目录(或 WEB-INF 目录之外)加载资源?我检查了类路径,它只不过是 C:\dev\jboss\bin\run.jar...

I have a localhost JBoss 6 setup with JBoss Tools and Eclipse doing the hot deploy of an exploded webapp. I used to launch my webapp via shell using main class with an explicit classpath and via JAR/WAR file. My resource loader used to work perfectly, but now since the webapp is on JBoss in an exploded directory structure with an "unknown" classpath, text file resources like "/db/jpql/whatever.jpql" aren't found (null is returned, leading to an NPE).

The question is:

How do you load resources from the root (or outside of the WEB-INF dir) of an exploded webapp (in JBoss)? I checked the classpath which is nothing but C:\dev\jboss\bin\run.jar...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奢华的一滴泪 2024-10-29 03:30:02

我“忘记”在资源字符串前加上斜杠。无法可靠工作。

如果当前类的类加载器返回 null,我过去常常

public static String readResource(String sResource)
{
    String sContent = "";

    InputStream is = null;
    BufferedReader br = null;

    try
    {
        is = TextFileLoader.class.getResourceAsStream(sResource);

        // resource not found, check web environment
        if ( is == null )
        {
            is = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream(sResource);
        }

        is.available();

        br = new BufferedReader(new InputStreamReader(is));

        ...
    }

    ...
}

获取 webapp 资源。

I had "forgotten" to prefix my resource strings with a slash. Can't work reliably.

I had used

public static String readResource(String sResource)
{
    String sContent = "";

    InputStream is = null;
    BufferedReader br = null;

    try
    {
        is = TextFileLoader.class.getResourceAsStream(sResource);

        // resource not found, check web environment
        if ( is == null )
        {
            is = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream(sResource);
        }

        is.available();

        br = new BufferedReader(new InputStreamReader(is));

        ...
    }

    ...
}

to get the webapp resource if the current classes' classloader returned null.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文