5

春:2.5.6.SEC01

DWR:2.0.5

DWRのセッションスコープBeanを使用したいと思います。Beanをシングルトンに構成すると、正常に動作します。私はこの家庭教師を読み(http://directwebremoting.org/dwr/server/integration/spring.html)、applicationContext.xmlを変更しましたが、それでもどこかで間違っています。

私のapplicationContext.xml:

http://pastebin.com/m8d57f18

それはうまくいきますが、AJAX関数を使用すると、次の例外が発生します。

11:31:09,593 INFO [DefaultRemoter] Exec:DBTestAjaxFunc.testJNDI()11:31:09,609 WARN [DefaultRemoter]メソッドの実行に失敗しました:org.springframework.beans.factory.BeanCreationException:「scopedTarget.dbtestajax」という名前のBeanの作成中にエラーが発生しました:スコープ「セッション」は現在のスレッドに対してアクティブではありません。シングルトンから参照する場合は、このBeanのスコープ付きプロキシを定義することを検討してください。ネストされた例外はjava.lang.IllegalStateExceptionです:スレッドにバインドされたリクエストが見つかりません:実際のWebリクエストの外部でリクエスト属性を参照していますか、それとも最初に受信したスレッドの外部でリクエストを処理していますか?実際にWebリクエスト内で操作していて、それでもこのメッセージを受信する場合は、コードがDispatcherServlet / DispatcherPortletの外部で実行されている可能性があります。この場合、

aopプロキシが作成されていないようですが、理由はわかりません。

クラスパスのライブラリ:

  • アスペクトjrt.jar
  • アスペクトjweaver.jar
  • cglib-nodep-2.2.jar
  • dwr.jar
  • spring.jar
  • spring-aop.jar
  • 春-dwr-2.0.xsd
  • spring-web.jar
  • 春-webmvc.jar

何か案が?(ありがとう!)

4

2 に答える 2

7

セッション スコープまたはリクエスト スコープの Bean が Spring で機能するには、現在のリクエストとセッションを現在のスレッドに関連付ける必要があります。通常、これは によって行われDispatcherServletますが、それを使用していない場合は、代替手段が必要です。

この場合の代替手段はRequestContextListenerまたはRequestContextFilterで、どちらも に接続できweb.xml、両方の os を使用すると、リクエスト スコープとセッション スコープの Bean を使用できます。web.xmlDWR 要求がそれらを通過するように構成するようにしてください。

于 2010-01-26T15:28:17.263 に答える
1

セッション スコープ Bean がグローバルまたはシングルトンによってアクセスされているかどうかを確認します。その場合、呼び出し Bean のスコープを下げる必要があります。

于 2011-03-30T18:08:00.550 に答える