できますよ。他の方法もあると思いますが、アノテーションを付けたRESTFul Webサービスにアノテーションを介して注入された@Stateless
@WebService
、の@Local
実装を使用して、簡単なテストプロジェクトを正常に実行しました。interface
@EJB
@Stateless
@Path
これは、あなたが要求したように適切にCDI注入ではありませんが、うまく機能し、おそらくとにかくあなたのニーズに適合します。
IServiceJAXクラス:
public interface IServiceJAX {
public String hello(String txt);
}
IServiceJAXImplクラス:
@WebService(serviceName = "NewWebService")
@Local
@Stateless
public class IServiceJAXImpl implements IServiceJAX {
@WebMethod(operationName = "hello")
@Override
public String hello(@WebParam(name = "name") String txt) {
return "Hello " + txt + " !";
}
}
ServiceRSクラス:
@Path("basic")
@Stateless
public class ServiceRS {
@EJB private IServiceJAX wsi;
@GET
@Path("{id}")
@Produces(MediaType.APPLICATION_JSON)
public String result(@PathParam("id") String id) {
return wsi.hello(id);
}
}
アップデート
CDIインジェクションが必要な場合は、上記のコードを保持し、から注釈を削除する@Local
だけ@Stateless
ですIServiceJAXImpl
。次を使用して、このクラスのインスタンスを注入できます。
@Inject private IServiceJAX wsi;
それ以外の
@EJB private IServiceJAX wsi;