1. 程式人生 > >JBoss AS 7 中如何配置多個二級域名

JBoss AS 7 中如何配置多個二級域名

  1. <Host name="abc.abc.com" >  
  2. <Alias>xxx.domain.comAlias>  
  3. >  

此時即可用 xxx.domain.com 訪問

附:本地測試方法:

在C:\WINDOWS\system32\drivers\etc下,在hosts 檔案中新增你的域名對映。本地嘛

只要對映成:127.0.0.1       localhost
                        127.0.0.1       xxx.domain.com
 

本地對映的作用:當你訪問一個websit的時候,你的pc首先會查詢這個hosts檔案,看是否有相應的網站對映,如果有就直接訪問指定的 IP 了.測試時一定要注意埠號,如果不是80 可在域名後追加.

實踐

作者按照上述內容反覆試驗,發現並不能實現JBoss 7在Standalone模式下的域名解析。因此JBoss 7的朋友就直接參考下面的現成方法吧。

我的理解和方法總結

關於專案目錄下的jboss-web.xml

這個檔案確實需要,並且應該放置在WEB專案的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>
	<virtual-host>WitDomain</virtual-host>
</jboss-web>

首先我來解釋一下這個檔案中一些內容的作用。  這個 http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd 檔案中,定義了jboss-web.xml檔案中使用的各種節點的名稱、節點中可以包括的內容以及資料型別。其實這個檔案的版本已經和JBoss 7有差異了,但是自己稍微注意下,還是不影響使用。在這個模板檔案中,有jboss-web節點可以包括的內容:
<!ELEMENT jboss-web (class-loading?, security-domain?, context-root?,
   virtual-host*, use-session-cookies?, replication-config?, resource-env-ref*,
   resource-ref* , ejb-ref* , ejb-local-ref*, depends*)>

大家可以下載看看,在這個DTD檔案中,定義了在跟節點 <jboss-web>標籤中可以出現零個或多個<Virtual-host>標籤(標籤後面是*,表示零個或多個),但是如果你真的這樣幹,重啟一下JBoss 7你就會發現報錯了。說明在JBoss 7中jboss-web.xml只能包含一個<Virtual-host>標籤。 那我的檔案中為什麼定義的WitDomain,而不是域名?請耐心看完你就知道了。 我的檔案中為什麼沒有定義<context-root>標籤?因為根據測試,定義這個標籤的目的是讓域名對映為某個路徑,我不需要,如果是想對映為域名根路徑,那麼只需要定義
<context-root>/</context-root>

這一句就可以了。關於這句的作用,大家多多嘗試,不難的。

關於standalone.xml

1、定義域名對映

下面就是本文的另一個重點,將在此檔案中配置域名。主要修改的是<subsystem xmlns="urn:jboss:domain:web:1.0" 這個節點,檔案拉到最後。把這個節點的內容修改為
<subsystem xmlns="urn:jboss:domain:web:1.0" default-virtual-server="default-host">
    <connector name="http" protocol="HTTP/1.1" socket-binding="http" scheme="http"/>
    <virtual-server name="default-host" enable-welcome-root="true">
        <alias name="localhost"/>
    </virtual-server>
    <virtual-server name="WitDomain" default-web-module="ADMMAN">
        <alias name="aaa.gicp.net"/>
        <alias name="bbb.uicp.cn"/>
        <alias name="ccc.uicp.cn"/>
        <alias name="wita"/>
        <alias name="192.168.0.128"/>
    </virtual-server>
</subsystem>

去掉原有 <virtual-server name="default-host" ... 節點中的 <alias name="example.com"/>。因為我覺得沒有必要保留了。 增加了 <virtual-server name="WitDomain" 的部分(同時也說明在該子系統中可以出現多個virtual-server節點),在<alias name節點中定義每個域名,這樣就會有三個域名了,後面的兩個是因為本地訪問不方便,乾脆也把伺服器的名字和IP定義成了域名,果然就把JBoss 7騙過去了。 重要說明:
<virtual-server name="WitDomain" default-web-module="ADMMAN">

上面這一句中,name的內容要和jboss-web.xml中的<virtual-host>內容完全相同,意思是定義一組域名對應到這個專案。而default-web-module屬性則必須是你這個專案的WAR檔案的主幹檔名,不包括字尾,此屬性是必須的,而且在指定後,jboss-web.xml中就不需要指定context-root標籤了。 大家對比著看我發的兩段xml就會明白了。

2、修改埠和IP(附加的說明)

在standalone.xml中,拉到最下面,你會看到類似這樣的內容
    <interfaces>
        <interface name="management">
            <inet-address value="${jboss.bind.address.management:192.168.0.128}"/>
        </interface>
        <interface name="public">
            <inet-address value="${jboss.bind.address:192.168.0.128}"/>
        </interface>
    </interfaces>
    <socket-binding-group name="standard-sockets" default-interface="public">
        <socket-binding name="http" port="8082"/>
        <socket-binding name="https" port="8443"/>
        <socket-binding name="jmx-connector-registry" port="1090" interface="management"/>
        <socket-binding name="jmx-connector-server" port="1091" interface="management"/>
        <socket-binding name="jndi" port="1099"/>
        <socket-binding name="osgi-http" port="8090" interface="management"/>
        <socket-binding name="remoting" port="4447"/>
        <socket-binding name="txn-recovery-environment" port="4712"/>
        <socket-binding name="txn-status-manager" port="4713"/>
    </socket-binding-group>

interface中定義IP,在socket-binding name="http" 中定義常規的埠號。如果在interface標籤中,management和public介面定義的IP相同,則可以通過JBoss 7 預設的歡迎頁面來訪問後臺管理。