私はJavaEEを初めて使用するので、私の質問は非常に基本的なものかもしれません。ステートレスセッションBean(単純化)を使用して次のRESTWebサービスを構築しました。
@Path("/list/")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Stateless
public class ListResource {
@PersistenceContext(unitName = "unitName")
private EntityManager em;
@GET
@Path("/")
public List<Compound> getCompounds() {
List<Compound> list = tq.getResultList();
if (list.isEmpty()) {
throw new WebApplicationException(Response.status(404).entity("There are no compounds in database.").build());
}
return list;
}
}
それは魅力のように機能します。URL経由でアクセスでき、JSONを返します。問題は、すべてのコンパウンドを取得するためのある種のモデルとしてこのSession Beanを使用する必要がある、プレーンJavaで記述されたプログラムの別の部分があることです。
問題は、このSession Beanを永続コンテキストの外にある場所で初期化すると、データベースにアクセスするためのEntityManagerを認識しないことです。私は信じている。
どうしたらいいのかわからない。コードの離れた部分でクラスListResourceを初期化し、EntityManagerの依存性注入を機能させることはできますか?または、どういうわけか永続コンテキストを取得してから、このセッションBeanを初期化しますか?
私はそれが理にかなっていることを願っています。私が説明するのは複雑な問題です。