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

Apusic中log4j无法装载问题的解决

    博客分类:
  • J2EE
阅读更多
部署在Apusic 4.0.3上的应用中,使用到log4j,在应用装载时报如下异常:
2008-05-27 20:00:41 错误 [apusic.server.Main] 启动 'apusic:name=J2EEDeployer,j2eeType=Service' 服务失败。
java.lang.ExceptionInInitializerError
   at org.apache.struts.action.ActionServlet.initInternal(ActionServlet.java:1013)
   at org.apache.struts.action.ActionServlet.init(ActionServlet.java:322)
   at com.tjsoft.system.CTJActionServlet.init(CTJActionServlet.java:27)
   at javax.servlet.GenericServlet.init(GenericServlet.java:256)
   at com.apusic.servlet.http.ServletConfigImpl.initializeComponent(Unknown Source)
   at com.apusic.servlet.http.ServletConfigImpl.initializeComponent(Unknown Source)
   at com.apusic.servlet.http.ComponentConfigImpl.createComponent(Unknown Source)
   at com.apusic.servlet.http.ComponentConfigImpl.getComponent(Unknown Source)
   at com.apusic.servlet.http.ServletConfigImpl.getServlet(Unknown Source)
   at com.apusic.servlet.http.Context.loadStartupServlets(Unknown Source)
   at com.apusic.servlet.http.Context.start(Unknown Source)
   at com.apusic.servlet.http.VirtualHost.addContext(Unknown Source)
   at com.apusic.servlet.http.HttpServer.loadWebModule(Unknown Source)
   at com.apusic.servlet.http.WebService.loadWebModule(Unknown Source)
   at com.apusic.deploy.runtime.J2EEApplication.loadWebModule(Unknown Source)
   at com.apusic.deploy.runtime.J2EEApplication.startApplication(Unknown Source)
   at com.apusic.deploy.runtime.J2EEApplication.startService(Unknown Source)
   at com.apusic.service.Service.start(Unknown Source)
   at com.apusic.deploy.runtime.J2EEDeployer.startUserApplications(Unknown Source)
   at com.apusic.deploy.runtime.J2EEDeployer.startService(Unknown Source)
   at com.apusic.service.Service.start(Unknown Source)
   at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at com.apusic.jmx.MBeanDescriptor.invoke(Unknown Source)
   at com.apusic.jmx.DynamicMBeanSupport.invoke(Unknown Source)
   at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:221)
   at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:228)
   at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:822)
   at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:792)
   at com.apusic.server.J2EEServer.start(Unknown Source)
   at com.apusic.server.J2EEServer.startup(Unknown Source)
Caused by: org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: No suitable Log constructor [Ljava.lang.Class;@20ca8b for org.apache.commons.logging.impl.Log4JCategoryLog
   at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:532)
   at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:272)
   at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:246)
   at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:395)
   at org.apache.struts.util.MessageResources.(MessageResources.java:59)
   ... 32 more
Caused by: org.apache.commons.logging.LogConfigurationException: No suitable Log constructor [Ljava.lang.Class;@20ca8b for org.apache.commons.logging.impl.Log4JCategoryLog
   at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:432)
   at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:525)
   ... 36 more
Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/Category
   at java.lang.Class.getDeclaredConstructors0(Native Method)
   at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
   at java.lang.Class.getConstructor0(Unknown Source)
   at java.lang.Class.getConstructor(Unknown Source)
   at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:429)
   ... 37 more


引起此异常的原因是Apusic的system classloader中,已经加载了commons-logging类,而log4j的类是在下一级的servlet classloader中加载的,对system classloader加载的类来说不可见,因此报“java.lang.NoClassDefFoundError”。

解决的办法由多种,下面介绍常用的2种:

1. 将log4j的jar包加入到APUSIC_HOME/lib目录,并且在APUSIC_HOME/bin/startapusic.cmd(linux下是startapusic)中的java命令行中,通过添加 -Dlog4j.configuration=your_log4j_configuration_file指定log4j的配置文件。

2. 在APUSIC_HOME/bin/startapusic.cmd(linux下是startapusic)中的java命令行中,通过添加 -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger

分享到:
评论

相关推荐

    Apusic AS的Web应用中调用commons-logging的流程

    在Apusic AS中,这个特性使得系统能够根据配置文件灵活地选择日志实现,例如在生产环境使用性能优秀的Log4j,在开发环境中使用简单的JUL。 调用commons-logging的流程如下: 1. **引入依赖**:在Apusic AS的项目中...

    Apusic服务器解决数据源的资源引用

    ### Apusic服务器解决数据源的资源引用 #### 一、背景与概述 在现代软件开发过程中,特别是基于Java的企业级应用程序开发中,数据源管理是一个非常重要的环节。Apusic服务器作为一款高性能、高可用的应用服务器,...

    管理Apusic Web服务器

    Apusic Web 服务器是 Apusic 应用服务器中内置的一个高效、安全、可靠的 Web 服务器,提供完整的 Web 服务器的功能,使 Apusic 应用服务器在提供对静态页面和图形的同时,提供对 JSP、Servlet 的高效服务。Apusic ...

    apusic数据库连接攻略

    apusic数据库连接攻略是apusic文件中的一种数据库连接策略,apusic是一个国产中间件,由金蝶中国开发。该攻略主要用于在apusic文件中配置数据库连接,以便在应用程序中使用数据库资源。 1. 配置数据源 在apusic...

    Apusic密码修改指引

    - 定期使用这些工具进行系统检查,及时发现并解决潜在的安全问题。 通过上述详细介绍,我们可以了解到如何在Apusic系统中进行密码修改、安全设置以及如何排查和防御可能的木马攻击。这对于保障系统的稳定性和安全性...

    金蝶容器Apusic中重新部署war包

    4. **部署新WAR包**:上传完成后,需要在Apusic容器中部署新的WAR包。在控制台中,选择“部署”选项,然后选择你刚刚上传的WAR文件。在命令行环境下,可以使用`deployApp`命令,指定WAR文件的路径和应用的上下文路径...

    Windows2003+Apusic6.0安装部署手册

    Windows2003+Apusic6.0安装部署手册 本手册旨在指导用户在 Windows 2003 操作系统上安装和部署 Apusic 6.0,旨在帮助用户快速掌握安装和配置 Apusic 6.0 的步骤。 一、安装准备 在开始安装 Apusic 6.0 之前,需要...

    金蝶中间件Apusic-plugins.zip

    金蝶中间件Apusic-plugins.zip是一个包含了一系列与金蝶Apusic中间件相关的开发插件的压缩包,主要用于帮助开发者在Eclipse或MyEclipse环境中进行应用程序的调试和开发。Apusic中间件是金蝶公司推出的一款企业级应用...

    Apusic5.1域配置

    4. 设置域的存放路径,通常默认为 `/opt/apusic-5.1/domains`。 5. 输入域的名称,例如 `zhcx_clusterdomain`。 6. 指定监听地址为 `0.0.0.0`,意味着服务器将监听所有网络接口。 7. 设置Web服务端口,例如 `9896`,...

    金蝶Apusic应用服务器V6参考b手册b.doc

    金蝶Apusic应用服务器V6参考手册中对Classloader机制进行了详细的介绍,包括Classloader的基本概念、类装载的方式、Classloader的层次结构等。 Classloader的基本概念 Classloader是在JVM中运行期以父/子的层次...

    Apusic--license

    金蝶中间件(Apusic)--license

    EAS apusic5.0 许可

    描述中提到“许可到期时间2088年”,这是一个非常长期的授权,意味着用户可以在相当长的时间内无顾虑地使用Apusic5.0进行业务运营,无需担心因许可问题而中断服务。 Apusic5.0的核心功能可能包括但不限于以下几点:...

    金蝶Apusic V10 应用服务器用户管理手册

    同时,服务器还提供了日志管理、监控和性能调优等功能,帮助管理员及时发现和解决问题,保持系统的高效运行。 在分布式环境中,Apusic V10支持集群部署,通过负载均衡和故障转移机制,确保服务的高可用性。此外,其...

    EAS Apusic2016年的临时许可

    10. **文档和技术支持**:东方通科技通常会为EAS Apusic提供详细的用户手册、开发者指南以及在线技术支持,帮助用户快速上手和解决问题。 “license-5.1-2016”这个文件名可能指的是EAS Apusic 2016版本的一个许可...

    Apusic_license

    Apusic 7.0,2014,license,

    金蝶中间件Apusic MyEclipse10.x、MyEclipse9.x和Eclipse all-plugins

    2. 实时调试运行在Apusic应用服务器上的应用程序,快速定位和解决问题。 3. 集成Apusic的事务管理、性能监控等功能,提升开发效率。 4. 利用Apusic提供的JMS(Java Message Service)和MTS(Message Transfer ...

    apusic license2017测试许可到2088.docx

    - **权限问题**:确保在安装和使用测试许可的过程中拥有足够的权限,避免出现权限不足导致无法正确安装的情况。 - **兼容性问题**:检查软件版本是否与测试许可证兼容,以免出现不兼容导致的问题。 - **备份数据**:...

    金蝶王学军---基于Apusic的SOA解决方案

    在实际应用场景中,Apusic SOA解决方案可以应用于多种场景,例如保险业的Rate-Quote-Issue流程,或者将遗留应用、现有基础设施、包装应用程序、外包服务等IT资源转化为可提供服务的组件,满足不同角色和终端用户的...

    Apusic应用服务器6.0使用手册(CHM格式)

    金蝶Apusic应用服务器6.0是一款...本发行说明包含金蝶Apusic应用服务器6.0发行时的重要信息,主要包括新增加的功能、改进或增强的功能、已处理和解决的问题等。开始使用金蝶Apusic应用服务器6.0之前,请先阅读本文档。

Global site tag (gtag.js) - Google Analytics