apache-tomcat-5.5.15, Java EE 5, Eclipse, WindowsXP
いいタイトルが思いつかなかった・・・(´・ω・`)
localhost:8080
で動作させている AP サーバ(Tomcat)上の Java アプリにおいて HttpServletRequest.getServerName()
で取得できるホスト名(サーバ名)を localhost
以外にしたかったのです。
それで前の記事に書いたバーチャルホストの設定をやったのだけど、いくらバーチャルホストを増設しても、HttpServletRequest.getServerName()
で取得できるサーバ名は localhost
のまま・・・
結果的に、以下の記事の説明がどんぴしゃだった。
本来は経由されたサーバ(Web サーバや Proxy サーバなど)のサーバ名を指定することで、動的に完全な URL を生成できるようにするためとかに必要になる設定。
ですが、実体として「経由するサーバ」が存在しなくても、Tomcat の設定を変えてやるだけで HttpServletRequest.getServerName()
で取得できるサーバ名を localhost
以外にすることができました。
設定ファイルに proxyName を指定する
Tomcat の server.xml の Connector 要素に proxyName と proxyPort を追加:
<Service name="Catalina"> <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true" proxyName="hogeserver.local" proxyPort="8080" ←★ここを追加 /> <Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> <Host name="localhost" appBase="webapps2" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="/WebApps" cookies="true" reloadable="true" docBase="C:\project\eclipse\workspace\webapps\WebContent" workDir="C:\project\eclipse\workspace\webapps\work" /> </Host> </Engine> </Service>
このようにすると、localhost:8080
でアクセスしたアプリケーション内で HttpServletRequest.getServerName()
によって hogeserver.local
というサーバ名を取得できるようになったのでした。
本来の使い方とは外れていますが、外れているからこその自分メモだよね~ってことで(誰に言い訳してるの?)。
('ω`)