今天在做项目的时候,来了个奇怪的异常,具体异常如下:
java.lang.LinkageError: loader constraint violation:
google了一会发现原来是jboss的类加载器的问题。因为同一个类被不同的类加载器所加载导致的,所以要按照一下步骤来修改几个配置文件就OK了。
First, edit the conf/jboss-service.xml file and set the NamingService CallByValue to true:
<mbean code="org.jboss.naming.NamingService"
name="jboss:service=Naming">
<!-- The call by value mode. true if all lookups are unmarshalled using
the caller's TCL, false if in VM lookups return the value by reference.
-->
<attribute name="CallByValue">true</attribute>
...
</mbean>
Second, edit the deploy/ear-deployer.xml file and set the Isolated and CallByValue attributes to true:
<server>
<!-- EAR deployer, remove if you are not using ear deployments -->
<mbean code="org.jboss.deployment.EARDeployer"
name="jboss.j2ee:service=EARDeployer">
<!-- A flag indicating if ear deployments should have their own scoped
class loader to isolate their classes from other deployments.
-->
<attribute name="Isolated">true</attribute>
<!-- A flag indicating if the ear components should have in VM call
optimization disabled.
-->
<attribute name="CallByValue">true</attribute>
</mbean>
</server>
Last, edit the deploy/jbossweb-tomcat50.sar/META-INF/jboss-service.xml file and set the Java2ClassLoadingCompliance and UseJBossWebLoader attributes to false:
<server>
<mbean code="org.jboss.web.tomcat.tc5.Tomcat5"
name="jboss.web:service=WebServer">
<!-- Get the flag indicating if the normal Java2 parent first class
loading model should be used over the servlet 2.3 web container first
model.
-->
<attribute name="Java2ClassLoadingCompliance">false</attribute>
<attribute name="LenientEjbLink">true</attribute>
<!-- A flag indicating if the JBoss Loader should be used. This loader
uses a unified class loader as the class loader rather than the tomcat
specific class loader.
-->
<attribute name="UseJBossWebLoader">false</attribute>
...
注意:如果是在jboss-4.2.1.GA下,第三步可以不用改了,默认就是false.
分享到:
相关推荐
这本书深入探讨了JBoss 4.x与J2EE 1.4规范的集成,以及如何利用这一框架来构建高效、可扩展的企业级解决方案。 J2EE(Java 2 Platform, Enterprise Edition)1.4是Oracle公司推出的一套用于开发和部署多层分布式...
1. **J2EE兼容性**:JBoss 4.0.2遵循J2EE 1.4规范,提供了对EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JTA(Java Transaction API)等核心服务的支持,为开发者构建企业级应用提供了坚实的基础。...
《JBoss中文文档 CSDN资源下载》是针对JBoss应用程序服务器的一份详细教程,旨在帮助用户快速掌握如何在JBoss 4.0.x版本上部署和运行基于J2EE 1.4的应用程序。这份文档是中文版,对于国内的开发者来说,无疑提供了...
当在MyEclipse中创建使用J2EE 1.4标准的Web项目时,会因Servlet版本不匹配导致部署失败。J2EE 1.4使用Servlet 2.4规范,这在`web.xml`部署描述符中有所体现。因此,如果在Tomcat或JBoss上能正常运行的JSP程序在...
标题与描述概述的知识点主要围绕JBoss 4.0这一版本的应用服务器,特别是其作为一本中文的详尽教程,旨在帮助读者深入理解JBoss 4.0及其在J2EE 1.4环境下的应用。以下是对这些知识点的详细解析: ### JBoss 4.0简介 ...
J2EE 1.4是当时最新的版本,现在已经被Java EE(Enterprise Edition)替代,并发展到了更高的版本,如Java EE 8。主流的应用服务器包括IBM WebSphere Application Server、BEA WebLogic Server、JBoss、Oracle ...
在使用【JBoss 5.0及更高版本】进行Web服务开发时,可能会遇到与早期版本不兼容的问题。【描述】中提到的四个jar文件——`jboss-jaxws.jar`、`jboss-jaxws-ext.jar`、`jboss-jaxrpc.jar`和`jboss-saaj.jar`,都是...
- **JBoss 4.x**:支持JDK 1.4及以上版本。 - **JBoss 5.x**:建议使用JDK 1.5及以上版本。 #### 三、JDK安装配置步骤 1. **JDK选择**:根据JBoss版本选择合适的JDK版本。例如,如果使用的是JBoss 5.x,则应该选择...
### 深入浅出JBoss Seam:整合与强化Java EE框架 #### 一、引言 JBoss Seam是一款基于Java EE 5.0的轻量级框架,它旨在简化企业级Web应用的开发过程,并增强应用的可扩展性和开发者的生产力。本文将详细介绍JBoss ...
Seam可以在任何Java EE 5.0服务器上部署,甚至可以兼容J2EE 1.4平台。 通过Seam,开发者能够构建更为简洁的概念模型,减少样板代码,提高应用程序的可维护性和可扩展性。Seam提供的JSF组件标签和注解增强了Web友好...
J2EE 1.4引入了Servlet 2.4规范,导致在使用J2EE 1.4标准创建的Web项目中,web.xml部署描述符的DTD引用会与WebLogic 8的期望格式不符,从而引发部署异常。 2. **JDK版本兼容性**: - WebLogic 8不支持JDK 1.5,...
**J2EE初学者需要理解的问题** J2EE(Java 2 Platform, Enterprise Edition)是Sun Microsystems(后来被Oracle收购)推出的企业级应用平台,基于Java技术,旨在提供一套规范和标准,以便开发、部署和管理分布式...
### jBoss + Tomcat 学习笔记大全及帮助文档概览...以上内容涵盖了 jBoss + Tomcat 的基本安装、配置、EJB 示例开发与部署以及常见问题解决方法等关键知识点。希望对正在学习或使用 jBoss 和 Tomcat 的开发者有所帮助。