JBoss入門


 很多內容摘自

https://www.jianshu.com/p/4baaf549436b

 

1.安裝目錄

安裝完Jboss后得目錄結構

目錄 功能
appclient/ 包含應用程序客戶容器的配置細節。
bin/ 包含 Red Hat 企業版 Linux 和微軟 Windows 上 JBoss EAP 的啟動腳本。
docs/ 許可證文件、schema 和示例。
domain/ 配置文件、部署內容和 JBoss EAP 6 以受管域運行時使用的可寫入區域。
modules/ 當有服務請求時 JBoss EAP 6 動態加載的模塊。
standalone/ 配置文件、部署內容和 JBoss EAP 6 以獨立服務器運行時使用的可寫入區域。
welcome-content/ 包含默認安裝里 8080 端口上的 Welcome 應用程序使用的內容。
jboss-modules.jar 加載模塊的引導機制。

 

Domains中的結構

 

名稱 目的
configuration/ 用於受管域的配置文件。這些文件是通過管理控制台和 CLI 進行修改的,不能直接進行編輯。
data/ 關於已部署服務的信息。服務是用管理控制台或管理 CLI,而不是通過部署掃描器來部署的。因此,請不要手動在這個目錄里放入文件。
log/ 包含運行在本地實例上的主機和進程控制器的運行時日志文件。
servers/ 包含某個域里的每個服務器實例的 data/、log/ 和 tmp/ 目錄,其中包含的數據和頂層的 domain/
tmp/ 包含臨時數據,如針對受管域檢驗本地用戶的管理 CLI 使用的共享密鑰機制相關的文件。

standalone/ 里的目錄

名稱 目的
configuration/ 用於獨立服務器的配置文件。這些文件是通過管理控制台和 CLI 進行修改的,不能直接進行編輯。
deployments/ 關於已部署服務的信息。獨立服務器包含一個部署掃描器,您可以在這個目錄里放入要部署的歸檔文件。然而,我們推薦的方法是用管理控制台或管理 CLI 來管理部署。
lib/ 附屬於獨立服務器模式的外部庫。默認為空。
tmp/ 包含臨時數據,如針對服務器檢驗本地用戶的管理 CLI 使用的共享密鑰機制相關的文件。

 

2.基本概念

  • jboss-eap-7.1有兩種運行模式,standalone單機模式 和 domain集群模式。
  • jboss啟動服務器時,默認讀取的配置文件是${JBOSS_HOME}/standalone/configuration/standalone.xml。也可以指定讀取其他配置文件,命令是./standalone.sh --server-config=standalone-custom.xml
  • jboss-cli(command line interface),是jboss的命令行管理工具。執行${JBOSS_HOME}/bin/jboss-cli.sh即可進入。通過命令行實現部署卸載應用、配置系統設置和執行管理任務的功能。使用該工具修改系統配置時,最終也會作用到standalone.xml中。
  • Management Console,管理控制台。是jboss提供的web管理系統,地址在http://localhost:9990/console/App.html, 所有的操作均可通過jboss-cli實現。

3.standalone.xml配置

修改監聽地址

<interfaces>
        <interface name="management">
            <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
        </interface>
        <interface name="public">
            <inet-address value="${jboss.bind.address:127.0.0.1}"/>
        </interface>
    </interfaces>

缺省綁定本機,可以修改成具體的ip,如果修改成0.0.0.0則綁定所有的ip

 

  • 端口配置
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
        <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
        <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
        <socket-binding name="http" port="${jboss.http.port:8080}"/>
        <socket-binding name="https" port="${jboss.https.port:8443}"/>
        <socket-binding name="txn-recovery-environment" port="4712"/>
        <socket-binding name="txn-status-manager" port="4713"/>
        <outbound-socket-binding name="mail-smtp">
            <remote-destination host="localhost" port="25"/>
        </outbound-socket-binding>
    </socket-binding-group>

基於協議修改不同的端口

  • 數據源配置
 <subsystem xmlns="urn:jboss:domain:datasources:5.0">
            <datasources>
                <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
                    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
                    <driver>h2</driver>
                    <security>
                        <user-name>sa</user-name>
                        <password>sa</password>
                    </security>
                </datasource>
                <drivers>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>
        </subsystem>

其中driver的libray目錄主要需要看module模塊,上面例子放在

E:\eap7\modules\system\layers\base\com\h2database\h2\main 路徑下。同時此目錄下需要放置module.xml文件,格式如下:

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

<!--
  ~ JBoss, Home of Professional Open Source.
  ~ Copyright 2010, Red Hat, Inc., and individual contributors
  ~ as indicated by the @author tags. See the copyright.txt file in the
  ~ distribution for a full listing of individual contributors.
  ~
  ~ This is free software; you can redistribute it and/or modify it
  ~ under the terms of the GNU Lesser General Public License as
  ~ published by the Free Software Foundation; either version 2.1 of
  ~ the License, or (at your option) any later version.
  ~
  ~ This software is distributed in the hope that it will be useful,
  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  ~ Lesser General Public License for more details.
  ~
  ~ You should have received a copy of the GNU Lesser General Public
  ~ License along with this software; if not, write to the Free
  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  -->

<module xmlns="urn:jboss:module:1.5" name="com.h2database.h2">
    <properties>
        <property name="jboss.api" value="unsupported"/>
    </properties>


    <resources>
        <resource-root path="h2-1.4.193.redhat-2.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        <module name="javax.servlet.api" optional="true"/>
    </dependencies>
</module>
  • undertow配置
<subsystem xmlns="urn:jboss:domain:undertow:4.0">
    <buffer-cache name="default"/>
    <server name="default-server">
        <http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
        <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>
        <host name="default-host" alias="localhost">
            <location name="/" handler="welcome-content"/>
            <filter-ref name="server-header"/>
            <filter-ref name="x-powered-by-header"/>
            <http-invoker security-realm="ApplicationRealm"/>
        </host>
            </server>
    <servlet-container name="default">
        ………… ………… …………
    </servlet-container>
    <handlers>
        <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
    </handlers>
    <filters>
        ………… ………… …………
    </filters>
</subsystem>

修改后配置為

<subsystem xmlns="urn:jboss:domain:undertow:4.0">
    <buffer-cache name="default"/>
    <server name="default-server">
        <http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true" url-charset="GBK" decode-url="false"/>
        <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>
        <host name="default-host" alias="localhost">
            <!-- <location name="/" handler="welcome-content"/> -->
            <filter-ref name="server-header"/>
            <filter-ref name="x-powered-by-header"/>
            <http-invoker security-realm="ApplicationRealm"/>
            <filter-ref name="request-dumper"/>
            <access-log pattern="combined" directory="${jboss.home.dir}/standalone/log"/>
        </host>
            </server>
    <servlet-container name="default" default-encoding="GBK" use-listener-encoding="true">
        ………… ………… …………
    </servlet-container>
    <!-- <handlers>
        <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
    </handlers> -->
    <filters>
        ………… ………… …………
        <filter name="request-dumper" class-name="io.undertow.server.handlers.RequestDumpingHandler" module="io.undertow.core"/>
    </filters>
</subsystem>

 

  • 修改http請求設置:在http-listener標簽中,增加了url-charset和decode-url。其中url-charset默認使用的UTF-8,可以根據需要修改。decode-url指是否使用字符集解碼url和參數,默認為true。設為false則交由后續代碼進行解碼處理。http-listener的詳細配置屬性點擊這里
  • 修改容器默認字符集:在servlet-container標簽中,default-encoding設置所有應用的字符集(默認為utf-8),use-listener-encoding指是否使用listener定義的編碼。servlet-container的詳細配置屬性點擊這里
  • 移除Jboss默認歡迎頁面:配置文件中注釋的部分,就是jboss默認歡迎頁面的配置。直接注釋就是將其移除,也可以將默認地址映射到某個應用上。
  • 開啟http訪問日志:在host標簽下增加access-log這一標簽,即可將http請求的信息記在日志中,便於調試。directory是日志存放的目錄,默認文件名為access_log.log。pattern是要日志中記錄的信息,預定義了common和combined兩種模式,combined的信息豐富一些。自定義的輸出模式詳見此處
  • 輸出http請求和響應的信息:在filters標簽下增加名為request-dumper的filter,在host標簽下增加命名一致的filter-ref,就能在jboss日志中輸出每一個http請求的request和response信息,便於調試。

 

  • 應用部署
 <subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0">
            <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" runtime-failure-causes-rollback="${jboss.deployment.scanner.rollback.on.failure:false}"/>
        </subsystem>

全自動模式

在默認配置下,將war包上傳至${JBOSS_HOME}/standalone/deployments,服務器會在啟動時和每5000毫秒間隔,檢查deployments下的文件變化,部署應用。

半自動模式

增加屬性 auto-deploy-zipped="false"
上傳應用myApp.war至deployments文件夾后,在deployments文件夾下新建一個文件,命名為myApp.war.dodeploy,服務器檢測到這個文件后,則會開始執行部署。

手動模式

增加屬性scan-enabled="false"
此模式是官方推薦的生產環境部署應用方式,無需將應用上傳至deployments文件夾下。首先保證myApp.war在服務器上,假設其路徑為/usr/me/myApp.war
啟動服務器,並使用./jboss-cli.sh --connect命令進入命令行管理界面。執行命令deploy /usr/me/myApp.war部署應用。取消部署時,在命令行管理界面執行 undeploy myApp.war
應用的數據會在${JBOSS_HOME}/standalone/data/content下,並且standalone.xml最下方會出現deployments標簽,顯示已經部署的應用。



 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM