私のアプリケーションは、Spring framework 3.1.2
に展開されたベースの Web アプリケーションですApache tomcat 6
。
アプリケーション(サーバー)の起動時に、実行中のアプリケーションのポート番号とホスト名を取得する必要があります。そのため、プロパティでそれをオーバーライドし、その他の Bean の初期化に必要です。
スプリングは、これらの詳細を取得し、サーバーの起動時に設定するオプションを提供していますか?..
私のアプリケーションは、Spring framework 3.1.2
に展開されたベースの Web アプリケーションですApache tomcat 6
。
アプリケーション(サーバー)の起動時に、実行中のアプリケーションのポート番号とホスト名を取得する必要があります。そのため、プロパティでそれをオーバーライドし、その他の Bean の初期化に必要です。
スプリングは、これらの詳細を取得し、サーバーの起動時に設定するオプションを提供していますか?..
以前に尋ねられた 2 つの質問を見てみましょう: Get the server port number from tomcat without a request and I need to know the HTTP and HTTPS port my Java webapp is running on webapp startup . そこには、コネクタからポートを取得する方法が表示されます。コネクタには、ホスト名を提供する getDomain メソッドもあります。
スプリングなしで取得する方法を知っているので、それらの詳細を取得し、それらのインスタンス化の詳細を必要とする他の Bean にそれらを提供する Bean を持つことができます。これを行うにはいくつかの方法があります。
1)ポート、ホスト名を取得し、必要なBeanをインスタンス化するSpringファクトリーBeanを作成します
2)それらの詳細を保持する別のBeanを用意し、そのBeanを使用して他のBeanを構築します
3)アプリケーションの詳細をポートとドメインでオーバーライドし、それらを必要とするBeanをインスタンス化するときに、新しいBeanのためにそれらを読み取るinitメソッドを持っています
デフォルトでは、Tomcat は TCP/IP ポート番号 で実行されます8080
。
手順
C:\apache-tomcat-6.0.18\conf\server.xml
(Tomcat をインストールした場所) に移動します。server.xml ファイルで、次のようなコネクタ ポートを見つけます。
<connector port="8080" protocol="HTTP/1.1" connectiontimeout="20000" redirectport="8443">
</connector>
Connector タグの port はポート番号です。
ホスト名の検索:
手順
1. Navigate to `C:\WINDOWS\system32\drivers\etc`
または
start->All Programs->Run-> type 'drivers' (引用符なし)->etc
127.0.0.1 localhost
これにより、ホスト名が何であるかを理解できます。
ありがとう。
doGet または doPost メソッドに渡された ServletRequest オブジェクトには、この情報を提供するgetServerName()
およびメソッドがあります。getServerPort()
例:
public void doGet(ServletRequest request, ServletResponse response) {
System.out.println("Host Name = " + request.getServerName());
System.out.println("Port Number = " + request.getServerPort());
}