Spring MVC を使用して Java Web アプリを作成しています。データベースを通過するバックグラウンド プロセスがあり、ユーザーに電子メールで送信する必要がある通知を見つけます。これらの電子メール メッセージには、アプリケーションへのハイパーリンクを含める必要があります。これは、Web アプリではかなり一般的なパターンのようですが、問題が発生しています。
サーバー名とコンテキスト パスを使用して、アプリケーションの完全修飾 URL を取得するにはどうすればよいですか? HttpServletRequest のどのメソッドにもアクセスできません。これは、Web 要求に応答するのではなく、バックグラウンド プロセスとして実行しているためです。私にできる最善のことは、ServletContext にアクセスすることです。
現在、ベース URL を構成ファイルに入れて起動時に読み取るようにしていますが、このアプリケーションはライセンスされて顧客のアプリケーション サーバーにデプロイされる予定であり、できれば手動で構成する必要がないようにしたいと考えています。