これは初心者のエラーだと確信しています...
そのため、エンティティ、ファサード(永続層を実装)、およびリモートインターフェイス(ファサードを介してエンティティへのアクセスを提供)を備えたステートレスセッションBean(EJB3)を備えたJavaEE6アプリケーションがあります。
これは正常に機能しています。SLSBを介して、エンティティを取得および操作できます。
今、私はこれをWebアプリケーションから実行しようとしています(同じGlassfishにデプロイされ、Java EEアプリからのエンティティ+インターフェイス定義が別のjarとしてインポートされます)。挿入されたSLSBのインスタンスを受け取るサーブレットがあります。エンティティを取得するために取得すると、次のようになります(ログで確認できます)。
- リモートSLSBがインスタンス化され、そのメソッドが呼び出されます
- SLSBはファサードをインスタンス化し、「get」メソッドを呼び出します
- ファサードはDBからエンティティのインスタンスを取得し、それを返します
- SLSBは、エンティティのインスタンスを呼び出し元に返します
- (ここまではすべて良いです)
- サーブレットを呼び出すと、エンティティの空のインスタンスが受信されます。
何が問題になっていますか?これはうまくいくはずですよね?
MyServlet:
public class MyServlet extends HttpServlet {
@EJB
private CampaignControllerRemote campaignController; // remote SLSB
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
try {
Campaign c = campaignController.getCampaign(5L); // id of an existing campaign
out.println("Got "+ c.getSomeString()); // is null !!
} finally {
out.close();
}
}
...
}
他のコードを見たい場合はお知らせください。投稿を更新します。