我想了解应用程序JBoss应用程序服务器中的 parent-last 加载。我们在JBoss 4.2.1 GA中部署了遗留应用程序。我们正在尝试父母最后一次加载。
我指的是link。 我想学习父母最后一次加载。所以用maven-jar-plugin和配置创建了简单的maven jar包应用程序 - > addDefaultImplementationEntries = true。我从同一个jar创建maven应用程序创建了2个jar版本1.0.0和1.0.1。 jar有单个类TestClass和一个简单的String返回方法,它返回从中加载类的jar版本。 我想体验使用java2ClassLoadingCompliance 。我已经在服务器/ deploy / MyApplication / WEB-INF / lib中打包了1.0.0版本的jar(我的Web应用程序是一个简单的servlet应用程序,它调用类的方法,从而打印从中调用jar的版本号。)和server / lib中的1.0.1版jar。
注意 :逻辑上,在应用程序中使用旧版本的jar并使用服务器库中存在的较新版本覆盖它是没有意义的,但是只想体验课程加载。
我试过以下
应用程序库中的所有时间类都将被应用程序加载。
我的jboss-web.xml看起来像reference
<jboss-web>
<class-loading java2ClassLoadingCompliance="true">
<loader-repository>
com.example:archive=JBossClassLoadingTestServlet-0.0.1-SNAPSHOT.ear
<loader-repository-config>java2ParentDelegation=true</loader-repository-config>
</loader-repository>
</class-loading>
</jboss-web>
有人可以帮我理解JBoss中的父级最后配置吗?我在这里做的错误总是来自应用程序lib的类被加载?
答案 0 :(得分:0)
我担心您的链接与您的实验无关。它与EAR部署有关,其中存在多模块部署,需要多个版本的lib才能隔离。
在您的情况下,您只需在一个Jar中覆盖lib。
以下内容来自Servlet Spec:
还建议实现应用程序类加载器 WAR中打包的类和资源优先加载 驻留在容器范围的库JAR中的类和资源。
因此,JBoss遵循规范,它总是首先加载应用程序库。
我没有找到这样的旧版本doc,但它应该与AS7类似:
按优先级最高的顺序排列
- 系统依赖关系 - 这些是容器自动添加到模块的依赖关系,包括Java EE API。
- 用户依赖关系 - 这些是通过JBoss-deployment-structure.xml或通过Dependencies:manifest条目添加的依赖关系。
- 本地资源 - 在部署本身内打包的类文件,例如来自WEB-INF / classes或战争的WEB-INF / lib的类文件。
- 部署间依赖关系 - 这些依赖于ear部署中的其他部署。这可以包括ear的lib目录中的类,或者其他EJB jar中定义的类。
醇>
相关: