2012-02-09 13 views
5

私はJettyを埋め込みましたが、初期化パラメータを設定しようとしています。Jetty setInitParameterがパラメータを初期化していません

メインクラスメインCGIを拡張Cgiののサーブレットを作成します。

メインの中で、私は次のコードを持っている:

public void init(ServletConfig servletConfig) throws ServletException { 
     System.out.println(servletConfig.getInitParameter("commandPrefix")); 
     super.init(servletConfig); 
} 

たびに、それがためにnullを出力します:

ServletContextHandler context2 = new ServletContextHandler(ServletContextHandler.SESSIONS); 
context2.setContextPath("/cgi"); 
context2.setResourceBase("./cgi-bin"); 
context2.setInitParameter("commandPrefix", "perl"); 
context2.addServlet(new ServletHolder(new Cgi()), "/"); 
server.setHandler(context2); 

Cgiの内を、私は、パラメータを見て確認してくださいgetInitParameter呼び出し。それで、Cgiが本当にこれを使う必要があるとき、それは設定されていないので、そうではありません。なぜこれが起こっているのでしょうか?

答えて

9

ServletContextHandlerにInitParameterを設定していますが、ServletHolderに設定する必要があります。

(これはやや紛らわしいですが、私が知っている)

+0

ありがとうございました!これは過去の数週間の狂気のように私を混乱させている – joslinm

2

あなたは、コンテキストの初期化パラメータではなく、サーブレットのinitパラメータを設定しました。したがって、サーブレットのinitパラメータとしてではなく、コンテキストのinitパラメータとして取得する必要があります。

System.out.println(servletConfig.getServletContext().getInitParameter("commandPrefix")); 

また、あなたはもちろん、代わりに、サーブレットのinitパラメータとして設定することができますが、この方法では、パラメータは唯一ではなく、同じコンテキストで実行されている他のすべてのサーブレットに関連するサーブレットに利用できるようになります。具体的な機能要件に応じて、これはあなたが望むものかもしれません。

関連する問題