【问题标题】:Get relative path to XML file from a non-servlet class in a WAR从 WAR 中的非 servlet 类获取 XML 文件的相对路径
【发布时间】:2011-03-26 11:01:23
【问题描述】:

我有一个 XML 文件,每次应用启动时我都需要读取并加载内存中的数据。因此,当项目在 Eclipse 中时,我硬编码了路径:“/path/to/xml”,但是当我创建 WAR 时,如何指定 XML 文件的相对路径。

我可以使用URL url = getServletContext().getResource(fileName); 做到这一点

但是,我没有可用的 servlet 上下文,因为它只是一个配置加载器类。

谢谢

更新:

我这样做了,是最简单的方法:

网址 urlOfXml =

Thread.currentThread().getContextClassLoader().getResource("ConfigXmlFile.xml");

【问题讨论】:

    标签: java servlets relative-path war


    【解决方案1】:

    实现ServletContextListener。在 webapp 启动期间调用的 contextInitialized() 方法中,您有一个 ServletContextEvent 的句柄,它反过来为您提供了 getServletContext() 方法。

    public class Config implements ServletContextListener {
    
        public void contextInitialized(ServletContextEvent event) {
            URL url = event.getServletContext().getResource(fileName);
            // ...
        }
    
        // ...
    }
    

    web.xml注册为<listener>

    <listener>
        <listener-class>com.example.Config</listener-class>
    </listener>
    

    【讨论】:

    • 那么,web应用启动时会自动调用contextInitialized(ServletContextEvent event)方法吗?
    • 如果在 web.xml 中注册,是的。请注意我的答案中的蓝色文字。这些是链接。点击阅读。
    猜你喜欢
    • 1970-01-01
    • 2014-07-22
    • 2019-05-04
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多