天天看點

JBoss必須修改檔案解釋 JBoss必須修改檔案解釋 二,JBoss的安全配置 三,解決log4j與jboss的沖突 四,端口配置 五,資料源配置 六,附錄

JBoss必須修改檔案解釋

<!-- Root decorator: all decisions about how a page is to be decorated via the inline decoration begins here. --><!-- Switch based upon the context. However, for now, just delegate to a decorator identified directly by the context. --> <script></script> 一,需修改的jboss conf檔案清單

檔案 修改描述
$JBOSS_SERVER_HOME/deploy/oracle-ds.xml oracle資料源配置見内容五
$JBOSS_SERVER_HOME/conf/login-config.xml 修改認證配置,包含jmx-console登入驗證,web-console登入驗證,資料庫連接配接驗證 等等
$JBOSS_SERVER_HOME/conf/jboss-service.xml jboss的核心服務配置(MBean服務),包括日志、安全性、JNDI等,我們主要修改了服務元件的端口配置,如:NamingService(Port,RmiPort),WebService(port),PooledInvoker(ServerBindPort)
$JBOSS_SERVER_HOME/deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml 修改該檔案解決log4j與jboss的沖突 較長的描述見下文 解決log4j與jboss的沖突
$JBOSS_SERVER_HOME/conf/props/jmx-console-users.properties 定義了JMX console jbooss的登入使用者名、密碼
$JBOSS_SERVER_HOME/deploy/jmx-console.war/WEB-INF/jboss-web.xml JMX Console jboss 安全配置 較長的描述見下文Jboss 安全配置
$JBOSS_SERVER_HOME/deploy/jmx-console.war/WEB-INF/web.xml JMX Console jboss 安全配置 較長的描述見下文Jboss 安全配置
$JBOSS_SERVER_HOME/deploy/jbossweb-tomcat55.sar/conf/web.xml 為了不在http header暴露jboss(X-Powered-By)相關版本資訊,在該檔案中 注釋了CommonHeadersFilter
$JBOSS_SERVER_HOME/deploy/jbossweb-tomcat55.sar/server.xml 在該檔案中可以修改JBoss HTTP連接配接端口和JBoss AJP所監聽的端口

二,JBoss的安全配置

由于jboss預設情況下已經配置了以下服務:

JMX Console jboss

Web Console

為了安全起見,需要對使用者進行授權通路。預設情況下, 無需授權可以通路。

1,JMX Console jboss 安全配置

    A)找到%JBOSS_HOME%/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml檔案,根據說明,去掉注釋。如下:

<jboss-web>
   <security-domain>java:/jaas/jmx-console</security-domain>
</jboss-web>
           

  B)找到%JBOSS_HOME%/server/default/deploy/jmx-console.war/WEB-INF/web.xml,找到security-constraint節點,根據說明,取消注釋。 如下:

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

C)在A步驟中的jmx-console安全域和B步驟中的運作角色JBossAdmin都是在login-config.xml中配置,在%JBOSS_HOME%/server/default/conf/login-config.xml中可以找到以下配置:

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

    檔案%JBOSS_SERVER_HOME%/conf/props/jmx-console-users.properties定義了使用者名、密碼;%JBOSS_SERVER_HOME%/conf/props/jmx-  console-roles.properties定義了使用者所屬角色。

2,WEB-CONSOLE的安全配置

A) 找到%JBOSS_SERVER_HOME%/deploy/ management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml檔案,根據說明,去掉注釋。如下:

<jboss-web>
   <security-domain>java:/jaas/web-console</security-domain>
   <depends>jboss.admin:service=PluginManager</depends>
</jboss-web>
           

B) 與jboss-web.xml同級目錄下還有一個檔案web.xml,找到其中的<security-constraint></security-constraint>節點,根據說明,取消注釋。

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

C)在A步驟中的web-console安全域和B步驟中的運作角色JBossAdmin都是在login-config.xml中配置,在%JBOSS_HOME%/server/default/conf/login-config.xml中可以找到以下配置:

<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_SERVER_HOME%/deploy/ management/console-mgr.sar/web-console.war/目錄的classes檔案夾下找到web-console- users.properties和web-console-roles.properties兩個檔案分别定義使用者密碼以及角色.

三,解決log4j與jboss的沖突

在使用JBoss時,經常碰到一些沖突,如自己配置的log4j檔案無效,系統抛出 org.jboss.logging.util.OnlyOnceErrorHandlerobject is not assignable to a org.apache.log4j.spi.ErrorHandler variable異常等.

解決jboss和log4j沖突的配置如下:

A)找到%jboss_server_home%/deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml檔案,修改如下:

<attribute name="Java2ClassLoadingCompliance">false</attribute>
<attribute name="UseJBossWebLoader">true</attribute>
           

在webapp(你的web應用)裡log4j的配置檔案采用xml形式,并命名為log4j.xml,同時在webapp的lib裡需要包含log4j相關的jar包,通過這樣的配置後,webapp的log4j和jboss的log4j将互相隔離互不影響。

注:關于JBoss啟動和ClassLoader模型的關系 可以參見:http://blog.csdn.net/youfly/archive/2009/02/12/3884081.aspx

JBoss必須修改檔案解釋 JBoss必須修改檔案解釋 二,JBoss的安全配置 三,解決log4j與jboss的沖突 四,端口配置 五,資料源配置 六,附錄

四,端口配置

1,JBoss 将Tomcat 作為其預設Web容器,在$JBOSS_SERVER_HOME/deploy/jbossweb-tomcat55.sar/server.xml找到該檔案,内容如下:

設定HTTP連接配接端口:

<Connector port="${yourapp_jboss_port}" address="${jboss.bind.address}" maxThreads="250" strategy="ms" maxHttpHeaderSize="8192" emptySessionPath="true" URIEncoding="GBK" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true"/>
           

JBoss AJP所監聽的端口配置:

<Connector port="${ajp_port}" address="${jboss.bind.address}" backlog="256" maxThreads="250" emptySessionPath="true" enableLookups="false" connectionTimeout="600000" disableUploadTimeout="true" protocol="AJP/1.3" URIEncoding="GBK"/>
           

五,資料源配置

1,$JBOSS_SERVER_HOME/deploy/oracle-ds.xml

oracle JNDI資料源配置

資料庫登入使用者名 需要在login-config.xml進行配置

注:資料源配置檔案的字尾為-ds.xml,如果 是HSQL資料庫 對應的就是$JBOSS_SERVER_HOME/deploy/hsqldb-ds.xml,等

為将oracle JDBC驅動供JBoss使用,使用者需要将oracle驅動拷貝到default伺服器配置中的lib目錄。

六,附錄

 附帶一個目錄結構表

JBoss必須修改檔案解釋 JBoss必須修改檔案解釋 二,JBoss的安全配置 三,解決log4j與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/all JBoss 的完全配置,啟動所有服務,包括叢集和 IIOP 。
server/default JBoss 的預設配置。在沒有在 JBoss 指令行中指定配置名稱時使用。 
server/default/conf JBoss 的配置檔案。
server/default/data JBoss 的資料庫檔案。比如,嵌入的資料庫,或者 JBossMQ
server/default /deploy JBoss 的部署目錄。放到這裡的任何檔案或目錄會被 JBoss 自動部署。 EJB 、 WAR 、 EAR ,甚至服務。
server/default /lib 一些 JAR , JBoss 在啟動特定配置時加載他們。 (default 和 minimial 配置也包含這個和下面兩個目錄。 ) 
server/default/log JBoss 的日志檔案。
server/default/tmp JBoss 的臨時檔案。