Glassfish JPA会員企業:問題を注入すEntityManager
-
23-09-2019 - |
質問
これまでJava EE.私が最初の例を走(JPA).を使用していGlassfish v3.トラブルがったり下がったりよくわからないアプリのサーバー注入 のEntityManager.聞は一例 http://www.adam-bien.com/roller/abien/entry/ejb_3_persistence_jpa_for 私拡張したものですJSPクライアント
実施団体:
package beans;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Book {
@Id
@GeneratedValue
private Long id;
private String title;
private String subtitle;
public Book() {
}
public Book(String title) {
this.title = title;
}
}
BookServiceインターフェース:
package beans;
import javax.ejb.Local;
@Local
public interface BookService {
Book createOrUpdate(Book book);
void remove(Book book);
Book find(Object id);
}
BookServiceBean:
package beans;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Stateless
public class BookServiceBean implements BookService {
@PersistenceContext
private EntityManager em;
public Book createOrUpdate(Book book) {
return em.merge(book);
}
public void remove(Book book) {
em.remove(em.merge(book));
}
public Book find(Object id) {
return em.find(Book.class, id);
}
}
persistence.xml:
<persistence>
<persistence-unit name="sample" transaction-type="JTA">
<jta-data-source>jdbc/MarcelsDataSource</jta-data-source>
<properties>
<property name="eclipselink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>
</persistence>
index.jsp:
<%@ page import="beans.BookServiceBean" %>
<%@ page import="beans.Book" %>
<html>
<body>
<%
BookServiceBean bs = new BookServiceBean();
Book b = new Book("Superman");
bs.createOrUpdate(b);
%>
</body>
</html>
場合の実行例を取得しまjava.lang.NullPointerExceptionのcreateOrUpdate()メソッドではentityManager でないことが明らかな場合に注入します。また日本に救済日現在 何が期待されています。
感謝
マルセル-
解決
を取得す NullPointerException
いスをインスタンス化お BookService
と new()
は基本的には違いが注入された、EJB.EJBているコンポーネントのコンテナを得なければならないと思いますから注射またはルックアップ.
ここでは、JSP仕様で任意のコードが実行されるにscriplet、、EJBからJSPっせん及び日本学術振興会特別な支援を試みた。つまり、ご利用のルックアップ:
<%@ page import="beans.BookService" %>
<%@ page import="beans.Book" %>
<html>
<body>
<%
BookService bs = (BookService) new InitialContext().lookup("java:module/BookServiceBean")
Book b = new Book("Superman");
bs.createOrUpdate(b);
%>
</body>
</html>
ございますのでご注意下さい通話おEJBからサーブレットまたは当財団管理ビーン(おEJBすることなどのコンポーネン
が必要な場合は一部のサンプル、というものが Java EEコードサンプル&アプリ.
更新: 見 どんなアクセス地EJBからコンポーネントPOJO? にするFAQの詳細はJNDI(特に、新しい 携帯グローバルJNDI名前で定義されEJB3.1仕様).
他のヒント
試します:
@PersistenceContext(unitName = "sample")
private EntityManager em;
あなたが本当にそれジェクト(@EJB経由)コンテナを持つする必要があるときは、直接サービスBeanをインスタンス化しています。あなたにも、サーブレットに切り替える必要がありますので、これは、かかわらず、JSPではサポートされていません。