本文来自: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"。 错误信息"无法解析运行时描述符: java.lang.IllegalStateException: MASM0001:"指出在部署Web服务时...
在Unix操作系统上部署WebLogic Server 8.1是一项技术性的任务,涉及到多个步骤和注意事项。以下将详细阐述这个过程。 首先,WebLogic Server是Oracle公司的一款企业级Java应用服务器,主要用于运行和管理Java应用...
### WebLogic 9.2 的配置与部署 #### 一、WebLogic 9.2 概述 WebLogic Server 是一款高性能的企业级 Java 应用服务器,由 Oracle 公司开发并维护。WebLogic 9.2 版本是该系列中的一个重要版本,它提供了强大的...
在WebLogic服务器上部署应用程序时,可能会遇到各种错误,这些错误可能是由于配置问题、环境问题或是应用程序本身的问题导致的。本篇文章将针对“在WebLogic部署出现的错误”这一主题,详细探讨可能遇到的问题及解决...
6. **将WAR文件部署到Weblogic**:有两种方式部署应用。一是通过MyEclipse直接发布,选择项目右键菜单中的`Publish`,选择对应的Weblogic Server实例。二是手动将WAR文件复制到Weblogic的`autodeploy`目录下,或者在...
- 在部署过程中,密切关注WebLogic服务器的日志文件,如`<domain_home>/servers/<server_name>/logs/<server_name>.log`,这对于定位和解决问题至关重要。同时,也要检查`<domain_home>/logs/console.log`,这可能...
在AIX环境下,遇到问题时,查看WebLogic的日志文件(如`<domain_home>/logs/<server_name>.log`)和AIX系统的系统日志(如`/var/adm/messages`)可以帮助定位问题。 以上就是在AIX系统中安装、配置和启动WebLogic...
7. **其他依赖**:如log4j或commons-logging等日志库,以便调试和记录服务执行情况。 配置这些库通常涉及以下步骤: 1. **创建Web服务**:使用XFire提供的API和工具,编写Web服务的业务逻辑并部署为一个JAR或WAR...
首先,你需要打包应用为WAR或EAR文件,然后在WebLogic管理控制台中创建一个新的部署,指定应用的档案、启动类、安全角色等信息。 1.2.2 应用包相关配置 在部署过程中,可能需要对应用进行额外的配置,如JNDI绑定、...
- **EAR/WAR/ZIP部署**:你可以将Java EE应用程序打包为EAR/WAR/ZIP文件,通过Admin Console或命令行工具(如`wldeploy`)部署到WebLogic。 - **热部署**:WebLogic支持热部署,允许在不重启服务器的情况下更新...
4. **部署应用程序**:将WAR、EAR或EJB JAR文件上传到WebLogic,指定部署位置和参数。 **3. 使用WebLogic** 1. **启动和停止服务**:通过命令行或管理控制台启动和停止WebLogic服务器。 2. **监控应用**:管理...
6. 部署应用程序:将WAR或EAR文件上传至WebLogic,配置应用的部署属性。 五、启动与停止WebLogic 1. 启动WebLogic:在WebLogic Server的`bin`目录下运行`startWebLogic.sh`或`startWebLogic.cmd`。 2. 停止WebLogic...
在WebLogic中部署应用程序通常涉及以下步骤:打包应用为WAR、EAR或JAR文件,然后使用管理控制台或者WLST(WebLogic Scripting Tool)进行部署。管理员可以选择部署模式,如自动、快速或延迟,以及指定部署的服务器或...
- **EAR/WAR部署**:将打包好的应用文件上传到WebLogic管理控制台或使用WLST命令进行部署。 - **部署配置**:配置应用的环境变量、数据源、ejb-jar.xml、web.xml等文件,确保正确运行。 - **热部署与更新**:理解...
2. **日志分析**:查看`server.log`文件,诊断运行时问题。 3. **JDBC数据源监控**:监控数据库连接池的使用情况。 4. **性能指标**:使用WebLogic仪表板查看服务器性能指标。 #### 2.5 高可用性与扩展 1. **集群**...
- **重要性**: Domain的概念对于理解WebLogic Server的整体架构至关重要,它是管理和部署WebLogic环境的基础。 4. **WebLogic安装前的信息收集** - **定义**: 在安装WebLogic之前,需要收集一系列关于目标系统的...
- **日志框架**:如Log4j、SLF4J和Logback,用于记录应用运行时的信息。 - **日志配置**:设置日志级别、输出位置和格式,便于故障排查。 9. **安全性** - **SSL/TLS**:为HTTP协议提供安全传输,实现数据加密和...
4. **部署问题**:检查应用程序的部署配置,确保WAR、EAR或JAR文件正确打包,并且在Weblogic中正确部署。错误的部署配置可能导致类加载问题、依赖冲突等问题。 5. **安全配置**:由于标签中提到了“Security”,...
4. **部署Web应用**: - 将war文件复制到`webapps`目录下,Tomcat会自动解压并部署。 - 或者在`conf/server.xml`中添加`<Host>`元素来配置虚拟主机,以及`<Context>`元素来指定特定的应用路径。 5. **日志管理**...
- Red5的配置主要通过修改`conf`目录下的各种配置文件完成,如`red5.properties`用于全局配置,`log4j.properties`用于日志管理,`web.xml`定义Web应用等。理解这些配置文件的内容和用途是深入使用Red5的关键。 4....