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
四,端口配置
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目錄。
六,附錄
附帶一個目錄結構表
目錄 | 描述 |
---|---|
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 的臨時檔案。 |