JBoss4.0.2的配置
一、下载与安装JBoss
系统环境:WindowXp系统
在本文中,我们下载的JBoss版本为:4.0.2.GA。
下载地址:redhat官网
http://www.jboss.org/jbossas/downloads
在如上的下载页中下载JBoss-4.0.2.GA.zip文件。
下载完成后,将其解压缩后即可完成安装,解压缩后将其放置到一个不带空格的目录(若
目录带有空格,例如:D:??ProgramFiles,日后可能会产生一些莫名的错误)例如:
E:"JBoss4.2.1。
同时在“我的电脑->属性->高级->环境变量->系统变量->创建->新建系统变量”中设置
名为JBOSS_HOME的环境变量,值为JBoss的安装路径(不区分大小写),如下图所示:
在此,JBoss的安装工作已经结束,可通过如下方式测试安装是否成功:
运行JBoss安装目录"bin"run.bat,如果窗口中没有出现异常,且出现
截屏中最后一行出现:2012-07-1215:36:34,625INFO[Server]JBoss(MXMicroKernel)
[4.0.2(build:CVSTag=JBoss_4_0_2date=200505022023)]Startedin14s:704ms字样,
则表示安装成功。
我们可以通过访问:http://localhost:8080/进入JBoss的欢迎界面,点击JBoss
Management下的JMXConsole可进入JBoss的控制台。
注:Java(TM)控制面板没安装好的话或其他原因都会导致Jboss的左侧控制台console无法正常显示
【foxfire可以使用】。
若启动失败,可能由以下原因引起:
1)JBoss所用的端口(8080,1099,1098,8083等)被占用。一般情况下为8080端口被占
用(例如,Oracle占用了8080端口),此时需要修改JBoss的端口,方法为进入JBoss安
装目录"server"default"deploy"jboss-web.deployer目录,修改其下的server.xml目录,在此
文件中搜索8080,将其改成你想要的端口即可(例如8088);
2)JDK安装不正确;
3)JBoss下载不完全(官网应该没错)。
二、JBoss的目录结构说明
目录描述
bin启动和关闭JBoss的脚本(run.bat为windows系统下的启动
脚本,shutdown.bat为windows系统下的关闭脚本)。
client客户端与JBoss通信所需的Java库(JARs)。
docs配置的样本文件(数据库配置等)。
docs/dtd在JBoss中使用的各种XML文件的DTD。
lib一些JAR,JBoss启动时加载,且被所有JBoss配置共享。(不
要把你的库放在这里)
server各种JBoss配置。每个配置必须放在不同的子目录。子目录的名字表
示配置的名字。JBoss包含3个默认的配
置:minimial,default和all,在你安装时可以进行选择。
server/allJBoss的完全配置,启动所有服务,包括集群和IIOP。
server/defaultJBoss的默认配置。在没有在JBoss命令行中指定配置名称时使
用。(我们下载的4.2.1版本默认采用此配置)。
server/default/confJBoss的配置文件。
server/default/dataJBoss的数据库文件。比如,嵌入的数据库,或者JBossMQ
server/default
/deploy
JBoss的热部署目录。放到这里的任何文件或目录会被JBoss自动部
署。EJB、WAR、EAR,甚至服务。
server/default/lib一些JAR,JBoss在启动特定配置时加载他
们。(default和minimial配置也包含这个和下面两个目录。)
server/default/logJBoss的日志文件。
server/default/tmpJBoss的临时文件。
server/default/tmpTomcat编译JSP文件时的工作目录
server/minimal仅加载启动JBoss所需的最少服务,如日志服务、JNDI和URL部署扫
描器(发现新的部署),不包含Web容器、EJB和JMS。
注:server/default/下目录data、log、tmp和work在JBoss安装后并不存在,当JBoss运行时
自动建立。
三、JBoss的配置
1.日志文件设置
若需要修改JBoss默认的log4j设置,可修改JBoss安装目录"server"default"conf下的log4j.xml文件,
在该文件中可以看到,log4j的日志输出在JBoss安装目录"server"default"log下的server.log文件中。对
于log4j的设置,读者可以在网上搜索更加详细的信息。
`
Jboss的log4j是用于记录Jboss系统服务日志的,如果你想把你的web工程日志和Jboss系统服务
日志分开或者是直接使用你web工程的log4j.properties配置文件,方法如下(主要是使用自己的web工
程的log4j.properties配置文件)
1.1把D:\jboss-4.0.2\server\default\conf里面的log4j.xml改名为jboss-log4j.xml
1.2编辑D:\jboss-4.0.5.GA\server\default\conf里面的jboss-service.xml找到
name="jboss.system:type=Log4jService,service=Logging"
xmbean-dd="resource:xmdesc/Log4jService-xmbean.xml">
resource:log4j.xml
true
60
把resource:log4j.xml改为resource:jboss-log4j.xml
1.3在自己的应用程序的WEB-INF目录中添加一个jboss-web.xml内容如下
ConfigTest:loader=ConfigTest.war
java2ParentDelegation=false
1.4把log4j.jar加到build-path(WEB-INFO/lib)下
1.5在自己的应用程序的WEB-INF目录中添加一个log4j.properties
#SetrootcategoryprioritytoINFOanditsonlyappendertoCONSOLE.
log4j.rootCategory=INFO,CONSOLE,LOGFILE
#SettheenterpriseloggercategorytoFATALanditsonlyappender
toCONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL,CONSOLE
#CONSOLEissettobeaConsoleAppenderusingaPatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d[%l]%n[%p]
-%m%n
#LOGFILEissettobeaFileappenderusingaPatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOGFILE.File=D\:\\zxtwskp\\logs\\ahwskp.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.Threshold=INFO
log4j.appender.LOGFILE.DatePattern=yyyyMMdd
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%-d{yyyy-MM-dd
HH:mm:ss}%p%t%c-%m%n
1.6使D:\JBoss-4.0.2\server\default\deploy\ahwskp.war下的程序使用自己配置的log4j.properties
配置文件
name="jboss.system:type=Log4jService,service=Logging"
xmbean-dd="resource:xmdesc/Log4jService-xmbean.xml">
resource:jboss-log4j.xml
true
60
false(Jboss中的log4j不记录工程中的
system.out日志)
这样配置后,工程中的systemout日志会通过web工程中的log4j打印出来(file,console)中显示出
来。
但是大部分内容还是通过Jboss中的log4j来记录的,web工程中的日志并没有全部使用了自己的log4j
需要再次研究
2.web服务的端口号的修改
这点在前文中有所提及,即修改JBoss安装目录"server"default"deploy"jboss-web.deployer下的
server.xml文件,内容如下:
maxThreads="250"maxHttpHeaderSize="8192"
emptySessionPath="true"protocol="HTTP/1.1"
enableLookups="false"redirectPort="8443"acceptCount="100"
connectionTimeout="20000"disableUploadTimeout="true"/>
将上面的8080端口修改为你想要的端口即可。重新启动JBoss后访问:http://localhost/:新设置的端
口,可看到JBoss的欢迎界面。
3.JBoss的安全设置
1)jmx-console登录的用户名和密码设置
默认情况访问http://localhost:8080/jmx-console就可以浏览jboss的部署管理的一些信息,不需要
输入用户名和密码,使用起来有点安全隐患。下面我们针对此问题对jboss进行配置,使得访问jmx-console
也必须要知道用户名和密码才可进去访问。步骤如下:
i)找到JBoss安装目录/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml文件,去掉
java:/jaas/jmx-console的注释。修改后的该文件内容为:
java:/jaas/jmx-console
ii)修改与i)中的jboss-web.xml同级目录下的web.xml文件,查找到节点,
去掉它的注释,修改后该部分内容为:
HtmlAdaptor
Anexamplesecurityconfigthatonlyallowsuserswiththe
roleJBossAdmintoaccesstheHTMLJMXconsolewebapplication
/
GET
POST
JBossAdmin
在此处可以看出,为登录配置了角色JBossAdmin。
iii)在第一步中的jmx-console安全域和第二步中的运行角色JBossAdmin都是在
login-config.xml中配置,我们在JBoss安装目录/server/default/config下找到它。查找名字为:
jmx-console的application-policy:
flag="required">
name="usersProperties">props/jmx-console-users.properties
props/jmx-console-roles.properties
在此处可以看出,登录的角色、用户等的信息分别在props目录下的jmx-console-roles.properties和
jmx-console-users.properties文件中设置,分别打开这两个文件。
其中jmx-console-users.properties文件的内容如下:
#Asampleusers.propertiesfileforusewiththeUsersRolesLoginModule
admin=admin
该文件定义的格式为:用户名=密码,在该文件中,默认定义了一个用户名为admin,密码也为admin
的用户,读者可将其改成所需的用户名和密码。
jmx-console-roles.properties的内容如下:
#Asampleroles.propertiesfileforusewiththeUsersRolesLoginModule
admin=JBossAdmin,HttpInvoker
该文件定义的格式为:用户名=角色,多个角色以“,”隔开,该文件默认为admin用户定义了JBossAdmin
和HttpInvoker这两个角色。
配置完成后读者可以通过访问:http://localhost:8088/jmx-console/,输入
jmx-console-roles.properties文件中定义的用户名和密码,访问jmx-console的页面。
2)web-console登录的用户名和密码设置
默认情况下,用户访问JBoss的web-console时,不需要输入用户名和密码,为了安全起见,我们通
过修改配置来为其加上用户名和密码。步骤如下:
i)找到JBoss安装目录
"server"default"deploy"management"console-mgr.sar"web-console.war"WEB-INF"jboss-web.xml文件,
去掉java:/jaas/web-console的注释,修改后的文件内容为:
PUBLIC"-//JBoss//DTDWebApplication2.3V2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd">
java:/jaas/web-console
jboss.admin:service=PluginManager
ii)打开i)中jboss-web.xml同目录下的web.xml文件,去掉部分的注释,修
改后的该部分内容为:
HtmlAdaptor
Anexamplesecurityconfigthatonlyallowsuserswiththe
roleJBossAdmintoaccesstheHTMLJMXconsolewebapplication
/
GET
POST
JBossAdmin
iii)打开JBoss安装目录"server"default"conf下的login-config.xml文件,搜索web-console,可找到
如下内容:
flag="required">
name="usersProperties">web-console-users.properties
web-console-roles.properties
在文件中可以看到,设置登录web-console的用户名和角色等信息分别在login-config.xml文件所在
目录下的web-console-users.properties和web-console-roles.properties文件中,但因为该目录下无这两个
文件,我们在JBoss安装目录"server"default"conf"props目录下建立这两个文件,文件内容可参考在
“jmx-console登录的用户名和密码设置”中的两个相应的配置文件的内容,web-console-users.properties
文件的内容如下:
#Asampleusers.propertiesfileforusewiththeUsersRolesLoginModule
admin=admin
web-console-roles.properties文件的内容如下:
#Asampleroles.propertiesfileforusewiththeUsersRolesLoginModule
admin=JBossAdmin,HttpInvoker
因为此时这两个文件不与login-config.xml同目录,所以login-config.xml文件需进行少许修改,修改
后的元素的内容为:
flag="required">
name="usersProperties">props/web-console-users.properties
name="rolesProperties">props/web-console-roles.properties
四、在MyEclipse中配置JBoss
1.本人使用的MyEclipse版本:8.5GA
2.JBoss版本:4.0.2GA
3.JDK版本:1.4
4.进入Window->Preferences->MyEclipse->ApplicationServers->JBoss4,进行如下设置:
5.选择JBoss4下的JDK设置所用的JDK.
6.选择服务开启模式
7.设置完成后,部署程序时,会发现多出JBoss4部署的选择,如下图所示:
同时在中展开,可看到JBoss4的启动图标。
五、配置数据源
1.先配置login-config.xml
D:\JBoss-4.0.2\server\default\conf\login-config.xml
在最后之前加上下面语句
code="org.jboss.resource.security.ConfiguredIdentityLoginModule"
flag="required">
name="principal">TaxSoftPool
zxt_wp
zxt_wp
name="managedConnectionFactoryName">jboss.jca:service=Loca
lTxCM,name=TaxSoftPool
2.以下三步及三步之后发生异常解决的方法
2.1配置数据源
jboss下配置JNDI数据源
1、${jboss_home}\server\default\deploy下面建立oracle-ds.xml:
TaxSoftPool
jdbc:oracle:thin:@192.168.13.24:1521:t
estdb
oracle.jdbc.driver.OracleDriver class>
zxt_wp
zxt_wp
5
20
org.jboss.resource.adapter.jdbc.
vendor.OracleExceptionSorter
Oracle9i
2、应用程序的WEB-INF下面建立jboss-web.xml:
PUBLIC"-//JBoss//DTDWebApplication2.3V2//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd">
TaxSoftPool
javax.sql.DataSource
java:/TaxSoftPool
3、修改应用程序的web.xml:
TaxSoftPool
javax.sql.DataSource
Container
三步搞定。
2.2以上默认绑定本地数据源
就是JBoss默认将数据源绑定在本地JNDI命名空间下,所以不能从JBoss
运行的JVM之外查找到该数据源,要解决这个问题就是配置JBoss将数据源
绑定在全局命名空间下;
这个在dataSource的配置文件中指定,以Oracle9i(hnwskp/bjwskp)为例,
就是在修改${JBOSS_HOME}/server/default/deploy/oracle-ds.xml
在TaxSoftPool下面一行添加 xt>false
2.3异常处理
异常一
这个基础之上又报这个错误:
3.13:31:01,734INFO[STDOUT]javax.naming.NamingException:Couldn
otdereferenceobject[Rootexceptionisjavax.naming.NameNotFoundExc
eption:TaxSoftPoolnotbound]
解决方法是
注释掉:/D:/JBoss-4.0.2/server/default/deploy/oracle-ds.xml中的 -false-->
false
异常二
在hnwskp又发现一个问题,如果false va-context>的字体不设颜色的话,还是得不到TaxSoftPool
太奇怪了!
false -context>
异常三
在bjwskp却不需要(我来的是本地,可能整个为远程连接数据源的
设置没有起作用),想不通了!
待以后再研究
六、解决jar冲突问题
如果您部署的web工程war部署包中存在log4j.jar,common-logging.jar或更高版
本的jar,那样会和Jboss4.0.2中自带的log4j.jar,common-logging.jar会冲突,你需要删
除掉你工程中的这几个jar包,(为啥不删除jboss4.0.2中的log4j.jar,common-logging.jar
因为log4j.jar,common-logging他们要为Jboss4.0.2中的系统log4j.xml而服务,需要记录
Jboss4.0.2运行期间的系统日志)
异常现象展现:
七、解决jboss集成web工程异常问题
异常一
java.sql.SQLException:Tablealreadyexists:JMS_TRANSACTIONSin
statement[CREATECACHEDTABLEJMS_TRANSACTIONS]
原因:
CREATE_MESSAGE_TABLE=CREATECACHEDTABLEJMS_MESSAGES(MESSAGE
IDINTEGERNOTNULL,\
DESTINATIONVARCHAR(255)NOTNULL,TXIDINTEGER,TXOPCHAR(1),
\
MESSAGEBLOBOBJECT,PRIMARYKEY(MESSAGEID,DESTINATION))
CREATE_IDX_MESSAGE_TXOP_TXID=CREATEINDEXJMS_MESSAGES_TXOP_
TXIDONJMS_MESSAGES(TXOP,TXID)
CREATE_IDX_MESSAGE_DESTINATION=CREATEINDEXJMS_MESSAGES_DES
TINATIONONJMS_MESSAGES(DESTINATION)
CREATE_TX_TABLE=CREATECACHEDTABLEJMS_TRANSACTIONS(TXID
INTEGER,PRIMARYKEY(TXID))
CREATE_TABLES_ON_STARTUP=TRUE
在jboss启动的时候会加载D:\jboss-4.0.2-ehr\server\default\deploy\
jms\hsqldb-jdbc2-service.xml这个下面的语句,最后面的一句从字面就可
以看出其实就是在启动的时候是否创建表,如果设为FALSE,后台的log日
志就不会报出这样的异常来了
异常二
java.io.FileNotFoundException:D:\JBoss-4.0.2\server\default\depl
oy\jbossweb-tomcat55.sar\jsf-libs\myfaces-impl.jar
解决方法:http://moon-cake.iteye.com/blog/298035
|
|