私の上位目標は、NetBeansによって生成されたJPAコードを、自分のサーブレットの「データベースからのRESTfulなWebサービスの作成」ウィザードを使用して使用することです。ステートレスセッションBeanをサーブレットに挿入するにはどうすればよいですか?
具体的には、サーブレットからファサードに直接アクセスして、クライアント側でJavaScriptを使用してデータの一部を読み込まないようにしたいと考えています。
私のファサードの関連部分は次のようになります。
@Stateless
@Path("wgm.rest.balanceview")
public class BalanceViewFacadeREST extends AbstractFacade<BalanceView> {
@PersistenceContext(unitName = "WGManagerPU")
private EntityManager em;
@GET
@Override
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public List<BalanceView> findAll() {
return super.findAll();
}
}
今、私が試したものを以下の通りです:
@WebServlet(name = "BalanceServlet", urlPatterns = "/balance/*")
public class BalanceServlet extends HttpServlet {
@Inject
private BalanceViewFacadeREST balanceFacade;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
List<BalanceView> balances = balanceFacade.findAll();
// ...
}
}
のGlassFishにデプロイする場合しかし、私は次の例外を取得:
をインジェクタがBalanceViewFacadeRESTを見つけられなかったかのように私には聞こえます。私は何が欠けていますか?
と感謝をEJBに注釈を付けなければならない意味します!残念なことに、私はEJBには本当に新しいので、なぜ私が@LocalBeanが必要なのかわからないのですが、私はこのトピックを深く掘り下げなければなりません。 これで上記の問題は解決しましたが、重大なログメッセージが表示されるようになりました: "重大:クラス[Lwgm/rest/service/BalanceViewFacadeREST;]が見つかりません。[class wgm.servlets.BalanceServlet]をロード中にエラーが発生しました。すべての私のパス(または/バランスに無関係なもの)に対して404を得る。それは関連しているのでしょうか、それともこの別の問題ですか? Btw、私はGlassfishバージョン4.1.1を使用しています。 – Severin
私はアプリケーションを完全にきれいにして再ビルドし、Glassfishの 'generated'と 'osgi-chache'ディレクトリを削除したので、重大なログメッセージは表示されなくなりました。 NetBeansをGlassfishに配備することは、問題であるようです。 war-archiveをGlassfishのautodeployフォルダに手動でコピーすると、正常に動作します。しかし、私はその問題について新しい質問をするつもりだと思う。 – Severin