12
使用Weld-SE 2.1.2.Final獲取bean並從線程調用它時,遇到以下異常:從線程調用bean時,沒有活動上下文類型爲javax.enterprise.context.RequestScoped
異常線程 「main」 org.jboss.weld.context.ContextNotActiveException:WELD-001303:對於範圍類型沒有有效上下文javax.enterprise.context.RequestScoped
我的豆被標註與@RequestScooped。如果我註釋@ApplicationScoped,那麼它工作正常,但我需要保持@RequestScooped。
這裏是一個再現:
public static void main(String[] args) throws Exception {
Weld weld = new Weld();
WeldContainer container = weld.initialize();
final MyPojo pojo = container.instance().select(MyPojo.class).get();
Thread t = new Thread() {
public void run() {
System.out.println(pojo.ping()); // This call fails
}
};
t.start();
t.join();
System.out.println(pojo.ping()); // This call succeed
weld.shutdown();
}
@RequestScoped
public class MyPojo {
public String ping() {
return "pong";
}
}
你遇到這樣的行爲呢?任何想法,使這項工作嗎?
除非我在創建線程之前重複請求上下文創建和激活它沒有爲我工作。我相信在你以前的答案中就是這種情況。 – Nader 2014-10-30 06:40:55
是的你是對的,我把它放回去。 – kaos 2014-10-30 10:33:18
太棒了!非常感謝您的幫助 ! – Nader 2014-10-30 11:14:58