应用部署到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>