1

次のエントリがweb.xmlあり、Java ファイルにそのクラスのインスタンスが必要です。どうすればよいですか?

<servlet>
    <servlet-name>DummyServlet</servlet-name>
    <servlet-class>javax.faces.webapp.Xxxx</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
4

2 に答える 2

1

現時点では、サーブレット コンテナが特定のサーブレットの単一のインスタンスを作成し、リクエストに対応するためにスレッドを生成するため、それができるとは思えません。コンテナによっても使用されているその 1 つのインスタンスにアクセスすることは、単にあなたの関心事ではありません。

(現在は非推奨) もありServletContext.getServlet("yourClassName")ます。DI と優れた設計では回避できないサーブレット インスタンスを制御する必要がある状況を想像するのに苦労しています。具体的な問題は何ですか?

于 2013-01-24T12:49:15.827 に答える
0

通常はそうしません。サーブレット コンテナーは、web.xml 内のすべてのサーブレット要素に対して単一のサーブレット インスタンスをインスタンス化し、これらを使用して要求を処理し、応答を生成する役割を果たします。

それ以外の場合は、おそらく web.xml を解析し、 Class.forName(className) を使用してサーブレット クラスを取得し、次にデフォルト コンストラクターが存在することを前提として clazz.newInstance() を使用してインスタンスを作成する必要があります (これはサーブレットであるため、そうすべきです)。 .

于 2013-01-24T12:49:24.537 に答える