У меня есть некоторые проблемы с поиском, как заставить JAX-RS 2.0 работать с CDI на wildfly 10. Я получил ответ на другой post, который был сочетание JAX-RS 1.0/2.0, и они использовали другие зависимости, чем включенные библиотеки в Wildfly.Как использовать @Inject и CDI для корпоративных бобов с JAX-RS 2.0 (Resteasy)
Моя цель - внедрить единый корпоративный компонент, который инкапсулирует бизнес-логику, которая находится в той же банке в моем ресурсе REST. Класс ресурсов REST должен быть областью действия запроса и иметь дело только с функциональностью REST (запрос и ответ). Мои классы POJO обозначаются JAXB.
Как использовать JAX-RS 2.0 с включенными библиотеками CDI в Wildfly 10?
Компонент интерфейса
@Local
public interface DateBean {
Date getLocalFormatDate();
}
Компонент
@Singleton
public class DateBeanImpl implements DateBeanLocal {
private static final Logger LOG = Logger.getLogger("org.test.logger");
public DateBean() {
LOG.fine("DateBean");
}
@Override
public Date getLocalFormatDate() {
Calendar cal = Calendar.getInstance();
TimeZone localZone = TimeZone.getDefault();
cal.setTimeZone(localZone);
Date localTime = cal.getTime();
return localTime;
}
}
остальной ресурс
@Path("classroom")
@Consumes({MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN})
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public class ClassRoomResource {
private static final Logger LOG = Logger.getLogger("org.clearbyte.logger");
@Inject private DateBean dateBean;
public ClassRoomResource() {
LOG.fine("ClassRoomResource");
}
@GET
@Path("{id}/getDummy")
public ClassRoom getDummy(@PathParam("id") long id) {
ClassRoom room = new ClassRoom();
room.setRoomName("Dummy");
room.setRoomNr(id);
return room;
}
@GET
@Path("localDate")
@Produces({MediaType.TEXT_HTML})
public Response getLocalformatDate() {
LOG.fine("DateBean variable: " +dateBean);
Date localDate = dateBean.getLocalDate();
LOG.fine("Local date: " +localDate);
return Response.status(Response.Status.OK)
.entity(localDate.toString())
.build();
}
}
Я не понимаю этого вопроса. JAX-RS поддерживает CDI из коробки. –
Я тоже не понимаю. Чтобы включить ресурс JAX-RS в контейнере Java EE 7, вам нужно использовать только аннотации JAX-RS (в зависимости от спецификации Java EE для образца в ваших зависимостях maven), а затем для инжекции всего, что вы хотите ввести (сеансовые компоненты, управляемые бобы, ...) с использованием CDI. Не нужно также зависеть от Resteasy libs (кроме тех случаев, когда вы используете специальные функции Resteasy) –
Правда, не нужно добавлять зависимости для JAX-RS 2.0. Отредактировал ответ. – Chris