JAX-RS 2.0をwildfly 10でCDIで使用するには、いくつか問題があります。別のpost JAX-RS 1.0/2.0が混在しており、Wildflyのライブラリとは別の依存関係を使用していました。JAX-RS 2.0(Resteasy)でエンタープライズBeanに@InjectとCDIを使用する方法
私の目的は、同じJAR内にあるビジネスロジックをカプセル化したシングルトンエンタープライズBeanをRESTリソースに注入することです。 RESTリソースクラスはリクエストスコープでREST機能(リクエストとレスポンス)のみを扱うものとします。私のPOJOクラスはJAXBで表記されています。
Wildfly 10のインクルードCDIライブラリでJAX-RS 2.0を使用するにはどうすればよいですか?
ビーンインタフェース
@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をそのまま使用できます。 –
私もあなたの意見を得ることはありません。 Java EE 7コンテナでJAX-RSリソースを有効にするには、JAX-RSアノテーション(必要に応じてJava EE仕様に依存する)を使用し、注入するものを注入するだけです(セッションBean、管理対象豆、...)を使用しています。 Resteasyライブラリにも依存する必要はありません(Resteasy固有の機能を使用する場合を除く) –
本当に、JAX-RS 2.0の依存関係を追加する必要はありません。答えを編集しました。 – Chris