在java web应用程序中加载xml文件
我需要在我的网站中加载 log4j.xml 配置文件来初始化日志记录。 log4j.xml 位于包中 com.test.config。
当在 j2se java 应用程序代码中
InputStream input = ClassLoader.getSystemClassLoader().getResourceAsStream("com/test/config/log4j.xml");
返回输入流时,但是当我在 servlet 中执行它时,它返回 null。 servlet 是部署在 glassfish 2.1 上的 java web 应用程序,
有什么区别?
I need to load log4j.xml config file in my web to initialize logging. log4j.xml is in package
com.test.config.
when in j2se java app code
InputStream input = ClassLoader.getSystemClassLoader().getResourceAsStream("com/test/config/log4j.xml");
resturns input stream but when I execute this in servlet it returns null.
servlet is java web app deployed on glassfish 2.1
what's the difference?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果
log4j.xml
文件位于 jar 文件中,请确保已将该 jar 文件添加到 Glassfish 中的 servlet 类路径中。否则,如果它位于目录中,例如
resources/com/test/config
,则必须将resources
目录添加到服务器类路径中。If the
log4j.xml
file is in a jar file, ensure that you've added the jar file to the servlet classpath in Glassfish.Otherwise, if its in a directory, say
resources/com/test/config
you have to add theresources
directory to your server classpath.您可以尝试使用当前线程的上下文类加载器
Thread.currentThread().getContextClassLoader()
来代替,我认为这曾经为我解决了类似的问题。You could try using the current thread's context class loader
Thread.currentThread().getContextClassLoader()
instead, I think this solved a similar issue for me once.