2017-12-05 9 views
0

Tomcatサーバー上のSpringコンテナ内で実行される小さなREST APIを開発しました。これは、APIへの最初の呼び出しの前に起こるのだろう春休み:最初の呼び出しの前にホストベースURLを取得

My URL is http://myHostname:8080/myContext/url-pattern 

表示されます

String myUrl = ... 
LOGGER.info("My URL is {}", myUrl); 

:私のブートシーケンスの一部として、私は、ログファイルにベースURLをダンプできるようにする必要があります。アプリケーションが起動したらログを確認し、curlまたはwgetを使用して、アプリケーションが応答していることを確認します。

すべて私が見てきたソリューションはHttpServletRequestに依存するが、これは理想的には私はしかし私ドン、私のクラスに注入春オブジェクトから完全なパターンをつかむしたいRESTインターフェース

への呼び出しが必要ですそのようなオブジェクトが存在しない場合は、さまざまな情報源から情報を構築してください。

は、これまで私が読んだ:

  • myhostnameと - InetAddress.getLocalHost().getHostName();
  • あるMyContext - ウェブで定義されているようservletContext.getContextPath()
私はまだポートを取得するために持って

url-pattern( .xml)をどこかから取得します。

注:ホストをロードバランサの背後に置くと、REST APIのドメインはmyHostnameと一致しません。これは問題ありません。

答えて

0

web.xmlの代わりにWebApplicationInitializerを使用している場合は、onStartupメソッドでコンテキストオブジェクトを取得できます。

public class WebMVCApplicationInitializer implements 
    WebApplicationInitializer { 

    public void onStartup(ServletContext container) { 
     XmlWebApplicationContext appContext = new XmlWebApplicationContext(); 
     ServletRegistration.Dynamic registration = 
     container.addServlet("dispatcher", new DispatcherServlet(appContext)); 
     registration.setLoadOnStartup(1); 
     registration.addMapping("*.request"); 
    } 
} 

あなたは、サーバーのファイルシステム上の絶対ファイルパスを取得するにはgetRealPathメソッドを呼び出すことができます。 ServletContextの参照:here

関連する問題