Ich habe ein Problem herauszufinden, wie JAX-RS 2.0 mit CDI auf Wildfly 10 arbeiten. Ich bekam eine Antwort auf eine andere post das war eine Mischung aus JAX-RS 1.0/2.0 und sie verwendeten andere Abhängigkeiten als die enthaltenen Bibliotheken in Wildfly.Wie man @Inject und CDI für Enterprise-Beans mit JAX-RS 2.0 (Resteasy) verwendet
Mein Ziel ist es, eine Singleton-Enterprise-Bean zu injizieren, die Geschäftslogik, die sich im selben Jar befindet, in meine REST-Ressource einkapseln. Die REST-Ressourcenklasse soll ein Anforderungsbereich sein und sich nur mit der REST-Funktionalität (Anfrage und Antwort) befassen. Meine POJO-Klassen sind JAXB notiert.
Wie kann ich JAX-RS 2.0 mit den enthaltenen CDI-Bibliotheken in Wildfly 10 verwenden?
Die bean Schnittstelle
@Local
public interface DateBean {
Date getLocalFormatDate();
}
Die bean
@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;
}
}
Die REST-Ressource
@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();
}
}
Ich verstehe den Punkt dieser Frage nicht. JAX-RS unterstützt CDI out-of-the-box. –
Ich verstehe Ihren Standpunkt auch nicht. Um eine JAX-RS-Ressource in einem Java EE 7-Container zu aktivieren, müssen Sie nur JAX-RS-Annotationen (je nach Java EE-Spezifikation für Beispiel in Ihren Abhängigkeiten) verwenden und dann injizieren, was Sie injizieren möchten (Session-Beans, verwaltet) Bohnen, ...) mit CDI. Keine Notwendigkeit, sich auf Resteasy-Bibliotheken zu verlassen (außer, wenn Sie Resteasy-spezifische Funktionen verwenden) –
Wahr, die Abhängigkeiten für JAX-RS 2.0 müssen nicht hinzugefügt werden. Bearbeitete die Antwort. – Chris