EJB 3.1: Синглтон-бин не вводится внутри другого бина без состояния, хотя оба бина регистрируются - PullRequest
5 голосов
/ 07 февраля 2012

Вот мой компонент, который пытается внедрить одноэлементный компонент InformationService :

@Path("/information/{name}")
@Stateless (name="InformationResource")
public class InformationResource {

    @EJB
    private InformationService appService;

    @GET
    @Produces(MediaType.APPLICATION_XML)
    public Information getInfo(@PathParam("name") String name){
        return appService.getMap().get(name);
    }

    @PUT
    @POST
    @Consumes(MediaType.APPLICATION_XML)
    public Information putInfo(@PathParam("name") String name, Information info){
        return appService.getMap().put(name,info);
    }

    @DELETE
    public void deleteInfo(@PathParam("name") String name){
        appService.getMap().remove(name);
    }
}

Это InformationService класс

@Singleton
public class InformationService {

    private Map<String,Information> map;

    @PostConstruct
    public void init(){
        map = new HashMap<String,Information>();

        map.put("daud", new Information("B.Tech","Lucknow"));
        map.put("anuragh", new Information("M.Sc","Delhi"));
    }

    public Map<String,Information> getMap(){
        return map;
    }

}

Это часть очень простой реализации JAX-RS, и я разверну ее как войну в JBoss 6.1 Final.Проблема в том, что InformationService выдает исключение NullPointerException, когда я делаю правильный запрос get.Если я инициализирую appService явно, все работает нормально.Почему @ EJB аннотация не работает?

Ответы [ 2 ]

0 голосов
/ 15 сентября 2015

Убедитесь, что ваш @Singleton - javax.ejb.Singleton. Любые другие исключения перед NPE?

0 голосов
/ 10 февраля 2012

Используете ли вы Джерси в качестве реализации REST? Если это так, EJB-инъекция не поддерживается из коробки.

Эта ссылка предоставляет дополнительную информацию по этому вопросу, а также решение.

...