您的位置:首页 > 移动开发

Error: weblogic.management.DeploymentException: Cannot set web app root system p

2016-03-10 16:05 579 查看
这2天要将项目以war包得形式发布到weblogic下面,在项目中用到了log4j初始化的的时候是用

<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>

 来加载log4j的。但是发布到weblogc中报错了。

Error: weblogic.management.DeploymentException: Cannot set web app root system property when WAR file is not expanded - with nested exception.
[java.lang.IllegalStateException: Cannot set web app root system property when WAR file is not expanded]

   意思找不到那个log4j文件吧。在往上查了下,需要自己写个类加载下log4j文件

 

package com.dep.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import javax.servlet.http.HttpServlet;

import org.apache.log4j.PropertyConfigurator;
public class Log4jInit extends HttpServlet {
public void init() {
/**
* apache中的调用方法
* String prefix =getServletContext().getRealPath("/");
*
* String file = getInitParameter("log4j");
*  // if the log4j-init-file is not set, then no point in trying
*
* System.out.println("................log4j start");
*
* if(file != null) {
*
* PropertyConfigurator.configure(prefix+file);
*  }
*
*/
String file = getInitParameter("log4j");
System.out.println("................log4j start");
if (file != null) {
Properties ps=new Properties();
try {
InputStream log = getServletContext().getResourceAsStream(file);
ps.load(log);
} catch (IOException e) {
e.printStackTrace();
}
PropertyConfigurator.configure(ps);
}
}
}

 

<servlet>
<servlet-name>log4jLoader</servlet-name>
<servlet-class>com.dep.util.Log4jInit</servlet-class>
<init-param>
<param-name>log4j</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: