JBOSS維護經驗
原文:http://www.ufgov.com.cn/support/viewDetail.asp?id=677
(用友政務技術支持部(LZY))?
一、設置控制臺登錄窗口
<br>安裝好jboss并啟動jboss后,在瀏覽器窗口的地址欄里鍵入????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????http://localhost:8080/jmx-consolehttp://localhost:8080/jmx-console就可以瀏覽jboss的部署管理的一些信息,默認情況下不鍵入任何用戶名和密碼就可以進入此頁面,??????????方便是方便,但真正使用起來還是有點安全隱患,因為不管任何人只要知道server的ip????都可以進去訪問。下面我們針對此問題對jboss進行配置,使得訪問jmx-console也必須????要知道用戶名和密碼才可進去訪問.
步驟:
1.??進入jmx-console.war,通常此目錄在{jboss_home}\server\default\deploy目錄下。
2.??編輯該目錄下的WEB-INF\web.xml,把<security-constraint>部分注釋去掉
3.??編輯該目錄下的WEB-INF\classes的roles.properties和users.properties;其中
???????1)??users.properties文件里定義用戶名和密碼,格式為username=password。當然,可以依??????????????????????????????????????????????????????????????????照此格式添加多個用戶。??
2)??roles.propertie文件里定義用戶名和角色,格式為username=role。這里的role必須和web.xml文件里的<role-name>相對應。
4.??編輯WEB-INF\jboss-web.xml文件,打開<security-domain>部分注釋;這里<security-domain>內容對應的security-domain對應{jboss_home}\server\default\conf\login-config.xml這個jaas配置文件里的某個application-policy。
如:
<security-domain>java:/jaas/jmx-console</security-domain>
在login-config.xml里對應有:
<application-policy??name??=??"jmx-console">
?????????????<authentication>
???????????????????<login-module??code="org.jboss.security.auth.spi.UsersRolesLoginModule"
???????????????????????????flag??=??"required"??/>
?????????????</authentication>
</application-policy>
5.Ok!一切大功告成!重啟jboss,就會出現你想要的輸入username和password的??窗口
二、啟動與關閉JBOSS應用服務器:
1.?啟動JBOSS應用服務器:
l?雙擊桌面快捷方式。
l?打開命令行窗口,進入??%JBOSS_HOME%\bin,鍵入??run??,回車。
2.關閉JBOSS應用服務器:
l?直接關閉JBOSS應用服務器;
l?另外打開一個命令行窗口,進入%JBOSS_HOME%\bin,鍵入shutdown???username=用戶名????-password=密碼,回車。
三、修改JBOSS應用服務器連接的數據庫和端口:
1.在jboss?jboss-3.x---server---default---deploy下,mssql-service.xml文件中:??
<config-property??name=“ConnectionURL”??type=“java.lang.String”>
jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Northwind
</config-property>
<config-property??name=“UserName”??type=“java.lang.String”>sa</config-property>
<config-property??name=“Password”??type=“java.lang.String”>1</config-property>
其中:
①jdbc:microsoft:sqlserver://localhost:1433:??SQL2000端口是1433,如果數據庫和WEB服務器分裝于不同的機器,那么localhost要改成數據庫服務器的ip地址;
②DatabaseName=Northwind:??數據庫是Northwind,可以修改成另一個數據庫;
③<config-property??name=“UserName”??ype=“java.lang.String”>sa</config-property>
???使用數據庫的用戶名sa
④<config-propertyname=“Password”type=“java.lang.String”>1</config-property>
???與用戶名sa對應的密碼:1
注:當我們的數據庫、用戶名或密碼修改后,可在mssql-service.xml修改相應的項即可。
2.?使用JBOSS中間件時,默認的訪問端口是8080.如何修改?
打開JBOSS目錄-->jboss-3.0.8-->server-->default-->deploy-->jbossweb.sar-->meta-inf下的jboss-service.xml文件,搜索8080,將8080改為新的端口號,保存文件,重啟應用服務器即可.訪問時使用新的端口號.
<Call??name="addListener">
?????????????????<Arg>
???????????????????<New??class="org.mortbay.http.SocketListener">
???????????????????????<Set??name="Port"><SystemProperty??name="jetty.port"??fault="8000"/></Set>
???????????????????????<Set??name="MinThreads">10</Set>
???????????????????????<Set??name="MaxThreads">100</Set>
???????????????????????<Set??name="MaxIdleTimeMs">30000</Set>
???????????????????????<Set??name="LowResourcePersistTimeMs">5000</Set>
???????????????????</New>
?????????????????</Arg>
?????????????</Call>
四、其它設置
1.WAR文件的部署
JBoss支持熱部署,也就是war文件部署到服務器上后不需要重新啟動JBoss(Tomcat不支這種特性)。war文件的部署很簡單,直接將war文件拷貝到JBoss\server\default\deploy目錄下即可。??
2.JBoss的目錄結構
???????bin:改目錄包含各種腳本文件以及相關文件,前面已經用過run.bat和shutdown.bat兩個批處理文件。
???????client:存儲配置信息和可能被Java客戶端應用程序或外部Web容器用到的jar文件。
???????docs:保存在JBoss中引用到的XML文件和DTD文件(這里也提供了在JBoss中如何寫配置文件的例子)。該目錄下有針對不通的數據庫(如MySql、Oracle、SQL??Server、Postgres等)配置數據源的JCA配置文件。
?????????lib:這里存儲運行JBoss微內核所需的jar文件。該目錄下不要存儲任何你自己的jar文件。
?????????server:這里的每一個子目錄對應著一個服務器配置。該配置由運行腳本文件時的參數"-c??<配置名稱>"來確定。在server目錄下有三個配置例子,即all、default和minimal,每一個配置安裝的服務都不一樣。其中default下是缺省配置。
???????????minimal:僅加載啟動JBoss所需的最少服務,如日志服務、JNDI和URL部署掃描器(發現新的部署),不包含Web容器、EJB和JMS。
???????????all:啟動所有的服務,包括RMI/IIOP、集群服務和Web服務部署器(默認配置不會被加載)。
啟動JBoss時,如果run.bat不帶任何參數,則使用的配置是server/default目錄下的配置。如果要以其它目錄下的配置啟動JBoss,可以使用如下參數:
run????-c????all
上述命令將以all目錄下的配置信息啟動JBoss。也可以在server目錄下新建目錄,按自己的需要寫配置文件。
下面以default目錄為例,介紹服務器配置的目錄結構。
???????????conf:該目錄下有指定核心服務的jboss-service.xml文件,也可以放其它服務配置的文件。
???????????data:該目錄是JBoss內置的數據庫Hypersonic存儲數據的地方,也是JBossMQ(the??JBoss??implementation??of??JMS)存儲相關信息的地方。
???????????deploy:這是部署J2EE應用程序(jar、war和ear文件)的位置,只需將相應文件拷貝到該目錄下即可。該目錄也用來熱部署服務和JCA資源適配器。已經有一些服務部署到這個目錄了,如jmx-console,你啟動JBoss后即可訪問。JBoss會周期性的掃描deploy目錄,當有任何組件改變,JBoss會重新部署該程序。
???????????lib:存放服務器配置所需的jar文件,比如,你可以將JDBC驅動程序放在該目錄下。
???????????log:存放日志信息。JBoss使用Jakarta??log4j包存儲日志,在程序中你也可以直接使用該信息。
?????????tmp:存儲在部署過程中解壓時產生的臨時文件。
?????work:Tomcat編譯JSP文件時的工作目錄。
目錄data、log、tmp和work在JBoss安裝后并不存在,當JBoss運行時自動建立。
另外,連接數據庫所用到的JDBC驅動程序要拷貝到JBoss_HOME\server\default\lib目錄下。
3.??JBoss中的部署
???JBoss中的部署過程非常的簡單、直接并且支持熱部署。在每一個配置中,JBoss不斷的掃描一個特殊的目錄的變化:$JBOSS_HOME/server/config-name/deploy。
???你可以把下列文件拷貝到此目錄下:
???????*??任何jar庫(其中的類將被自動添加到JBoss的classpath中)
???????*??EJB??JAR
???????*??WAR??(Web??Appliction??aRrchive)??注意默認情況下context為war名稱.
???????*??EAR??(Enterprise??Application??aRchive)
???????*??包含JBoss??MBean定義的XML文件
???????*??一個包含EJB??JAR、WAR或者EAR的解壓縮內容,并以.jar、.war或者.ear結尾的目錄。
附:如果你想要定義自己的服務器目錄配置,可參照如下步驟:
根據JBOSS文檔,我們可知道,實際上配置一個Server僅僅只需要將Default目錄下所有文件拷到一個新目錄下并重命名就可以了,同時修改相應的一些文件中的參數就可以了。做如下約定:
1、????重新指定一個run.bat快捷方式??runJwfm.bat??
復制一份<JBOSS_HOME>/BIN目錄下的run.bat,并修改
"%JAVA%"??%JAVA_OPTS%??-classpath??"%JBOSS_CLASSPATH%"??org.jboss.Main??%*為
"%JAVA%"??%JAVA_OPTS%??-classpath??"%JBOSS_CLASSPATH%"??org.jboss.Main???c??jwfm??%*
2、修改相應參數文件
?????<JBoss_Home>/Server/jwfm/conf??目錄下文件jboss-service.xml修改動態部署時間:
<attribute??name="ScanPeriod">5000</attribute>??將5000調整到800,特穩定后調回5000
(用友政務技術支持部(LZY))?
一、設置控制臺登錄窗口
<br>安裝好jboss并啟動jboss后,在瀏覽器窗口的地址欄里鍵入????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????http://localhost:8080/jmx-consolehttp://localhost:8080/jmx-console就可以瀏覽jboss的部署管理的一些信息,默認情況下不鍵入任何用戶名和密碼就可以進入此頁面,??????????方便是方便,但真正使用起來還是有點安全隱患,因為不管任何人只要知道server的ip????都可以進去訪問。下面我們針對此問題對jboss進行配置,使得訪問jmx-console也必須????要知道用戶名和密碼才可進去訪問.
步驟:
1.??進入jmx-console.war,通常此目錄在{jboss_home}\server\default\deploy目錄下。
2.??編輯該目錄下的WEB-INF\web.xml,把<security-constraint>部分注釋去掉
3.??編輯該目錄下的WEB-INF\classes的roles.properties和users.properties;其中
???????1)??users.properties文件里定義用戶名和密碼,格式為username=password。當然,可以依??????????????????????????????????????????????????????????????????照此格式添加多個用戶。??
2)??roles.propertie文件里定義用戶名和角色,格式為username=role。這里的role必須和web.xml文件里的<role-name>相對應。
4.??編輯WEB-INF\jboss-web.xml文件,打開<security-domain>部分注釋;這里<security-domain>內容對應的security-domain對應{jboss_home}\server\default\conf\login-config.xml這個jaas配置文件里的某個application-policy。
如:
<security-domain>java:/jaas/jmx-console</security-domain>
在login-config.xml里對應有:
<application-policy??name??=??"jmx-console">
?????????????<authentication>
???????????????????<login-module??code="org.jboss.security.auth.spi.UsersRolesLoginModule"
???????????????????????????flag??=??"required"??/>
?????????????</authentication>
</application-policy>
5.Ok!一切大功告成!重啟jboss,就會出現你想要的輸入username和password的??窗口
二、啟動與關閉JBOSS應用服務器:
1.?啟動JBOSS應用服務器:
l?雙擊桌面快捷方式。
l?打開命令行窗口,進入??%JBOSS_HOME%\bin,鍵入??run??,回車。
2.關閉JBOSS應用服務器:
l?直接關閉JBOSS應用服務器;
l?另外打開一個命令行窗口,進入%JBOSS_HOME%\bin,鍵入shutdown???username=用戶名????-password=密碼,回車。
三、修改JBOSS應用服務器連接的數據庫和端口:
1.在jboss?jboss-3.x---server---default---deploy下,mssql-service.xml文件中:??
<config-property??name=“ConnectionURL”??type=“java.lang.String”>
jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Northwind
</config-property>
<config-property??name=“UserName”??type=“java.lang.String”>sa</config-property>
<config-property??name=“Password”??type=“java.lang.String”>1</config-property>
其中:
①jdbc:microsoft:sqlserver://localhost:1433:??SQL2000端口是1433,如果數據庫和WEB服務器分裝于不同的機器,那么localhost要改成數據庫服務器的ip地址;
②DatabaseName=Northwind:??數據庫是Northwind,可以修改成另一個數據庫;
③<config-property??name=“UserName”??ype=“java.lang.String”>sa</config-property>
???使用數據庫的用戶名sa
④<config-propertyname=“Password”type=“java.lang.String”>1</config-property>
???與用戶名sa對應的密碼:1
注:當我們的數據庫、用戶名或密碼修改后,可在mssql-service.xml修改相應的項即可。
2.?使用JBOSS中間件時,默認的訪問端口是8080.如何修改?
打開JBOSS目錄-->jboss-3.0.8-->server-->default-->deploy-->jbossweb.sar-->meta-inf下的jboss-service.xml文件,搜索8080,將8080改為新的端口號,保存文件,重啟應用服務器即可.訪問時使用新的端口號.
<Call??name="addListener">
?????????????????<Arg>
???????????????????<New??class="org.mortbay.http.SocketListener">
???????????????????????<Set??name="Port"><SystemProperty??name="jetty.port"??fault="8000"/></Set>
???????????????????????<Set??name="MinThreads">10</Set>
???????????????????????<Set??name="MaxThreads">100</Set>
???????????????????????<Set??name="MaxIdleTimeMs">30000</Set>
???????????????????????<Set??name="LowResourcePersistTimeMs">5000</Set>
???????????????????</New>
?????????????????</Arg>
?????????????</Call>
四、其它設置
1.WAR文件的部署
JBoss支持熱部署,也就是war文件部署到服務器上后不需要重新啟動JBoss(Tomcat不支這種特性)。war文件的部署很簡單,直接將war文件拷貝到JBoss\server\default\deploy目錄下即可。??
2.JBoss的目錄結構
???????bin:改目錄包含各種腳本文件以及相關文件,前面已經用過run.bat和shutdown.bat兩個批處理文件。
???????client:存儲配置信息和可能被Java客戶端應用程序或外部Web容器用到的jar文件。
???????docs:保存在JBoss中引用到的XML文件和DTD文件(這里也提供了在JBoss中如何寫配置文件的例子)。該目錄下有針對不通的數據庫(如MySql、Oracle、SQL??Server、Postgres等)配置數據源的JCA配置文件。
?????????lib:這里存儲運行JBoss微內核所需的jar文件。該目錄下不要存儲任何你自己的jar文件。
?????????server:這里的每一個子目錄對應著一個服務器配置。該配置由運行腳本文件時的參數"-c??<配置名稱>"來確定。在server目錄下有三個配置例子,即all、default和minimal,每一個配置安裝的服務都不一樣。其中default下是缺省配置。
???????????minimal:僅加載啟動JBoss所需的最少服務,如日志服務、JNDI和URL部署掃描器(發現新的部署),不包含Web容器、EJB和JMS。
???????????all:啟動所有的服務,包括RMI/IIOP、集群服務和Web服務部署器(默認配置不會被加載)。
啟動JBoss時,如果run.bat不帶任何參數,則使用的配置是server/default目錄下的配置。如果要以其它目錄下的配置啟動JBoss,可以使用如下參數:
run????-c????all
上述命令將以all目錄下的配置信息啟動JBoss。也可以在server目錄下新建目錄,按自己的需要寫配置文件。
下面以default目錄為例,介紹服務器配置的目錄結構。
???????????conf:該目錄下有指定核心服務的jboss-service.xml文件,也可以放其它服務配置的文件。
???????????data:該目錄是JBoss內置的數據庫Hypersonic存儲數據的地方,也是JBossMQ(the??JBoss??implementation??of??JMS)存儲相關信息的地方。
???????????deploy:這是部署J2EE應用程序(jar、war和ear文件)的位置,只需將相應文件拷貝到該目錄下即可。該目錄也用來熱部署服務和JCA資源適配器。已經有一些服務部署到這個目錄了,如jmx-console,你啟動JBoss后即可訪問。JBoss會周期性的掃描deploy目錄,當有任何組件改變,JBoss會重新部署該程序。
???????????lib:存放服務器配置所需的jar文件,比如,你可以將JDBC驅動程序放在該目錄下。
???????????log:存放日志信息。JBoss使用Jakarta??log4j包存儲日志,在程序中你也可以直接使用該信息。
?????????tmp:存儲在部署過程中解壓時產生的臨時文件。
?????work:Tomcat編譯JSP文件時的工作目錄。
目錄data、log、tmp和work在JBoss安裝后并不存在,當JBoss運行時自動建立。
另外,連接數據庫所用到的JDBC驅動程序要拷貝到JBoss_HOME\server\default\lib目錄下。
3.??JBoss中的部署
???JBoss中的部署過程非常的簡單、直接并且支持熱部署。在每一個配置中,JBoss不斷的掃描一個特殊的目錄的變化:$JBOSS_HOME/server/config-name/deploy。
???你可以把下列文件拷貝到此目錄下:
???????*??任何jar庫(其中的類將被自動添加到JBoss的classpath中)
???????*??EJB??JAR
???????*??WAR??(Web??Appliction??aRrchive)??注意默認情況下context為war名稱.
???????*??EAR??(Enterprise??Application??aRchive)
???????*??包含JBoss??MBean定義的XML文件
???????*??一個包含EJB??JAR、WAR或者EAR的解壓縮內容,并以.jar、.war或者.ear結尾的目錄。
附:如果你想要定義自己的服務器目錄配置,可參照如下步驟:
根據JBOSS文檔,我們可知道,實際上配置一個Server僅僅只需要將Default目錄下所有文件拷到一個新目錄下并重命名就可以了,同時修改相應的一些文件中的參數就可以了。做如下約定:
1、????重新指定一個run.bat快捷方式??runJwfm.bat??
復制一份<JBOSS_HOME>/BIN目錄下的run.bat,并修改
"%JAVA%"??%JAVA_OPTS%??-classpath??"%JBOSS_CLASSPATH%"??org.jboss.Main??%*為
"%JAVA%"??%JAVA_OPTS%??-classpath??"%JBOSS_CLASSPATH%"??org.jboss.Main???c??jwfm??%*
2、修改相應參數文件
?????<JBoss_Home>/Server/jwfm/conf??目錄下文件jboss-service.xml修改動態部署時間:
<attribute??name="ScanPeriod">5000</attribute>??將5000調整到800,特穩定后調回5000