JavaEE

JavaEE Compatibility

Java EE server = Web Container + EJB Container

JavaEE 7

JavaEE6

Require asynchronous processing, loose-coupling, and reliability: MDB

Require only asynchronous processing: @Asynchronous

Require only loose-coupling: CDI event

Spring

public class MySpringDAO extends HibernateDaoSupport implements BaseDAO {

public Ticket save(Ticket ticket) {

getHibernateTemplate().saveOrUpdate(ticket);

return ticket;

}

}

★マルチスレッド環境

Java EE

@Stateless

public class MyEJBDAO implements BaseDAO {

@PersistenceContext(unitName = "dbUnit")

private EntityManager em;

public Ticket save(Ticket ticket) {

em.persist(ticket);

return ticket;

}

}

★CDI vs EJB

EJB 3.1 features:

・EJB >= CDI EJBs are CDI beans, so have all the benefits of CDI

・Monitoring All EJBs are exposed via JMX, so can be monitored with JConsole

・The @Singleton bean is essentially @ApplicationScoped

・The @TransactionAttribute annotation is available to EJB only

★Deploy後のディレクトリ

〇WEB_INF

/web.xml

/classes/ *.classと設定ファイル

/lib/ *.jar

/src/ *.java

/database.properties

/tags/ タグファイル

/jsp/ *.jsp

〇META_INF 一般的にはビルド中に自動生成

//Client inside a container

@EJB

MyService myService;

//Client outside a container

Context ctx = new InitialContext();

MyService myService = (MyService) ctx.lookup("java:global/MyService");

※他サイト参照