`

实验-jboss类加载

阅读更多

实验一:

      环境:jboss-4.2.3GA   jdk1.6

      应用结构: Jdom.ear

                          --library

                                --businessInterface.jar

                                --operationInterface.jar

                          --META-INF

                               --application.xml

                               --jboss-app.xml

                               --MANIFEST.MF

                          --Jdom.web.war

 

 包部署位置:

 

包名称 部署位置
UserInterface.jar、Jdom.ejb.jar  JBOSS_HOME/server/default/lib
Jdom.ear JBOSS_HOME/sever/default/deploy

 

 

说明:

        1、UserManagerMgr、TUser在UserInterface.jar包下。

        2、CmtCtrlMgr在library下的operationInterface.jar下。

        3、StaticClass在Jdom.ear下的Jdom.web.war包下。

 

运行过程:

        通过页面触发TestCastAction的valid方法,在这个方法里,会进行实例化UserManagerMgr、TUser、CmtCtrlMgr,同时将这几个类对应的加载类打印出来。

 

打印日志如下:

 

20:22:04,378 INFO  [STDOUT] managerMgr return cast::org.jboss.mx.loading.UnifiedClassLoader3@16f144c{ url=null ,addedOrder=2}
20:22:04,378 INFO  [STDOUT] action's TUser cast::org.jboss.mx.loading.UnifiedClassLoader3@16f144c{ url=null ,addedOrder=2}
20:22:04,378 INFO  [STDOUT] action's user cast::org.jboss.mx.loading.UnifiedClassLoader3@16f144c{ url=null ,addedOrder=2}
20:22:04,402 INFO  [STDOUT] action's cmtCtrlMgr cast::WebappClassLoader
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:
java.net.FactoryURLClassLoader@1242445
20:22:04,402 INFO  [STDOUT] action's CmtCtrlMgr cast::org.jboss.mx.loading.UnifiedClassLoader3@bc917c{ url=file:/usr/jboss/jboss/server/default/tmp/deploy/tmp6204233924756827378Jdom.ear ,addedOrder=50}

 

14:44:25,943 INFO  [STDOUT] action.util.StaticClass cast::WebappClassLoader
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:
java.net.FactoryURLClassLoader@1641c0

 

结论:

1、default/lib下的jar包与deploy下的jar包(包括ear里面的jar)都是由UnifiedClassLoader3加载,但是又不同的实例加载(根据日志,lib下的是UnifiedClassLoader3@16f144c,deploy下的是UnifiedClassLoader3@bc917c),这里可以解释之前的ClasscastException  A cannot cast to A的问题了,尽管路径、类的详细内容一致,但是由不同实例加载,这样肯定不能做转换的。

2、war包是由WebappClassLoader加载的,同时,war包能够访问到由UnifiedClassLoader3加载的类。

 

问题:

1、CmtCtrlMgr的引用cmtCtrlMgr为什么是由 UnifiedClassLoader3加载的呢?

2、

 

 

 

相关测试的结论:
1、同一个ear下的jar包都是用
UnifiedClassLoader3的同一个实例来加载的。

2、貌似普通的javabean不能同时存在于lib下和deploy下?如果同时存在,报错:java.lang.LinkageError: loader constraint violation: loader (instance of org/jboss/web/tomcat/service/WebAppClassLoader) previously initiated loading for a different type with name "a/c/Operate"。

分享到:
评论

相关推荐

    Jboss7快速入门手册.pdf

    - **轻量级架构**:采用模块化设计,减少了不必要的组件加载,提升了启动速度。 - **优化的资源管理**:改进了内存管理机制,降低了内存占用,提高了运行效率。 - **高效的服务模型**:引入了新的服务模型,简化了...

    j2ee实验设计1第一个Java EE Web应用

    - **Servlet生命周期**:包括加载、实例化、初始化、服务、销毁等阶段。 - **Servlet请求和响应**:Servlet通过`service()`方法处理客户端请求,使用HttpServletRequest和HttpServletResponse对象来获取和设置响应...

    JBOSS7配置及管理员手册

    JBossAS7的快速主要归功于其微内核架构,这种架构允许应用服务器按需加载组件和服务,而非启动时全部加载,从而显著减少了启动时间和内存占用。 ### JBossAS7中的新概念——域 **域(Domain)**是一种管理多个服务器...

    JBoss7配置指南及管理员手册

    ##### 3.2 实验 - **准备工作**:在进行域的配置之前,需要准备两台服务器作为Master和Slave。 - **配置**:包括在Master服务器上的`domain.xml`和`host.xml`配置文件的编辑,在Slave服务器上的相同配置文件的编辑。...

    fuseLdapAuthentcation:使用docker进行的Jboss Fuse Ldap身份验证实验室

    Jboss Fuse Ldap认证实验室重要信息:在启动以下脚本之前,您需要自己构建保险丝映像,请参阅 sh fuseLdap.sh 这是一个简单的脚本,可以为您运行3个docker映像: 带有预加载的用户/组数据的OpenLdap:valdar / ...

    java web 实验

    10. **Web容器和应用服务器**: Tomcat、Jetty等是常见的Java Web容器,它们负责加载和运行Servlet。而应用服务器如WebLogic、JBoss等则提供更全面的企业级服务,如EJB支持、JMS等。 在"java web"这个实验项目中,...

    AOP面向切面编程总结

    - **AspectJ**:最强大的AOP框架之一,支持编译期、类加载期和运行期织入。 - **JBoss AOP**:JBoss平台提供的AOP实现,主要用于企业级应用。 - **Spring AOP**:Spring框架内置的AOP支持,基于代理模式实现。 ####...

    javassist 3.23.1版本

    2. **代码注入**:Javaassist 提供了API,使得在运行时向已加载的类中注入代码成为可能。这对于实现诸如事务管理、安全控制等跨切面关注点特别有效。开发者可以通过CtClass的`insertBefore()`、`insertAfter()`和`...

    javaexec.zip

    3. 反弹shell部分更完美,不再加载远程war包,直接发包完成反弹。 4. jboss回显执行命令部分利用异常抛出机制,本地(4.2.3.GA)测试成功,其他版本请自测 5. 体积更小,不再依赖java环境,但程序采用.net编写,需要...

    simple-drools:Drools 中的一些实验

    【标题】"simple-drools:Drools 中的一些实验"主要涵盖了使用Drools这一规则引擎进行编程的实践内容。Drools是JBOSS的一个开源项目,它提供了一个强大的业务规则管理系统,允许开发者用Java编写规则并进行执行。这个...

    J2EE手机管理系统

    更高级的企业级服务器,如WebLogic、JBoss,还提供了EJB容器,支持更复杂的业务组件。 6. 安全性与权限管理: J2EE手机管理系统可能包含用户认证和授权功能,例如使用Servlet过滤器实现登录验证,或者通过角色权限...

Global site tag (gtag.js) - Google Analytics