天若有情

到教堂忏悔,愿主安抚我罪恶的心灵......
posts - 4, comments - 35, trackbacks - 0, articles - 24

JBOSS安装配置

Posted on 2008-09-08 14:31 freedoom 阅读(6985) 评论(0)  编辑  收藏 所属分类: JAVA技术(好文保存)
 

第一章 安装运行JBOSS

1 安装JBOSS

JBOSS最新发布的ASApplication Server)版本是5.0.0.Beta1,最近一个稳定版本是4.0.5,我们使用的版本是4.0.4。该版本比较稳定。

        安装JBOSS很简单。将jboss-4.0.4.GA.zip解压到一个目录(比如d:\ jboss-4.0.4.GA)下即可。

        提示:保留原来的zip文件,以免在使用过程中出错,还可以恢复到正常状态。

2 运行JBOSS    

JBOSShome目录($JBOSS_HOME \bin)有一个run.bat文件和 一个run.sh文件,直接运行run.shlinux系统)或run.batwindows系统)即可启动JBOSS

如果需要设置JBOSS应用启动的端口,可以修改$JBOSS_HOME \server\default\deploy\jbossweb-tomcat55.sar\server.xml文件

<!-- A HTTP/1.1 Connector on port 8080 -->

      <Connector port="8080" address="${jboss.bind.address}"

         maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"

         emptySessionPath="true"

         enableLookups="false" redirectPort="8443" acceptCount="100"

         connectionTimeout="20000" disableUploadTimeout="true"/>

可将这个port修改成需要的端口。

3 JBOSS控制台

3.1 如何查看Jboss的属性

启动JBOSS,打开http://IP:Port/,可进入如下页面

 

http://IP:Port/web-consolehttp://IP:Port/jmx-consoleJboss是以JMX为核心的,console上并不直接提供配置和控制server的功能,各项操作需要找到对应的Mbean,调用相关方法。

3.2 如何控制Jboss控制台的访问权限

web-consolejmx-console都可以使用Jboss提供的JAAS框架进行访问权限控制,修改应用war包内的WEB-INF/web.xmljboss-web.xml,取消对应的注释即可。以web-console为例

jboss-web.xml

security-domainjava:/jaas/web-console</security-domain
 web.xml
       security-constraint
              web-resource-collection
                     web-resource-nameHtmlAdaptor</web-resource-name
                     descriptionAn example security config that only allows users with the
   role JBossAdmin to access the HTML JMX console web application
   </description
                     url-pattern/*</url-pattern
                     http-methodGET</http-method
                     http-methodPOST</http-method
              </web-resource-collection
              auth-constraint
                     role-nameJBossAdmin</role-name
              </auth-constraint
       </security-constraint

jboss-web.xml中指明该应用的policyweb-console,授权的角色为JBossAdmin。在$JBOSS_HOME/server/${app}/conf/login-config.xml中可以找到对policy:web-console的配置

    application-policy name = "web-console">

       authentication
          login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
             flag = "required">
             module-option name="usersProperties">web-console-users.properties</module-option
             module-option name="rolesProperties">web-console-roles.properties</module-option
          </login-module
       </authentication
    </application-policy

$JBOSS_HOME/server/${app}/conf/中建立文件web-console-roles.properties配置角色信息

#用户名=角色1,角色2,…,角色n

admin=JBossAdmin,HttpInvoker

$JBOSS_HOME/server/${app}/conf/中建立文件web-console-users.properties配置用户信息

#用户名=密码(明文)

admin=admin

经过上述配置,需要以用户admin密码admin才能登录http://IP:Port/web-console

第二章 发布目录及配置文件

1 JBOSS的应用发布目录

       JBOSS在控制台没有提供直接的目录发布应用的功能。需要通过直接修改配置文件完成。系统默认的发布目录是$JBOSS_HOME \server\default\deploy,直接将war包复制到这个目录下即可。如果需要以目录方式部署,可以将war包解开后的整个目录复制过来,但注意目录名一定要修改成${app}.war这种形式。

2 JBOSS配置文件

2.1 增加jboss-web.xml

jboss-web.xml的作用类似于weblogic.xml,用于指定一些跟应用服务器相关的配置。在jboss环境下,原有的weblogic.xml已经没有用处,可以删除。在WEB-INF目录下新增jboss-web.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 2.3V2//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd">

<jboss-web>

    <context-root>${app}</context-root>

       <resource-ref>

        <res-ref-name>jdbc/JDBCDS</res-ref-name>

        <jndi-name>java:/JDBCDS</jndi-name>

    </resource-ref>

</jboss-web>

指定了web应用的context/${app},以及指定web应用中使用数据源的jndijava:/JDBCDS

2.2 修改web.xml

修改WEB-INF目录下的web.xml文件,增加如下内容:

<resource-ref>

    <res-ref-name>jdbc/JDBCDS</res-ref-name>

    <res-type>javax.sql.DataSource</res-type>

    <res-auth>Container</res-auth>

  </resource-ref>

注意这里面的配置关系:web.xml里的<res-ref-name> jdbc/JDBCDS </res-ref-name>
中的jdbc/JDBCDSjboss-web.xml里的<res-ref-name> jdbc/JDBCDS </res-ref-name>
中的jdbc/JDBCDS一致,前者是向后者看齐的;而jboss-web.xml里的  <jndi-name>java:jdbc/MyDs</jndi-name>中的java:jdbc/MyDs 为前缀“java:” 加上 在第一步(数据源配置文件配置)中配置的jndi名称组成。

2.3 增加oracle-ds.xml

JBOSS发布应用时,我们需要为数据库创建一个数据源描述文件,$JBOSS_HOME/ server/default/deploy /目录下,增加一个oracle-ds.xml文件,内容如下

<?xml version="1.0" encoding="UTF-8"?>

<datasources>

  <local-tx-datasource>

    <jndi-name>JDBCDS</jndi-name>

    <connection-url>jdbc:oracle:thin:@10.1.1.1:1521:ora9i</connection-url>

    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>

    <user-name>eafcem</user-name>

    <password>eafcem</password>

<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>

      <metadata>

         <type-mapping>Oracle9i</type-mapping>

      </metadata>

  </local-tx-datasource>

</datasources>

我们可以把$JBOSS_HOME\docs\examples\jca\oracle-ds.xmloracle-xa-ds.xml拷贝到deploy目录下,修改其中的连接串、用户名、密码即可

第三章 JBOSS配置

以下以Linux平台为例:
Jboss部署位置用$JBOSS_HOME指代

1、  精简服务(可选)

default配置中有一些我们不需要的服务,在deploy目录下以xmlsar的形势存在。可以删除以加快启动速度减少资源占用,目前确认可以删除的内容如下

n         jboss-aop.deployer

n         jbossws14.sar

n         jms

n         uuid-key-generator.sar

n         bsh-deployer.xml

n         cache-invalidation-service.xml

n         client-deployer-service.xml

n         ear-deployer.xml

n         ejb-deployer.xml

n         hsqldb-ds.xml

n         jboss-ha-xa-jdbc.rar

n         jsr88-service.xml

n         mail-ra.rar

n         mail-service.xml

n         vi conf/jboss-service.xml,删除以下内容

   <!-- ==================================================================== -->

   <!-- Class Loading                                                        -->

   <!-- ==================================================================== -->

 

   <mbean code="org.jboss.web.WebService"

      name="jboss:service=WebService">

      <attribute name="Port">8083</attribute>

      <!-- Should non-EJB .class files be downloadable -->

      <attribute name="DownloadServerClasses">true</attribute>

      <!-- Should resources other than .class files be downloadable. Both

         DownloadServerClasses and DownloadResources must be true for resources

         to be downloadable. This is false by default because its generally a

         bad idea as server configuration files that container security

         information can be accessed.

       -->

      <attribute name="DownloadResources">false</attribute>

      <attribute name="Host">${jboss.bind.address}</attribute>

      <attribute name="BindAddress">${jboss.bind.address}</attribute>

      <!-- Use the default thread pool for dynamic class loading -->

      <depends optional-attribute-name="ThreadPool"

         proxy-type="attribute">jboss.system:service=ThreadPool</depends>

   </mbean>

2、  修改jboss运行参数配置文件

修改run.conf修改或增加以下内容,参数值根据实际情况调整

MAX_FD="8192"

JAVA_HOME="/opt/aspire/product/jboss/jdk1.5.0_10"

JAVA_OPTS="-server -Xms512m -Xmx1024m -Xloggc:./gc/$$ -XX:PermSize=64m -XX:MaxPermSize=128m -XX:-UseParallelGC -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"

3、  创建启动脚本

$JBOSS_HOME/server/default创建启动脚本start,内容如下

mv nohup.out nohup.bak

nohup $JBOSS_HOME/bin/run.sh -c default -P run.conf & > nohup.out

4、  创建停止脚本

$JBOSS_HOME/server/default创建启动脚本down,内容如下

$JBOSS_HOME/bin/shutdown.sh --server=jnp://localhost:1099 --shutdown

其中11099端口为示意,请根据实际的JNDI端口修改。

5、  数据库驱动

JBOSS不带oracle jdbc driver,需要手工放置classes12.jar$JBOSS_HOME/server/default/lib目录下。

6、  log4j的问题

       JBOSS自己的log4j和应用Log4j冲突的问题,目前暂时的做法删除JBOSS自带的server/default/deploy目录下的log4j.jar,启动时会报一个错,但simf的日志可正常使用,在$JBOSS_HOME/bin目录下会生成eaflog目录

7、  修改端口(可选)

如果在一台机器上部署了多个jboss server或者jboss默认端口已被其它应用使用,需要修改相关端口以避免端口冲突。目前确认需要修改的配置如下

vi $JBOSS_HOME/server/default/conf/jboss-service.xml

n         JNDI端口:默认1099

   <mbean code="org.jboss.naming.NamingService"

      name="jboss:service=Naming"

      xmbean-dd="resource:xmdesc/NamingService-xmbean.xml">

......

        <attribute name="Port">1099</attribute>

        <!--
        <attribute name="RmiPort">1098</attribute>
        -->

n         RMI端口:默认4444/4445

   <mbean code="org.jboss.invocation.jrmp.server.JRMPInvoker"

      name="jboss:service=invoker,type=jrmp">

      <attribute name="RMIObjectPort">4444</attribute>

.........

   </mbean>

……

   <mbean code="org.jboss.invocation.pooled.server.PooledInvoker"

      name="jboss:service=invoker,type=pooled">

......

        <attribute name="ServerBindPort">4445</attribute>

   </mbean>

vi $JBOSS_HOME/eaf/deploy/jbossweb-tomcat55.sar/server.xml

n         HTTP端口:默认8080

      <Connector port="8080" address="${jboss.bind.address}"

         maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"

         emptySessionPath="true"

         enableLookups="false" redirectPort="8443" acceptCount="100"

         connectionTimeout="20000" disableUploadTimeout="true"/>