サーブレットのみをホストする小さなプロビジョニング サーバーがあります。tomcat でホストされています。サーブレットを変更せずに変更できるように、構成可能または外部にしたいサーブレットにハードコードされた値はほとんどありません。私のオプションは何ですか?
4 に答える
私が考えることができるオプション:
- サーブレットに固有の場合は、DD (web.xml) でサーブレットの初期化パラメーターとして定義するか、注釈を使用して定義します。このOracleチュートリアルを見てください
- Web アプリ全体で共通の場合は、DD (web.xml) でコンテキスト パラメーターとして定義するか、注釈を使用して定義します。
- それらを外部プロパティ ファイルで定義します。次に、クラスパスに保持されているプロパティ ファイルをロードできます。
Java EE 7 チュートリアル - サーブレット (サーブレット 3.1)
PS:私はあなたにポインタを与えました.インターネットで簡単にそれを達成する方法の例を得ることができます.
いくつかのオプションがあります:
値がサーブレット固有の場合、デプロイメント記述子 ( web.xmlファイル)でそれらをServlet Init-Parameterとして構成できます。
<servlet> <servlet-name></servlet-name> <servlet-class></servlet-class> <init-param> <param-name>${param-name}</param-name> <param-value>${param-value}</param-value> </init-param> </servlet>
そして、それらを使用して取得します
ServletConfig#getInitParameter(String)
:getServletConfig().getInitParameter(paramName);
値がweb-app 固有の場合は、コンテキスト パラメーターとして構成できます。
<web-app ...> <context-param> <param-name>${param-name}</param-name> <param-value>${param-value}</param-value> </context-param> </web-app>
そして、それらを使用して取得します
ServletContext#getInitParameter(String)
:getServletContext().getInitParameter(paramName);
もう 1 つのオプションは、これらの値をプロパティ ファイルに格納し、そこから値をサーブレットにロードすることです。プロパティ ファイルを Web-App クラスパスに追加できます (フォルダー内に配置でき
/WEB-INF/classes
ます。Eclipse IDE を使用している場合は、/src
フォルダー内に配置し、リソースとしてロードします。Properties props = new Properties(); props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("webapp.properties"));
関連項目:
誰もが言ったように、多くの方法があります.これは別のアプローチです(これは私が今していることです)
A Constants
Class
(公開Static
文字列定数)
たとえば、veriosn 名、支店名などXMl
と呼ばれるファイルproperties.xml
<property name="version">XX..XX</property>
<property name="branch">XX.13.</property>
のweb.xml
<servlet>
<servlet-name>StartUpServlet</servlet-name>
<display-name>StartUpServlet</display-name>
<servlet-class>com.nextenders.server.StartUpServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
そのサーブレットは、起動時に実行されますtomcat
と私StartUpServlet
public class StartUpServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void init() throws ServletException {
super.init();
setVersion(); //I'l parse that file and assign constants.And use else where
}
したがって、アプリに触れずに、プロパティを変更しxml
て再起動しますApp.
web.xml で構成できるサーブレットに init パラメータを提供できます。このチュートリアルは、必要なものを達成するのに役立ちます。