2010-08-01 26 views
5

Kurumsal java fasulye kullanır kaldırma uygulaması dağıtmak ile sıkıntı yaşıyorum. basit bir örnek vardır:kaldırma

@Stateless 
class TestEJB { 
def a = "hello" 
} 

object TestApi extends XMLApiHelper{ 
@EJB 
private var bean:TestEJB = _ 
def createTag(a:NodeSeq) = 
def dispatch: LiftRules.DispatchPF = { 
    case Req("test" :: Nil, "", GetRequest) => 
    () => PlainTextResponse(bean.a) 
} 
} 

hattında NullPointerException, bean.a ile var ki araçlar, bean iyi başlatılmamış olduğunu. Niye ya?

cevap

2

Not Lift-aware, ancak @EJB standart olarak yalnızca sunucu, filtre, içerik dinleyicisi, jsf yönetilen fasulye, ejbs, webbeans ve diğer Java EE bileşenleri için kullanılabilir. Not JSP sınıfları, dinamik oluşturma/derleme nedeniyle, @EJB'yi kullanmaya uygun değildir ve teknik olarak çalışma zamanında bir sunucu olarak sayılsalar bile EJB'leri aramak zorundadırlar.

Enjeksiyona alternatif olarak, arama kullanabilirsiniz. Bir Java EE 6 sunucusundaysanız, herhangi bir java kodu standart "java: global" JNDI adıyla EJB'yi arayabilir.