Я пытаюсь самостоятельно инициализировать свои ресурсы веб-сервисов, переопределяя метод getSingletons из класса Application. Я использую сервер приложений Jboss EAP 6.0. Ниже приведен кодОшибка поиска Ejb при переопределении метода getSingletons из класса Application
@ApplicationPath("/rest")
public class MyApplication extends Application {
private final Set<Object> singletons = new HashSet<Object>();
public MyApplication() {
singletons.add(new StudentFacade());
}
@Override
public Set<Object> getSingletons() {
return null; // Accidentally kept it as null but still my webservice was working. Dont know how it was working.
}
}
@Path("student")
public class StudentFacade {
@Resource(lookup = "java:global/ejb-beginner-sessions-ear/ejb-beginner-sessions-impl/StudentServiceBean!com.ejb.beginner.sessions.api.StudentService")
private StudentService studentService;
private static final Logger LOGGER = Logger.getLogger(StudentFacade.class.getName());
@GET
@Path("list")
@Produces(MediaType.APPLICATION_JSON)
public Student getStudents() {
LOGGER.info("studentService: " + studentService);
return new Student();
}
}
Тогда я понял, что метод getSingletons возвращается нулем, и спрашиваю, как мой вебсервис все еще работает.
Я думал, что, поскольку я не возвращаю синглтоны, сервер приложений инициализирует веб-службы самостоятельно. Поэтому я удалил @Resource и использовал @Inject, и я получил исключение WELD, заявив, что зависимость не найдена.
Затем я сменил его, чтобы вернуть синглтоны, а затем @Resource не искал ejb, а studentService был равен нулю. Поэтому я использовал InitialContext для поиска ejb, и он работал.
try {
InitialContext initialContext = new InitialContext();
StudentService studentService = (StudentService) initialContext
.lookup("java:global/ejb-beginner-sessions-ear/ejb-beginner-sessions-impl/StudentServiceBean!com.ejb.beginner.sessions.api.StudentService");
LOGGER.info("studentService1: " + studentService);
} catch (NamingException e) {
e.printStackTrace();
}
Может кто-нибудь пожалуйста, скажите мне
- Почему сервер приложений инициализировать WebService, несмотря я вернулся нулевой
- Когда я вернулся нуль, почему @Inject не удалось, и только @Resource работал.
- Когда я вернул синглоты, почему @Resource не удалось и только InitialContext работал.
Я только что обнаружил, что мой ejb аннотируется с помощью '@ Remote', и поэтому' @ Inject' потерпел неудачу. –