2011-04-07 4 views
-1

バニラのHttpServletの周りに数多くのWebアプリケーションを開発したチームで、新しいSpring Webアプリケーションの開発に取り組んでいます。私は春の新人です(は実行しないでください!)、私は "Vanilla Servlet"を活用するのに役立つチュートリアル、リファレンスドキュメント、本などを見つけるために最善を尽くしています。Springリファレンスデータの初期化にServlet.staticMethodが使用されていますか?

(Flex)クライアントのブラウザから必要なサーブレットを呼び出すことで、my last issueを回避することができました。問題は今、アプリケーションが起動されたときに呼び出す必要がある別のServlet(ソースは変更できません)があります。サーブレットはアプリケーション参照データの初期化に関わっています(これは本当に重要です)。

これは典型的な問題でなければなりません私には思える...他のチームは、春に変換するときに、この数年前に共通の課題となっている必要がありますので、なぜ私は私が必要なチュートリアルを見つけることができませんか?私はさまざまなSpringクラスのリサーチを試みましたが、これはどこにも行きません。

は、ここで私が試したものにいくつかのメモです:

  • ServletWrappingControllerが、これは、私が実際にはシングルトンDAOのコンストラクタ内のサーブレットを必要とするコントローラとして使用するためではありません。
  • ResourceServletこのクラス名は適切と思われますが、私は検索でそれを実行しましたが、これが役立つものかどうかは完全にはわかりません。
  • ServletForwardingController(mentioned here)、しかし私は適切な例を見つけることができません。
  • ServletWrappingController(also from the above question)、but -again-私は適切な例を見つけることができません。

ここでは野生のガチョウの狩猟をしていますか? Springアプリケーションの起動時にサーブレットで静的メソッドを呼び出す方法はありますか?

コードスニペットが役立つとは思えませんが、投稿していただければ幸いです。本当に、私の唯一の考えは、「サーブレットをweb.xmlで特定の方法で宣言する必要がありますか」と「これはSpringマネージドBeanとして特定の方法で宣言する必要がありますか」です。 (つまり、app-config.xml内)

私はサーブレットを編集できませんが、HttpServletを拡張していると伝えます。 doGetまたはdoPostを呼び出すのではなく、呼び出す必要のあるRPC呼び出しを行うサーブレットに静的メソッドがあります。誰でも特別な@MagicInjectHttpServlet注釈を知っている場合は、それを渡してください!

+0

私はSpringを使っていませんが、通常のServlet APIではこれに 'ServletContextListener'を使います。サーブレットは、いくつかのグローバル初期化を行うのではなく、個々のHTTPリクエストを処理するよう意図されています。 – BalusC

+0

質問がそのような方法でSpring特有のものかどうかは分かりません...可能であれば、サーブレットコンテナやSpringが、実行するHTTPリクエスト/セッションを "模擬"できると思います_some_初期化。あなたはそのようなものを何か見てきましたか? – blong

+0

"レバレッジ"の意味を説明できますか?既存のサーブレットから何を使用することを望んでいますか?その中のメンバーメソッドを呼び出すか、それはdoGet()ですか? –

答えて

0

は私が完全何が必要理解していないが、それはあなたが呼び出すために必要なだけの静的メソッドがgeniunelyだ場合、私は思っているだろうこと:

<bean id="myLegacyServlet" 
     class="com.legacy.thing.Servlet" 
     init-method="thatStaticMethod" /> 

<bean id="myGoodStuff" 
     class="com.my.stuff.MyStuff" 
     depends-on="myLegacyServlet"> 
    ... 
</bean> 

で十分です。あなたのレガシーオブジェクトがサーブレットであるという事実は、何の違いもありません。重要なことは、init-methodがすばらしいと早く呼び出されることを確認していることです。

+0

遅れて申し訳ありません。これは正解と思われる。私が過ごしていたエラーの根本的な原因に私は年齢がかかり、クラスパスに戻ってきました。もちろん、それは春の問題のラインの下に道でしたか? - > WEB-INF/lib? - >サーブレット? - >サーブレットが呼び出すネイティブライブラリ(DLL)? - >サーバーの設定? - >クラスパスの内側/外側の不一致。私はこれが正解だと信じる理由は、自分の設定にリストアップしたこれらの2つのBeanがすべて私のエラーが始まる前に持っていたからです!私は昼食後にこれを書き直して展開します! :) – blong

関連する問題