2011-08-09 7 views
0

私は簡単なタスクを実行したい!それが可能かどうかは分かりません!

私はRunnableを実装しているGroovyクラスを持っており、ThreadPoolを使って実行しています!私は私のRunnableクラスでやりたいことは以下の通りです:

public void run() { 
      EventPhoto.withTransaction { status -> 

       EventPhoto photo = new EventPhoto(event:eventInstance) 

       photo.imageUrl = "${resource(dir:'images/uploads',file:image.name, absolute:true)}" 
       photo.thumbnailUrl = "${resource(dir:'images/uploads',file:thumb.name, absolute:true)}" 
      } 
    } 

私のスレッドは、私は次のエラーを取得していますWebRequestクラスの内部で実行されていないようなものは、次のとおりです。

java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet/DispatcherPortlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request.

だからありますとにかく$ resource()をまだ使用していますか?あなたがやろうとしているものを達成するための方法を紹介します

おかげ

+0

あなたはこのerroeを生成している 'save()'の呼び出しではないのですか? –

+0

@Don yep!私は同じコードw/o $ {resource()}を試して、それは動作します! –

+0

この混乱を避けるためにあなたの投稿から 'save()'への呼び出しを削除しました –

答えて

1

Here is some information。また、あなたがやっていることはデザインが悪いことを示唆しています。

0

あなたのバックグラウンドスレッドは、デフォルトで、あなたの写真を保持するために使用されるHibernateセッションにアクセスできません。 Executorのようなプラグインを使用して、ドメインオブジェクトをバックグラウンドスレッドに保存することができます。

+0

私の問題は持続していません!永続性は正常に動作しています!問題は "$ {resource()}"を使用しています –

関連する問題