czwartek, 12 listopada 2009

Ejb dependency injection w JBoss AS

Pol dnia męczyłem się ze wstrzykiwaniem zaleznosci w Jboss AS.

Miałem bezstanowe ziarno ejb implementujące lokalny interface:


@Stateless(mappedName="ABC", name="ABC")
public class ABCService implements ABCLocal{
...
}


, które próbowałem wstrzyknąć do servletu używając


@EJB
ABCLocal abc;


Ponadto próbowałem ustawiać parametry adnotacji EJB

@EJB(beanName="ABC)
ABCLocal e1;
@EJB(beanName="ABC/local")
ABCLocal e2;
@EJB(mappedName="ABC")
ABCLocal e3;
@EJB(mappedName="ABC/local")
ABCLocal e4;
@EJB(name="ABC")
ABCLocal e5;
@EJB(name="ABC/local")
ABCLocal e6;


- każdorazowo wartością był null.

Zgodnie z dokumentacją JBossa ziarna są rejestrowane w JNDI pod nazwa_ear/nazwa_ejb/local oraz nazwa_ear/nazwa_ejb/remote. Niestety to rozwiązanie nie odpowiadało mi, gdyż nie chciałem uzależniać działania aplikacji od nazwy archiwum ear.

Ostatecznie zdecydowałem sie na dodanie do ziarna adnotacji


@LocalBinding(jndiBinding = "ABCApp/ABC/local")


dzięki czemu mogę sie odwoływać do ziarna za pomocą


@EJB(mappedName="ABCApp/ABC/local")
ABCLocal abc;

Brak komentarzy:

Prześlij komentarz