应用部署到JBOSS上遇到的问题

原来应用在WAS7.0下,移植到JBOSS eap5.1.2下后,遇到了一些问题,特此记录:

1、数据源配置

     在was中,datasource中获取数据源名称时,直接写was中配置的数据源名称即可。而在jboss下,jndi的名称需要以java:+数据源名称开始。was下可以通过console去配置数据源,jboss中,将数据库驱动复制到%JBOSS_HOME%/server/default/lib/下,然后到JBoss的文档中寻找到数据源的配置模板,这个配置模板在docs/examples/jca目录下,在这目录下可以看到有各种数据库的配置模板,找到oracle的配置模板,oracle-ds.xml,将其复制到%JBOSS_HOME%/server/default/deploy/ 下。然后将数据库连接串、用户名、密码等写正确。

  数据源发布成功之后,我们就可以进入JBoss的管理控制台,http://localhost:8080/jmx-console/, 找到jboss.jca这个栏目,会找到很多name=itcastDS.service=....的东西,当这个数据源在jboss.jca这个栏目列出来的时候,就证明我们的发布是成功的。

2、web.xml配置

    在was7下,web.xml顶部必须有一个DOCTYPE声明,这个在jboss中不可以有,否则无法启动。

3、JVM配置

     jvm的默认的permsize只有4M,当应用中jar包和类比较多时,会出现OutOfMemory:PermSize的异常。 此时,需要在%JBOSS_HOME%/bin/run.conf下,最顶部添加如下jvm参数配置:

   set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

 4、出现head size异常

可以通过指定最大堆大小来解决此问题 即set JAVA_OPTS=-Xmx1024m

4、jboss-web.xml

   默认情况下,应用中的某些jar包也jboss中的jar包冲突。此时在web-inf下添加一个jboss-web.xml,即可正常启动,内容如下:

<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd"> 
<jboss-web> 
<class-loading java2ClassLoadingCompliance='true'> 
<loader-repository> 
com.example:archive=unique-archive-name 
<loader-repository-config> 
java2ParentDelegaton=true 
</loader-repository-config> 
</loader-repository> 
</class-loading> 
</jboss-web>

原文地址:https://www.cnblogs.com/zfswff/p/4775452.html