Seam を初めて使用するので、依存関係の注入に問題があります。間違った方法で何かをしている可能性があります。
コントローラー内から起動される新しいスレッドに依存関係を注入する必要があります-例外は発生しませんが、単に発生しますnull
。最初に、スレッド内で単純に再利用しようとしd1
ましたが(以下を参照)、null
このオブジェクトに再び注釈を付けるというアイデアがありました@In
...残念ながら同じことが起こりました(nullになりました)!!!
@Scope(ScopeType.CONVERSATION)
@Name("myController")
public class MyController{
@In(create = true)
private Dependency1 d1; //ok, gets injected with no problems!
public void importantMethod(){
//this part of the method is important and is fast
//but below comes an expensive part that takes some minutes
new Thread(new Runnable(){
@In(create = true)
private Dependency1 anotherD1; //I still need d1 here!!!
@Override
public void run(){
//I want to run expensive code here.
//A new thread is required in order to leave
//the visitor free to go else where on the web site
//First trial was to make d1 final and simply use it here!
//d1.doExpensiveStuff();
};
}).start();
}
}
なぜこれが起こっているのか誰にも分かりますか?DI/Seam/Threading を使用する際の良い方法はありますか?