`

websphere调整类加载顺序的真正效果

阅读更多

问题很小,但是也很容易忽略。正如之前反反复复在websphere里设置应用的类加载顺序的时候,从来没去想这个调整真正改变了什么。

 

1. java的类加载器:


JAVA类加载器分为3层——引导加载器、扩展加载器、应用程序加载器,类加载遵循"父委托模式".

引导加载器(Bootstrap):  加载<JAVA_HOME>/jre/lib 下的vm.jar,core.jar等核心

扩展加载器(Extensions):   加载<JAVA_HOME>/jre/lib/ext  或者通过java.ext.dirs 这个系统属性指定的路径下的代码

应用程序加载器(Application):  加载java.class.path下的代码(就是我们程序及程序依赖的第三方类) 

 

2. websphere类加载模型



 JVM ClassLoader层(包含上述的JAVA 3个层次的类加载器)——>WebSphere Extensions Classloader——>WebSphere "server" Class loader——>Application Classloader(包含有Application Module Classloader和Web Module ClassLoader.这2个类加载器上可以设置类加载顺序)

 

3.默认类加载顺序(父类优先)

Websphere采用的是父类优先的类加载顺序。通过websphere控制台——故障诊断——类装入器查看器 我们可以看到一个应用在websphere上部署完成启动后真正形成的类加载层次:



 如图,类加载层次是:

JDK扩展装入器(也就是java类加载器中的扩展加载器(Extensions))——应用程序装入器应用程序加载器(Application)——OSGI(was6.1新特性)装入、引导程序、类保护器——组合类装入器——组合类装入器

 

4.改变类加载顺序(应用程序优先)

这里是关键。我一直认为改变WAS中的类加载顺序,调整的是WAS扩展出来的那些类加载层次:也就是上面的“OSGI(was6.1新特性)装入、引导程序、类保护器——组合类装入器——组合类装入器”顺序的改变。

实际情况是:



 可以看到,事实上的情况是,改变了类加载顺序之后,最低级的2个类加载器竟然排到了扩展加载器(Extensions)之上,仅在引导加载器(Bootstrap)之后,也就是说:

 

“应用程序优先”的类加载顺序的结果是:

引导加载器(Bootstrap)——原来最低级的web和module加载器——扩展加载器(Extensions)——应用程序加载器(Application)——was扩展classloader、WAS应用程序类加载器

 

5.额外的:

websphere能把类加载器提高到这么高的层次,不知道是否是因为websphere6.1使用的JDK是IBM自己实现的而不是使用sun的JDK呢?

  • 大小: 18.7 KB
  • 大小: 27.3 KB
  • 大小: 63.1 KB
  • 大小: 59.3 KB
0
0
分享到:
评论

相关推荐

    websphere6,7上修改类装载顺序为应用程序优先

    WebSphere应用服务器默认的类加载顺序是先从系统类加载器(System ClassLoader)开始,然后是扩展类加载器(Extension ClassLoader),最后是应用程序类加载器(Application ClassLoader)。这种机制可能导致应用中...

    按步骤详细说明was(application WebSphere server)服务器对cas证书生成、SSL配置、类加载、数据源配置、部署等操作.doc

    - 可以通过 WebSphere 控制台或配置文件来调整类加载策略。 #### 六、部署应用 - 应用的部署通常包括以下步骤: 1. **打包应用程序**:将应用代码及其依赖项打包成 WAR 或 EAR 文件。 2. **上传应用程序**:将...

    WebSphere Application Server V7 理解类装入器 中文翻译版

    WebSphere提供了丰富的配置选项来调整类装入器的行为,包括但不限于: - **应用服务器类装入器策略**:允许管理员选择不同的类装入器策略,如“父优先”或“子优先”,以控制类的加载顺序。 - **类加载/委托模式**...

    WebSphere7.0_上部署struts2_找不到用于处理_JSP_的扩展处理器

    - **调整WebSphere类加载顺序**:WebSphere的类加载策略可能会影响JSP处理器的初始化。可以尝试调整WebSphere的类加载顺序,例如设置`parentLast`模式,让应用类加载器优先于全局类加载器加载类。 - **应用特定...

    在WebSphere发布CXF注意事项

    可以通过WebSphere的管理控制台调整类加载顺序,例如设置“parent last”策略,让WebSphere优先使用应用的类。 2. **WebSphere部署描述符配置**:在`web.xml`中配置CXF的Servlet,指定服务处理端点。例如: ```xml...

    Log4j WebSphere V7 配置说明

    在"类加载和更新检测"部分,你需要调整类加载的顺序和策略。具体操作如下: - 选择"类加载器顺序",并确保设置为"类已装入并且是先使用本地类加载器(父类最后)"。这意味着WebSphere会优先使用应用程序自身的类...

    RAD类加载器序列

    在某些情况下,为了确保最新的类优先被加载,需要对类加载器的策略进行调整。本文将详细介绍如何在Rational Application Developer (RAD)环境中设置类加载器策略,以及在WAS服务器端进行相应的配置。 #### 二、类...

    websphere下部署CXF项目jar包冲突问题解决方式

    5. **设置类加载顺序**:为了确保应用的类优先于服务器的类加载,可能需要调整服务的类加载方式。这通常可以在服务的“类装入器”设置中完成,确保“父最后”策略被启用,这意味着应用的类加载器将在服务器类加载器...

    解决网上应用厅部署在was上jar包冲突问题

    通过调整类加载顺序为“类已载入并且先使用本地类装入器(父类最后)”,可以确保应用优先使用自身WAR包中的JAR包,从而避免版本冲突问题。 #### 扩展阅读 - **类加载机制**:深入了解Java的类加载机制对于理解和...

    websphere portal

    ### IBM WebSphere Portal 主题与皮肤开发教程概览 #### 一、初级入门:PORTAL的主题与皮肤开发 本章节将介绍如何进行WebSphere Portal的基本主题与皮肤开发,包括一些核心文件的理解和编辑。 1. **Default.jsp**...

    WebSphere应用部署手册

    手册可能还会讲解如何处理依赖库、类加载器顺序,以及如何配置数据源和JMS资源。 此外,手册可能包含了应用程序的更新和扩展内容。当需要升级应用或添加新功能时,如何在不影响现有服务的情况下进行热部署,以及...

    WebSphere Application Server下Struts2.0无法使用解决方案

    确认应用的类加载顺序是否正确,避免类加载冲突。 9. **社区支持和官方文档**: 如果问题仍然存在,可以查阅Apache Struts和IBM WebSphere的官方文档,以及相关的开发者论坛寻求帮助,那里可能会有类似问题的解决...

    JSF2.0 + PrimeFaces在websphere7.0上的部署安装

    - **类装入器顺序**:确认Websphere的类装入顺序符合预期,以避免版本冲突和类加载问题。 - **共享库引用**:确保应用服务器配置正确引用了共享库。 - **类路径一致性**:虽然我们使用了共享库,但为了兼容性,还...

    WebSphere入门教程

    部署时,需要注意类加载器顺序、安全性和资源访问权限。 六、WebSphere与Java EE WebSphere完全支持Java EE规范,包括JDBC、JPA、JSF、JMS等。开发者可以利用这些标准API构建分布式、事务处理的业务应用程序。 七...

    WebSphere Application Server Network Deployment 7 集群安装部署步骤

    确保应用程序设置正确,包括类加载器顺序、安全性、资源引用等。 七、配置负载均衡和故障转移 在集群配置中,设置负载均衡策略,如轮询、基于权重的分配等。启用故障转移功能,确保当集群内的某个服务器出现故障时...

    WebSphere项目部署.pdf

    **调整启动权重**:启动权重决定应用在服务器启动时的加载顺序。设置较高的权重(如15000),可以使关键的应用优先启动,确保核心服务的及时可用。 以上步骤涵盖了WebSphere项目部署的基本流程,但实际部署可能还...

    WAS+V7+理解类装入器-红皮书.pdf

    这些类装载器设计用于解决Java EE应用中常见的类冲突问题,提供灵活的配置选项,使开发者可以根据应用的具体需求来调整类的装载顺序和来源。 **WebSphere扩展类装载器** WebSphere扩展类装载器是一种特殊的类装载器...

    CXF support WAS Weblogic

    解决方法是确保所有依赖库版本一致,并且正确配置了类加载顺序。 #### 总结 Apache CXF提供了强大的支持以实现在多种应用服务器上的部署,包括WebSphere Application Server、WebLogic Server和JBoss Application ...

    was应用配置

    - **调整类加载顺序:**根据应用的需求调整类加载顺序。 - **重启服务:** - 停止服务:`./stopServer server1` - 启动服务:`./startServer server1` 至此,应用已经在WAS中成功配置并启动。为了方便监控和...

Global site tag (gtag.js) - Google Analytics