`
Harold_xlp
  • 浏览: 159256 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

war包部署weblogic的Log4j支持问题

 
阅读更多
本文来自:http://www.codesky.net/article/200707/119054.html

工程打包成.war部署到WebLogic后,出现如下问题:

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]

问题解决:通常您不需要亲自编写servlet或者listener,比如直接利用log4j的com.apache.jakarta.log4j.Log4jInit类,Spring的org.springframework.web.util.Log4jConfigServlet和org.springframework.web.util.ServletContextListener方式配置,找到.Log4jConfigServlet和ServletContextListener的源码,他们都在适当的地方(callback method)调用了Log4jWebConfigurer.initLogging(getServletContext());定位到这个方法,第一句就是:WebUtils.setWebAppRootSystemProperty(servletContext);再定位到该方法,方法很短:

public static void setWebAppRootSystemProperty(ServletContext servletContext) throws IllegalStateException {

String param = servletContext.getInitParameter(WEB_APP_ROOT_KEY_PARAM);

String key = (param != null ? param : DEFAULT_WEB_APP_ROOT_KEY);

String oldValue = System.getProperty(key);

if (oldValue != null) {

throw new IllegalStateException("WARNING: Web app root system property already set: " + key + " = " + oldValue + " - Choose unique webAppRootKey values in your web.xml files!");

}

String root = servletContext.getRealPath("/");

if (root == null) {

throw new IllegalStateException("Cannot set web app root system property when WAR file is not expanded");

}

System.setProperty(key, root);

servletContext.log("Set web app root system property: " + key + " = " + root);

}

系统需要读取webAppRootKey这个参数,所以在部署到WebLogic里的时候,在web.xml中手动添加如下代码:

<context-param>

<param-name>webAppRootKey</param-name>

<param-value>webapp.root</param-value>

</context-param>


WebLogic自身也包含对Log4j的支持,在打包部署(.war)的时候,会和Spring的org.springframework.web.util.Log4jConfigListener有冲突(拷贝到WebLogic散放部署不会出错)。所以改用Servlet加载。(不通过应用加载Log4j好像也可以使用,但未进行完整测试,下面代码修改后,系统会报Log4j加载重复错误,不影响应用启动。)

web.xml中删除下面代码:

<listener id="log4jConfigListener">

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

</listener>

将Listener加载改为通过Servlet加载,再在web.xml增加:

<servlet>

<servlet-name>log4jConfigListener</servlet-name>

<servlet-class>org.springframework.web.util.Log4jConfigServlet</servlet-class>

<load-on-startup>0</load-on-startup>

</servlet>
分享到:
评论

相关推荐

    weblogic12c部署webservice错误问题WSSERVLET11

    然而,部署过程中可能会遇到各种问题,如在本问题中遇到的"weblogic12c部署webservice错误问题WSSERVLET11"。 错误信息"无法解析运行时描述符: java.lang.IllegalStateException: MASM0001:"指出在部署Web服务时...

    unix下weblogic81的部署示例

    在Unix操作系统上部署WebLogic Server 8.1是一项技术性的任务,涉及到多个步骤和注意事项。以下将详细阐述这个过程。 首先,WebLogic Server是Oracle公司的一款企业级Java应用服务器,主要用于运行和管理Java应用...

    weblogic9.2的配置及部署

    ### WebLogic 9.2 的配置与部署 #### 一、WebLogic 9.2 概述 WebLogic Server 是一款高性能的企业级 Java 应用服务器,由 Oracle 公司开发并维护。WebLogic 9.2 版本是该系列中的一个重要版本,它提供了强大的...

    在weblogic 部署出现的 错误

    在WebLogic服务器上部署应用程序时,可能会遇到各种错误,这些错误可能是由于配置问题、环境问题或是应用程序本身的问题导致的。本篇文章将针对“在WebLogic部署出现的错误”这一主题,详细探讨可能遇到的问题及解决...

    Weblogic 8.1 + MyEclipse的配置及其Java Web应用的部署和测试.doc

    6. **将WAR文件部署到Weblogic**:有两种方式部署应用。一是通过MyEclipse直接发布,选择项目右键菜单中的`Publish`,选择对应的Weblogic Server实例。二是手动将WAR文件复制到Weblogic的`autodeploy`目录下,或者在...

    将应用部署到weblogic10及oracle linux时遇到的问题.docx

    - 在部署过程中,密切关注WebLogic服务器的日志文件,如`&lt;domain_home&gt;/servers/&lt;server_name&gt;/logs/&lt;server_name&gt;.log`,这对于定位和解决问题至关重要。同时,也要检查`&lt;domain_home&gt;/logs/console.log`,这可能...

    AIX下的Weblogic安装

    在AIX环境下,遇到问题时,查看WebLogic的日志文件(如`&lt;domain_home&gt;/logs/&lt;server_name&gt;.log`)和AIX系统的系统日志(如`/var/adm/messages`)可以帮助定位问题。 以上就是在AIX系统中安装、配置和启动WebLogic...

    xfire开发在weblogic8上需要的jar包

    7. **其他依赖**:如log4j或commons-logging等日志库,以便调试和记录服务执行情况。 配置这些库通常涉及以下步骤: 1. **创建Web服务**:使用XFire提供的API和工具,编写Web服务的业务逻辑并部署为一个JAR或WAR...

    WebLogic 12c安装使用手册2

    首先,你需要打包应用为WAR或EAR文件,然后在WebLogic管理控制台中创建一个新的部署,指定应用的档案、启动类、安全角色等信息。 1.2.2 应用包相关配置 在部署过程中,可能需要对应用进行额外的配置,如JNDI绑定、...

    Weblogic实用教程及常用技巧集锦

    - **EAR/WAR/ZIP部署**:你可以将Java EE应用程序打包为EAR/WAR/ZIP文件,通过Admin Console或命令行工具(如`wldeploy`)部署到WebLogic。 - **热部署**:WebLogic支持热部署,允许在不重启服务器的情况下更新...

    weblogic 的安装与配置及使用适合初学的人

    4. **部署应用程序**:将WAR、EAR或EJB JAR文件上传到WebLogic,指定部署位置和参数。 **3. 使用WebLogic** 1. **启动和停止服务**:通过命令行或管理控制台启动和停止WebLogic服务器。 2. **监控应用**:管理...

    weblogic【安装说明】,weblogic

    6. 部署应用程序:将WAR或EAR文件上传至WebLogic,配置应用的部署属性。 五、启动与停止WebLogic 1. 启动WebLogic:在WebLogic Server的`bin`目录下运行`startWebLogic.sh`或`startWebLogic.cmd`。 2. 停止WebLogic...

    weblogic管理指南

    在WebLogic中部署应用程序通常涉及以下步骤:打包应用为WAR、EAR或JAR文件,然后使用管理控制台或者WLST(WebLogic Scripting Tool)进行部署。管理员可以选择部署模式,如自动、快速或延迟,以及指定部署的服务器或...

    weblogic10.0.36 windows linux 64位安装手册以及问题解决,性能优化合集

    - **EAR/WAR部署**:将打包好的应用文件上传到WebLogic管理控制台或使用WLST命令进行部署。 - **部署配置**:配置应用的环境变量、数据源、ejb-jar.xml、web.xml等文件,确保正确运行。 - **热部署与更新**:理解...

    weblogic使用手册

    2. **日志分析**:查看`server.log`文件,诊断运行时问题。 3. **JDBC数据源监控**:监控数据库连接池的使用情况。 4. **性能指标**:使用WebLogic仪表板查看服务器性能指标。 #### 2.5 高可用性与扩展 1. **集群**...

    weblogic技术培训(一)考试试题.pdf

    - **重要性**: Domain的概念对于理解WebLogic Server的整体架构至关重要,它是管理和部署WebLogic环境的基础。 4. **WebLogic安装前的信息收集** - **定义**: 在安装WebLogic之前,需要收集一系列关于目标系统的...

    java服务端部署手册.zip

    - **日志框架**:如Log4j、SLF4J和Logback,用于记录应用运行时的信息。 - **日志配置**:设置日志级别、输出位置和格式,便于故障排查。 9. **安全性** - **SSL/TLS**:为HTTP协议提供安全传输,实现数据加密和...

    测试问题所在的程序

    4. **部署问题**:检查应用程序的部署配置,确保WAR、EAR或JAR文件正确打包,并且在Weblogic中正确部署。错误的部署配置可能导致类加载问题、依赖冲突等问题。 5. **安全配置**:由于标签中提到了“Security”,...

    tomcat安装包zip

    4. **部署Web应用**: - 将war文件复制到`webapps`目录下,Tomcat会自动解压并部署。 - 或者在`conf/server.xml`中添加`&lt;Host&gt;`元素来配置虚拟主机,以及`&lt;Context&gt;`元素来指定特定的应用路径。 5. **日志管理**...

    red5 安装入门配置详解

    - Red5的配置主要通过修改`conf`目录下的各种配置文件完成,如`red5.properties`用于全局配置,`log4j.properties`用于日志管理,`web.xml`定义Web应用等。理解这些配置文件的内容和用途是深入使用Red5的关键。 4....

Global site tag (gtag.js) - Google Analytics