2010-08-01 2 views
5

У меня проблемы с развертыванием приложения лифтов с использованием бобы предприятия java. Там простой пример:лифт с предприятиями java beans

@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) 
} 
} 

Там в NullPointerException на линии с bean.a, так что это означает, что bean не были инициализированы хорошо. Зачем?

ответ

2

Not Lift-aware, но @EJB стандартно доступен только для сервлета, фильтра, прослушивателя контекста, управляемых bean-компонентов jsf, ejbs, webbeans и других компонентов Java EE. Примечание. JSP-классы из-за их динамической генерации/компиляции не имеют права использовать @EJB и вынуждены искать EJB, даже если они технически считаются сервлетом во время выполнения.

В качестве альтернативы инъекции вы можете использовать поиск. Если вы находитесь на сервере Java EE 6, любой Java-код может искать EJB через стандартное имя java: global JNDI.