1. 程式人生 > >JBOSS安裝配置詳細教程

JBOSS安裝配置詳細教程

第一章 安裝執行JBOSS

1 安裝JBOSS

JBOSS最新發布的AS(Application 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    

在JBOSS的home目錄(即$JBOSS_HOME \bin)有一個run.bat檔案和 一個run.sh檔案,直接執行run.sh(linux系統)或run.bat(windows系統)即可啟動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的屬性

3.2 如何控制Jboss控制檯的訪問許可權

web-console和jmx-console都可以使用Jboss提供的JAAS框架進行訪問許可權控制,修改應用war包內的WEB-INF/web.xml和jboss-web.xml,取消對應的註釋即可。以web-console為例

jboss-web.xml

<security-domain>java:/jaas/web-console</security-domain>
web.xml
       <security-constraint>
              <web-resource-collection>
                     <web-resource-name>HtmlAdaptor</web-resource-name>
                     <description>An 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-method>GET</http-method>
                     <http-method>POST</http-method>
              </web-resource-collection>
              <auth-constraint>
                     <role-name>JBossAdmin</role-name>
              </auth-constraint>
       </security-constraint>

jboss-web.xml中指明該應用的policy為web-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

第二章 釋出目錄及配置檔案

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應用中使用資料來源的jndi名java:/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/JDBCDS與jboss-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.xml或oracle-xa-ds.xml拷貝到deploy目錄下,修改其中的連線串、使用者名稱、密碼即可

第三章 JBOSS配置

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

1、  精簡服務(可選)

default配置中有一些我們不需要的服務,在deploy目錄下以xml或sar的形勢存在。可以刪除以加快啟動速度減少資源佔用,目前確認可以刪除的內容如下

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"/>