1.将数据源需要的jar包放到jbosshome\server\default\lib下,copy数据源配置文件到部署目录jbosshome\server\default\deploy.
2.将需要的第三方jar包放到jbosshome\server\default\lib下.
3.将项目产生的jar包或war包部署到jbosshome\server\default\deploy目录。
在jboss7中当我们以旧的方式部署项目或者将低版本中的项目转移到jboss7中,通常抛出以下异常信息
ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC00001: Failed to start service jboss.deployment.unit."<ear_name>.ear".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."<ear_name>.ear".INSTALL: Failed to process phase INSTALL of deployment "<ear_name>.ear" at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:121) at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765) at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_23] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_23] at java.lang.Thread.run(Thread.java:662) [:1.6.0_23] Caused by: java.lang.RuntimeException: Error getting reflective information for class <my_class_name> at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70) at org.jboss.as.ee.component.EEModuleClassDescription$DefaultConfigurator.configure(EEModuleClassDescription.java:144) at org.jboss.as.ee.component.EEClassConfigurationProcessor.processClasses(EEClassConfigurationProcessor.java:133) at org.jboss.as.ee.component.EEClassConfigurationProcessor.deploy(EEClassConfigurationProcessor.java:76) at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:115) ... 5 more
在jboss7中以模块化方式部署,在同一个项目中生成的若干个jar包部署到jboss中以不同类加载器加载,而传统的方式所有的class文件都由一个类加载器完成。这样就造成了如果在项目中一个jar包中的类引用了另一个jar包中的类,以传统的方式部署到jboss7中就会抛出NoClassDefFoundError 或者ClassNotFoundException。
1.如果是web项目将引用的jar包放到项目的lib文件下,然后部署到jboss中,这样整个war包统一以一个类加载器加载项目中的所有class文件。
2.如果是java项目,将相应的jar包以模块的方式部署到jboss中,并在模块中配置相应的模块依赖关系。
<module xmlns="urn:jboss:module:1.1" name="com.oracle"> <properties> <property name="jboss.api" value="public"/> </properties> <resources> <resource-root path="ojdbc14-10.2.0.4.0.jar"/> <!-- Insert resources here --> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> <module name="javax.servlet.api" optional="true"/> </dependencies> </module>
3如果是ejb项目则部署时
a、通过配置jboss-deployment-structuer.xml,配置模块之间的依赖关系
b、在程序中通过maven将依赖关系配置到manifest.mf文件中
Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Built-By: zx Created-By: Apache Maven 3.2.3 Build-Jdk: 1.8.0_25 Dependencies: org.apache.log4j
传统运行一个java应用的方法是使用常用的classpath机制。它会创建一个application的类加载器,并且所有相关jar文件资源提供的class联系汇聚到一起成为一个大块。
可以想象如果有一个很大很复杂的应用,包含很多的Jar文件,并且有些jar在所有的时候都不会使用,或者有些jar因为冲突的依赖关系会有几个不同的版本。这些问题我们习惯性的称之为"JAR Hell".
模块可以极大的缓解这个问题。如果所有的jar都打包成为模块,一个jar再也不会看到依赖里一个冲突版本的类,或者加载到一个根本不需要加载的资源。同时,如果一个模块用到才被加载能够极大的提高大型应用的启动时间。但是模块化加载需要我们以新的方式去开发、部署项目。
原文地址:http://blog.csdn.net/leimengyuanlian/article/details/41622813