サーブレットを実行して、リクエストからサーバー名、サーバーポート、およびContextPathを取得したいと思います。しかし、ユーザーが対話してサーブレットを呼び出したくありません。このサーブレットをJavaコードで実行したい。それが可能かどうかはわかりません。おすすめをお願いします。
4 に答える
単純にURLを使用してサーブレットをリクエストしてみませんか。
より洗練された使用法については、HttpClientを試してください。
コードを実行してリクエストから情報を抽出したいだけなら、なぜサーブレットを呼び出そうとしているのですか? メソッドをどこかに書いて、それを呼び出すだけです。
また、サーブレット フィルターを使用してすべてのリクエストでこの情報を抽出し、結果を属性として HttpServletRequest オブジェクトに追加して、リクエストを処理する他のサーブレットがそれを見つけて使用できるようにすることもできます。
起動時にサーブレットをロードする場合は、これを web.xml 構成内に追加できます。
<servlet>
...
<load-on-startup>1</load-on-startup>
</servlet>
サーブレットが x 分ごとにユーザーの操作なしでサービスを呼び出すようなことをしている場合は、おそらく別のことをしたいと思うでしょう。
を使用しServletContextListener
て、Web コンテキストが開始されたときにリッスンし、必要なコードを開始できます。
http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletContextListener.html
回答ありがとうございます 実際、私の問題は次のとおりです。WebアプリケーションとWebService(別のサーバー上)があります。Web アプリケーションが (特定の期間後に) Web サービスを呼び出してデータ (ドメイン、ポート、コンテキスト パスなど) を Web サービスに送信し、Web アプリケーションがデプロイされている場所を知ることができるようにします。
この問題を解決するために、WebService を呼び出すサーブレットを作成しました。このサーブレットを使用して HttpServletRequest オブジェクトがあり、ドメイン、ポート、コンテキスト パスを取得できます。次に、データを Web サービスに送信できます。しかし、ユーザーの操作なしでこのサーブレットを(特定の期間後に)実行する方法がわかりません