Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
TM
Enterprise JavaBeans
(EJBTM) 3.1
Kenneth Saks
Senior Staff Engineer
SUN Microsystems
EJB 3.1 Specification
• Goals
  > Continued focus on ease-of-use
  > New features
• JSR (Java Specification Request) 318
 ...
Ease of Use Improvements

•   Optional Local Business Interfaces
•   Simplified Packaging in .war
•   EJB “Lite”
•   Porta...
Session Bean with “No-interface”
View
 @Stateless
 public class HelloBean {
     public String sayHello(String msg) {
    ...
Web/EJB Application in
    TM
Java EE Platform 5
           foo.ear                          foo.ear

                    ...
Web/EJB Application in
    TM
Java EE Platform 6
                  foo.war

          WEB-INF/classes/
           com/acme...
EJB “Lite” vs. Full EJB 3.1 API
EJB Lite                      Full = Lite + :
• Local Session Beans         • Message Driv...
Portable Global JNDI Names
 “java:global[/<app-name>]/<module-
 name>/<bean-name>”

 // Client in a Java EE container
 @EJ...
Enhanced Testing Support
 public class BankTester {

   public static void main(String[] args) {

       EJBContainer cont...
Example : Embeddable API (cont.)
 % java -classpath bankClient.jar :
                   bank.jar :
                   java...
New Features

•   Singletons
•   Application startup / shutdown callbacks
•   Calendar-based timer expressions
•   Automat...
Simple Singleton
 @Singleton
 public class SharedBean {

     private SharedData shared;

     @PostConstruct private void...
Singleton Client
 @Stateless
 public class FooBean {

     @EJB
     private SharedBean shared;

     public void foo() {
...
Automatic Timer Creation
 @Stateless
 public class BankBean {

     @PersistenceContext EntityManager accountDB;
     @Res...
Simple Asynchrony
 @Stateless public class DocBean {

     @Resource SessionContext ctx;

     public void processDocument...
Asynchronous Operation Results --
Client
 @EJB Processor processor;

 Task task = new Task(...);

 Future<int> computeTask...
EJB 3.1 and Glassfish V3 Prelude
• Glassfish V3 is reference implementation for EJB 3.1
• V3 Prelude has preview implement...
For More Information
• JSR 318 Home : http://jcp.org/en/jsr/detail?id=318
  > Send comments to jsr-318-comments@jcp.org
• ...
Upcoming SlideShare
Loading in …5
×

EJB 3.1 and GlassFish v3 Prelude

9,996 views

Published on

A quick overview of EJB 3.1 from the perspective of GlassFish v3 Prelude

Published in: Technology
  • Be the first to comment

  • Be the first to like this

EJB 3.1 and GlassFish v3 Prelude

  1. 1. TM Enterprise JavaBeans (EJBTM) 3.1 Kenneth Saks Senior Staff Engineer SUN Microsystems
  2. 2. EJB 3.1 Specification • Goals > Continued focus on ease-of-use > New features • JSR (Java Specification Request) 318 > Part of Java EE 6 > Java Persistence API will evolve separately ( JSR 317 ) > Public Draft Released October 2008 • Caveat – APIs still subject to change 2
  3. 3. Ease of Use Improvements • Optional Local Business Interfaces • Simplified Packaging in .war • EJB “Lite” • Portable Global JNDI Names • Simplified Unit Testing 3
  4. 4. Session Bean with “No-interface” View @Stateless public class HelloBean { public String sayHello(String msg) { return “Hello “ + msg; } } // Client of HelloBean no-interface view @EJB HelloBean h; … h.sayHello(“bob”); 4
  5. 5. Web/EJB Application in TM Java EE Platform 5 foo.ear foo.ear lib/foo_common.jar foo_web.war WEB-INF/web.xml com/acme/Foo.class WEB-INF/classes/ com/acme/FooServlet.class foo_web.war WEB-INF/classes com/acme/Foo.class OR WEB-INF/web.xml WEB-INF/classes/ com/acme/FooServlet.class foo_ejb.jar com/acme/FooBean.class foo_ejb.jar com/acme/Foo.class com/acme/FooBean.class 5
  6. 6. Web/EJB Application in TM Java EE Platform 6 foo.war WEB-INF/classes/ com/acme/FooServlet.class WEB-INF/classes/ com/acme/FooBean.class 6
  7. 7. EJB “Lite” vs. Full EJB 3.1 API EJB Lite Full = Lite + : • Local Session Beans • Message Driven Beans • Annotations / ejb-jar.xml • EJB Web Service • CMT / BMT Endpoints • Declarative Security • RMI-IIOP Interoperability • Interceptors • 2.x / 3.x Remote view • 2.x Local view • Timer Service • CMP / BMP 7
  8. 8. Portable Global JNDI Names “java:global[/<app-name>]/<module- name>/<bean-name>” // Client in a Java EE container @EJB(mappedName= ”java:global/hello/HelloBean”) Hello hello; // Client in a Java SE environment Hello hello = (Hello) new InitialContext() lookup(“java:global/hello/HelloBean”); 8
  9. 9. Enhanced Testing Support public class BankTester { public static void main(String[] args) { EJBContainer container = EJBContainer.createEJBContainer(); // Acquire EJB component reference BankBean bank = (BankBean)container.getContext(). lookup(“java:global/bank/BankBean”); testBank(bank); ... container.close(); } 9
  10. 10. Example : Embeddable API (cont.) % java -classpath bankClient.jar : bank.jar : javaee.jar : <vendor_rt>.jar com.acme.BankTester 10
  11. 11. New Features • Singletons • Application startup / shutdown callbacks • Calendar-based timer expressions • Automatic timer creation • Simple Asynchrony 11
  12. 12. Simple Singleton @Singleton public class SharedBean { private SharedData shared; @PostConstruct private void init() { shared = ...; } public int getXYZ() { return shared.xyz; } } 12
  13. 13. Singleton Client @Stateless public class FooBean { @EJB private SharedBean shared; public void foo() { int xyz = shared.getXYZ(); ... } } 13
  14. 14. Automatic Timer Creation @Stateless public class BankBean { @PersistenceContext EntityManager accountDB; @Resource javax.mail.Session mailSession; // Callback the 1st of each month at 8 a.m. @Schedule(hour=”8”, dayOfMonth=”1”) void sendMonthlyBankStatements() { ... } } 14
  15. 15. Simple Asynchrony @Stateless public class DocBean { @Resource SessionContext ctx; public void processDocument(Document document) { DocBean me = ctx.getBusinessObject(DocBean.class); me.doAnalysisA(document); me.doAnalysisB(document); } @Asynchronous public void doAnalysisA(Document d) {...} @Asynchronous public void doAnalysisB(Document d) {...} } 15
  16. 16. Asynchronous Operation Results -- Client @EJB Processor processor; Task task = new Task(...); Future<int> computeTask = processor.compute(task); ... int result = computeTask.get(); 16
  17. 17. EJB 3.1 and Glassfish V3 Prelude • Glassfish V3 is reference implementation for EJB 3.1 • V3 Prelude has preview implementations of these EJB 3.1 features : > No-interface view > .war packaging of stateless session beans > Singletons > Portable Global JNDI Names • EJB 3.1 preview module available from Update Tool 17
  18. 18. For More Information • JSR 318 Home : http://jcp.org/en/jsr/detail?id=318 > Send comments to jsr-318-comments@jcp.org • Blog : http://blogs.sun.com/kensaks/ • Reference Implementation : GlassFish project V3 > http://glassfish.dev.java.net > ejb@glassfish.dev.java.net 18

×