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.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.1
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.2
50 new features of Java EE 7
in 50 minutes
Antonio G...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.3
#NN: <spec>: <feature>
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.4
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF ...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.5
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF ...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.6
#01: CDI: Default enabling
Finer scanning control
§...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.7
#02: CDI: @Vetoed
Veto the processing of the class o...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.8
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF ...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.9
#03: Bean Validation: Method validation
Pre/post con...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.10
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.11
#04: Interceptors: AroundConstruct
Interceptor asso...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.12
#05: Interceptors: @Priority
Prioritizing intercept...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.13
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.14
#06: Concurrency: ManagedExecutor
§  User threads ...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.15
#06: Concurrency: ManagedExecutor
@Resource

Manage...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.16
#06: Concurrency: ManagedExecutor
<web-app … versio...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.17
#07: Concurrency: ManagedScheduledExecutor
§  Mana...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.18
#07: Concurrency: ManagedScheduledExecutor
InitialC...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.19
#07: Concurrency: ManagedScheduledExecutor
§  exec...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.20
#08: Concurrency: ManagedThreadFactory
§  Extends ...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.21
#08: Concurrency: ManagedThreadFactory
§  Thread t...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.22
#09: Concurrency: DynamicProxy
§  Create dynamic p...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.23
#09: Concurrency: DynamicProxy
@Resource

ContextSe...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.24
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.25
#10: JPA: Schema Generation
Standardized database s...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.26
#11: JPA: @Index
Defines additional indexes in sche...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.27
#12: JPA: Unsynchronized Persistence Context
Persis...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.28
#13: JPA: Stored Procedure
Calling a stored procedu...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.29
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.30
#14: JTA: @Transactional
Transaction management on ...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.31
#15: JTA: @TransactionScoped
CDI scope whose lifecy...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.32
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.33
#16: EJB: Disable passivation of stateful
In some c...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.34
#17: EJB-Lite: Async + Non-persistent timer
Extende...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.35
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.36
#18: JMS: JMSContext API
New simplified API to prod...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.37
#19: JMS: Autocloseable
Several JMS interfaces impl...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.38
#20: JMS: JMSConnectionFactoryDefinition
A JMS Conn...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.39
#21: JMS: JMSDestinationDefinition
A JMS queue or t...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.40
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.41
#22: Servlet: Non-blocking I/O
public class TestSer...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.42
#22: Servlet: Non-blocking I/O
§  ServletInputStre...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.43
#22: Servlet: Non-blocking I/O
public interface Rea...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.44
#22: Servlet: Non-blocking I/O
AsyncContext context...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.45
#23: Servlet: Protocol Upgrade
§  <T extends HttpU...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.46
#23: Servlet: Protocol Upgrade
public interface Web...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.47
#24: Servlet: Improved Security
<web-app . . . vers...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.48
#24: Servlet: Improved Security
<web-app . . . vers...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.49
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.50
#25: WebSocket: Annotated server endpoint
§  Enabl...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.51
#26: WebSocket: Lifecycle callbacks
@javax.websocke...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.52
#27: WebSocket: Annotated client endpoint
@javax.we...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.53
#27: WebSocket: Annotated client endpoint
Container...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.54
#28: WebSocket: Programmatic endpoints
public class...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.55
#28: WebSocket: Programmatic endpoints
public class...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.56
#28: WebSocket: Programmatic endpoints
public class...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.57
#29: WebSocket: Encoder and Decoder
@javax.websocke...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.58
#29: WebSocket: Encoder and Decoder
public class My...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.59
#29: WebSocket: Encoder and Decoder
public class My...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.60
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.61
#30: Expression Langauge: ELProcessor
§  Use EL in...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.62
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.63
#31: JSF: Faces Flow
./src/main/webapp/flow1

/flow...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.64
#31: JSF: Faces Flow
@Named

@FlowScoped("flow1")

...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.65
#31: JSF: Faces Flow
Package reusable flows in JAR
...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.66
#32: JSF: Resource Library Contract
index-blue.xhtm...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.67
#32: JSF: Resource Library Contract
<f:view contrac...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.68
#33: JSF: Pass-through Attributes
<h:inputText type...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.69
#34: JSF: File Upload Component
<h:form enctype="mu...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.70
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.71
#35: JAX-RS: Client API
New API to consume rest ser...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.72
#36: JAX-RS: Async Client
The client API also suppo...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.73
#37: JAX-RS: Async Server
Asynchronous request proc...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.74
#38: JAX-RS: Message Filter
Used to process incomin...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.75
#38: JAX-RS: Message Filter
Used to process incomin...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.76
#39: JAX-RS: Entity Interceptors
Marshalling and un...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.77
#39: JAX-RS: Entity Interceptors
Marshalling and un...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.78
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.79
#40: JSON-P: JSON Builder
Creates an object model (...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.80
#41: JSON-P: JsonParser
Event-based parser that can...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.81
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.82
#42: Batch: Chunk-style Processing
Item-oriented Pr...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.83
#42: Batch: Chunk-style Processing
<step id=”sendSt...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.84
#43: Batch: Batchlet-style Processing
Task-oriented...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.85
#44: Batch: Job/Step/Chunk Listeners
<job id="myJob...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.86
#44: Batch: Job/Step/Chunk Listeners
Interface Abst...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.87
#44: Batch: Job/Step/Chunk Listeners
@Named

public...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.88
#45: Batch: Partition
<step>

<chunk item-count="3"...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.89
#45: Batch: Partition
<partition>

<plan partitions...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.90
#46: Batch: Creating Workflows
<flow id="flow1" nex...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.91
#46: Batch: Creating Workflows
<split id="split1" n...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.92
#46: Batch: Creating Workflows
<step id="step1" nex...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.93
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.94
#48: JavaMail
@MailSessionDefinition(name = "java:c...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.95
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.96
#49: Java Connector Architecture
@ConnectionDefinit...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.97
#47: Default Resources
JNDI name: java:comp/Default...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.98
JAX-RS 2.0
JSON-P 1.0
Web Socket 1.0Servlet 3.1
JSF...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.99
#47: Default Resources
JNDI name: java:comp/Default...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.100
#47: Default Resources
JNDI names
§  java:comp/De...
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.101
#50: Buy our books!
Copyright © 2013, Oracle and/or its affiliates. All rights reserved.102
DOWNLOAD
Java EE 7 SDK
oracle.com/javaee
GlassFish...
Upcoming SlideShare
Loading in …5
×

Fifty Features of Java EE 7 in 50 Minutes

68,938 views

Published on

Published in: Technology
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Njce! Thanks for sharing.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Features of Java
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Hi All, We are planning to start new Salesforce Online batch on this week... If any one interested to attend the demo please register in our website... For this batch we are also provide everyday recorded sessions with Materials. For more information feel free to contact us : siva@keylabstraining.com. For Course Content and Recorded Demo Click Here : http://www.keylabstraining.com/salesforce-online-training-hyderabad-bangalore
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Hi All, We are planning to start new devops online batch on this week... If any one interested to attend the demo please register in our website... For this batch we are also provide everyday recorded sessions with Materials. For more information feel free to contact us : siva@keylabstraining.com. For Course Content and Recorded Demo Click Here : http://www.keylabstraining.com/devops-online-training-tutorial
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Fifty Features of Java EE 7 in 50 Minutes

  1. 1. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.1
  2. 2. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.2 50 new features of Java EE 7 in 50 minutes Antonio Goncalves, @agoncal Arun Gupta, @arungupta
  3. 3. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.3 #NN: <spec>: <feature>
  4. 4. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.4 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5
  5. 5. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.5 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 CDI 1.1 (JSR 346)
  6. 6. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.6 #01: CDI: Default enabling Finer scanning control §  Possible values: all, annotated, none! §  all behaves like in Java EE 6 (default if not set)! <beans ... version="1.1" bean-discovery-mode="all">! <alternatives>! <class>org.agoncal.book.MockGenerator</class>! </alternatives>! </beans>!
  7. 7. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.7 #02: CDI: @Vetoed Veto the processing of the class or package @Vetoed! public class NonProcessedBean {
 ...! }! ! package-info.java @Vetoed! package com.non.processed.package;!
  8. 8. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.8 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 Bean Validation 1.1 (JSR 349)
  9. 9. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.9 #03: Bean Validation: Method validation Pre/post conditions on method and constructors public class CardValidator {! ! public CardValidator(@NotNull Algorithm algorithm) {! this.algorithm = algorithm;! }! ! @AssertTrue! public Boolean validate(@NotNull CreditCard creditCard) {! return algorithm.validate(creditCard.getNumber());! }! }!
  10. 10. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.10 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 Interceptors 1.2 (JSR 318)
  11. 11. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.11 #04: Interceptors: AroundConstruct Interceptor associated with a constructor public class LoggingInterceptor {! ! @AroundConstruct! private void init(InvocationContext ic) throws Exception{ logger.fine("Entering constructor");! ic.proceed();! logger.fine("Exiting constructor");! }! ! @AroundInvoke! public Object logMethod(InvocationContext ic) ... {! // ...! }! }!
  12. 12. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.12 #05: Interceptors: @Priority Prioritizing interceptor bindings §  PLATFORM_BEFORE (0), LIBRARY_BEFORE (1000), APPLICATION (2000), LIBRARY_AFTER (3000), PLATFORM_AFTER (4000)! @Interceptor! @Loggable! @Priority(Interceptor.Priority.LIBRARY_BEFORE + 10)! public class LoggingInterceptor {! ! @AroundInvoke! ...! }!
  13. 13. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.13 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 Concurrency utilities 1.0 (JSR 236)
  14. 14. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.14 #06: Concurrency: ManagedExecutor §  User threads in Java EE applications §  Support simple and advance concurrency design patterns §  Extend Concurrency Utilities API from Java SE (JSR 166y) –  java.util.concurrent package
  15. 15. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.15 #06: Concurrency: ManagedExecutor @Resource
 ManagedExecutorService executor;
 ! 
 ManagedExecutorService executor = (ManagedExecutorService) ctx
 .lookup("java:comp/DefaultManagedExecutorService");! Default ManagedExectuor
  16. 16. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.16 #06: Concurrency: ManagedExecutor <web-app … version="3.1">! <resource-env-ref>! <resource-env-ref-name>! concurrent/myExecutor! </resource-env-ref-name>! <resource-env-ref-type>! javax.enterprise.concurrent.ManagedExecutorService! </resource-env-ref-type>! </resource-env-ref>! </web-app>! Specify in web.xml
  17. 17. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.17 #07: Concurrency: ManagedScheduledExecutor §  Managed version of ScheduledExecutorService! §  Submit delayed or periodic tasks @Resource
 ManagedScheduledExecutorService executor;!
  18. 18. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.18 #07: Concurrency: ManagedScheduledExecutor InitialContext ctx = new InitialContext(); 
 
 ManagedScheduledExecutorService executor = (ManagedScheduledExecutorService)ctx.lookup(
 "java:comp/DefaultManagedScheduledExecutorService");
 ! §  Can be defined in web.xml as well Access using JNDI
  19. 19. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.19 #07: Concurrency: ManagedScheduledExecutor §  executor.schedule(new MyCallableTask(), 5, TimeUnit.SECONDS);! §  executor.scheduleAtFixedRate(new MyRunnableTask(), 2, 3, TimeUnit.SECONDS);! §  executor.scheduleWithFixedDelay(new MyRunnableTask(), 2, 3, TimeUnit.SECONDS);!
  20. 20. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.20 #08: Concurrency: ManagedThreadFactory §  Extends ThreadFactory @Resource(name = "DefaultManagedThreadFactory")
 ManagedThreadFactory factory; ManagedThreadFactory factory = (ManagedThreadFactory) ctx.lookup("java:comp/ DefaultManagedThreadFactory");

  21. 21. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.21 #08: Concurrency: ManagedThreadFactory §  Thread thread = factory.newThread(new MyTask()); §  ((ManageableThread)thread).isShutdown();

  22. 22. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.22 #09: Concurrency: DynamicProxy §  Create dynamic proxy objects, adds contextual information available for applications running in Java EE environment §  Classloading, JNDI, Security, …
  23. 23. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.23 #09: Concurrency: DynamicProxy @Resource
 ContextService service;
 
 
 Runnable proxy = service.createContextualProxy(new MyRunnable(), Runnable.class);
 
 
 Future f = executor.submit(proxy);!
  24. 24. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.24 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 JPA 2.1 (JSR 338)
  25. 25. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.25 #10: JPA: Schema Generation Standardized database schema generation <persistence ... version="2.1">! <persistence-unit ...>! <properties>! <property name="javax.persistence.schema-generation.scripts.action"! value="drop-and-create"/>! <property name="javax.persistence.schema-generation.scripts.create-target" value="create.sql"/>! <property name="javax.persistence.sql-load-script-source" ! value="insert.sql"/>! </properties>! </persistence-unit>!
  26. 26. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.26 #11: JPA: @Index Defines additional indexes in schema generation @Entity! @Table(indexes = {! @Index(columnList = "ISBN"),! @Index(columnList = "NBOFPAGE")! })! public class Book {! ! @Id @GeneratedValue! private Long id;! private String isbn;! private Integer nbOfPage;! ...! }!
  27. 27. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.27 #12: JPA: Unsynchronized Persistence Context Persistence context is not enlisted in any tx unless explicitly joined @PersistenceContext(synchronization =! SynchronizationType.UNSYNCHRONIZED) private EntityManager em;! ...! ! em.persist(book);! ! ...! em.joinTransaction();! !
  28. 28. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.28 #13: JPA: Stored Procedure Calling a stored procedure @Entity! @NamedStoredProcedureQuery(name = "archiveOldBooks", ! procedureName = "sp_archive_books",! parameters = {! @StoredProcedureParameter(name = ”date", mode = IN, ! type = Date.class),! @StoredProcedureParameter(name = "warehouse", mode = IN, ! type = String.class)! })! public class Book {...}!
  29. 29. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.29 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 JTA 1.2 (JSR 907)
  30. 30. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.30 #14: JTA: @Transactional Transaction management on Managed Beans as CDI interceptor binding @Path("book")! @Transactional(value = Transactional.TxType.REQUIRED,! rollbackOn = {SQLException.class, JMSException.class},! dontRollbackOn = SQLWarning.class)! public class BookRestService {! ! @PersistenceContext! private EntityManager em;! ! @POST! @Consumes(MediaType.APPLICATION_XML)! public Response createBook(Book book) {...}! }!
  31. 31. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.31 #15: JTA: @TransactionScoped CDI scope whose lifecycle is scoped to the currently active JTA transaction @TransactionScoped! public class BookBean {...}! ! @WebServlet! public class TxServlet extends HttpServlet {! @Inject UserTransaction tx;! @Inject BookBean b1;! @Inject BookBean b2;! ! protected void processRequest(...) {! tx.begin();! s_out.println(b1.getReference());! s_out.println(b2.getReference());! tx.commit();! }! }!
  32. 32. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.32 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 EJB 3.2 (JSR 345)
  33. 33. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.33 #16: EJB: Disable passivation of stateful In some cases increases performance, scalability and robustness @Stateful(passivationCapable = false)! public class ShoppingCart {! ...! }!
  34. 34. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.34 #17: EJB-Lite: Async + Non-persistent timer Extended the EJB Lite to include local asynchronous invocations and non-persistent EJB Timer Service @Stateless! public class OrderEJB {! ! @Asynchronous! public void sendEmail (Order order) {! // Very Long task! }! ! @Schedule(hour="2", persistent=false)! public void createDailyReport() {! // ...! }! }!
  35. 35. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.35 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 JMS 2.0 (JSR 343)
  36. 36. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.36 #18: JMS: JMSContext API New simplified API to produce and consume messages JMSContext ctx = connectionFactory.createContext()! ! ctx.createProducer().send(queue, "Text message sent");! ! ctx.createConsumer(queue).receiveBody(String.class);! ! ctx.createProducer()! .setPriority(2)! .setTimeToLive(1000)! .setDeliveryMode(DeliveryMode.NON_PERSISTENT)! .send(queue, message);!
  37. 37. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.37 #19: JMS: Autocloseable Several JMS interfaces implement Autocloseable try (JMSContext ctx = connectionFactory.createContext()) {! ctx.createProducer().send(queue, "Text message sent");! }! ! ...! ! try (JMSContext ctx = connectionFactory.createContext()) {! while (true) {! String s = ctx.createConsumer(queue).receiveBody(String.class);! }! }!
  38. 38. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.38 #20: JMS: JMSConnectionFactoryDefinition A JMS ConnectionFactory can be defined using an annotation on a container-managed class @Stateless! @JMSConnectionFactoryDefinition(! name = "java:app/jms/MyConnectionFactory",! interfaceName = "javax.jms.TopicConnectionFactory")! ! ! ! public class ExpensiveOrderEJB {...}!
  39. 39. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.39 #21: JMS: JMSDestinationDefinition A JMS queue or topic can be defined using an annotation @Stateless! @JMSConnectionFactoryDefinition(! name = "java:app/jms/MyConnectionFactory",! interfaceName = "javax.jms.TopicConnectionFactory")! @JMSDestinationDefinition(! name = "java:app/jms/MyTopic",! interfaceName = "javax.jms.Topic")! public class ExpensiveOrderEJB {...}!
  40. 40. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.40 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 Servlet 3.1 (JSR 340)
  41. 41. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.41 #22: Servlet: Non-blocking I/O public class TestServlet extends HttpServlet
 protected void doGet(HttpServletRequest request,
 HttpServletResponse response) 
 throws IOException, ServletException {
 ServletInputStream input = request.getInputStream();
 byte[] b = new byte[1024];
 int len = -1;
 while ((len = input.read(b)) != -1) {
 . . .
 }
 }
 }!
  42. 42. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.42 #22: Servlet: Non-blocking I/O §  ServletInputStream! –  public void setReadListener(ReadListener listener);! –  public boolean isFinished();! –  public boolean isReady();! §  ServletOutputStream! –  public setWriteListener(WriteListener listener);! –  public boolean canWrite();! New methods to existing interfaces
  43. 43. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.43 #22: Servlet: Non-blocking I/O public interface ReadListener extends EventListener {
 public void onDataAvailable();
 pubic void onAllDataRead();
 public void onError();
 }! public interface WriteListener extends EventListener {
 public void onWritePossible();
 public void onError();
 }! New interfaces
  44. 44. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.44 #22: Servlet: Non-blocking I/O AsyncContext context = request.startAsync();
 ServletInputStream input = request.getInputStream();
 input.setReadListener(
 new MyReadListener(input, context)); ! Only for Asynchronous Servlets
  45. 45. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.45 #23: Servlet: Protocol Upgrade §  <T extends HttpUpgradeHandler> T HttpServletRequest.upgrade(Class<T> class) throws IOException;
 
 
 ! §  HttpUpgradeHandler! –  init(WebConnection wc);! –  destroy();!
  46. 46. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.46 #23: Servlet: Protocol Upgrade public interface WebConnection {
 ServletInputStream getInputStream();
 ServletOutputStream getOutputStream();
 }!
  47. 47. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.47 #24: Servlet: Improved Security <web-app . . . version="3.1"> 
 <web-resource-collection>
 <url-pattern>/account/*</url-pattern> 
 <http-method>GET</http-method>
 </web-resource-collection>
 </web-app> ! ! Deny an HTTP method request for an uncovered HTTP method
  48. 48. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.48 #24: Servlet: Improved Security <web-app . . . version="3.1"> 
 <deny-uncovered-http-methods/>
 <web-resource-collection>
 <url-pattern>/account/*</url-pattern> 
 <http-method>GET</http-method>
 </web-resource-collection>
 </web-app> ! ! Deny an HTTP method request for an uncovered HTTP method
  49. 49. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.49 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 Web Socket 1.0 (JSR 356)
  50. 50. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.50 #25: WebSocket: Annotated server endpoint §  Enables full-duplex bi-directional communication over single TCP connection @javax.websocket.server.ServerEndpoint("/chat")
 public class ChatServer {
 
 @OnMessage
 public String chat(String name, Session session) {
 for (Session peer : client.getOpenSessions()) {! peer.getBasicRemote().sendObject(message);! }
 }
 }!
  51. 51. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.51 #26: WebSocket: Lifecycle callbacks @javax.websocket.OnOpen
 public void open(Session s) { . . . }
 
 @javax.websocket.OnClose
 public void close(CloseReason c) { . . . }
 
 @javax.websocket.OnError
 public void error(Throwable t) { . . . }!
  52. 52. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.52 #27: WebSocket: Annotated client endpoint @javax.websocket.ClientEndpoint
 public class MyClient {
 @javax.websocket.OnOpen
 public void open(Session session) { … }
 
 // Lifecycle callbacks
 }!
  53. 53. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.53 #27: WebSocket: Annotated client endpoint ContainerProvider
 .getWebSocketContainer()
 .connectToServer(
 MyClient.class, 
 URI.create("ws://. . ."));!
  54. 54. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.54 #28: WebSocket: Programmatic endpoints public class ChatServer extends Endpoint {
 @Override
 public void onOpen(Session s, EndpointConfig ec) {
 s.addMessageHandler(new MessageHandler.Whole<String>() {
 public void onMessage(String text) { . . . }
 }
 }
 
 @Override
 public void onClose(Session s, CloseReason cr) { . . . }
 
 //. . . 
 }!
  55. 55. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.55 #28: WebSocket: Programmatic endpoints public class MyApplicationConfig implements ServerApplicationConfig {
 public Set<ServerEndpointConfig> getEndpointConfigs(…) { 
 ServerEndpointConfig.Builder
 .create(MyEndpoint.class, "/websocket”)
 .configurator(new MyConfig())
 .build()
 }
 }!
  56. 56. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.56 #28: WebSocket: Programmatic endpoints public class MyConfig extends ServerEndpointConfig.Configurator {
 
 public <T> T getEndpointInstance(. . .) { . . . }
 
 public void modifyHandshake(. . .) { . . . }
 
 . . .
 }!
  57. 57. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.57 #29: WebSocket: Encoder and Decoder @javax.websocket.server.ServerEndpoint(
 value="/chat",
 decoders="MyDecoder.class",
 encoders="MyEncoder.class")
 public class ChatServer {
 
 @OnMessage
 public String chat(ChatMessage name, Session session) {
 . . . 
 }
 }!
  58. 58. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.58 #29: WebSocket: Encoder and Decoder public class MyDecoder implements Decoder.Text<ChatMessage> {
 public ChatMessage decode(String s) {
 // . . .
 }
 
 public boolean willDecode(String string) {
 // . . .
 }
 
 //. . .
 }
 
 !
  59. 59. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.59 #29: WebSocket: Encoder and Decoder public class MyEncoder implements Encoder.Text<ChatMessage> {
 
 public String encode(ChatMessage chatMessage) {
 // . . .
 }
 ! // . . .
 }!
  60. 60. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.60 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 Expression Language 3.0 (JSR 341)
  61. 61. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.61 #30: Expression Langauge: ELProcessor §  Use EL in a stand-alone environment –  Evaluate EL expressions –  Get/set bean properties –  Defining a static method as an EL function –  Defining an object instance as an EL name ELProcessor elp = new ELProcessor();
 elp.defineBean("employee", new Employee("Charlie Brown"));
 String name = elp.eval("employee.name");!
  62. 62. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.62 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 JSF 2.2 (JSR 344)
  63. 63. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.63 #31: JSF: Faces Flow ./src/main/webapp/flow1
 /flow1.xhtml
 /flow1a.xhtml
 /flow1b.xhtml
 ./src/main/webapp/flow2
 /flow2-flow.xml
 /flow2.xhtml
 /flow2a.xhtml
 /flow2b.xhtml
 /index.xhtml! Package reusable flows in JAR
  64. 64. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.64 #31: JSF: Faces Flow @Named
 @FlowScoped("flow1")
 public class Flow1Bean implements Serializable {
 }! ! @Produces @FlowDefinition
 public Flow defineFlow(@FlowBuilderParameter FlowBuilder fb) {
 String flowId = "flow1";
 //. . .
 return fb.getFlow();
 }! Package reusable flows in JAR
  65. 65. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.65 #31: JSF: Faces Flow Package reusable flows in JAR #{flowScope}: Local flow storage #{facesContext.application.flowHandler.currentFlow}: Returns true if within a flow
  66. 66. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.66 #32: JSF: Resource Library Contract index-blue.xhtml
 index-red.xhtml
 WEB-INF/lib/contracts-library-1.0-SNAPSHOT.jar
 /META-INF/contracts/blue
 /style.css
 /javax.faces.contract.xml
 /template.xhtml
 /META-INF/contracts/red
 /style.css
 /javax.faces.contract.xml
 /template.xhtml! Apply templates in a reusable and interchangeable manner
  67. 67. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.67 #32: JSF: Resource Library Contract <f:view contracts=”red”>
 <ui:composition template="/template.xhtml">
 . . .
 </ui:composition>
 </f:view>
 ! Apply templates in a reusable and interchangeable manner
  68. 68. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.68 #33: JSF: Pass-through Attributes <h:inputText type="email" value="#{user.email}"/> 
 ! <input type="text" name="j_idt6:j_idt10"/>! HTML5-Friendly Markup <h:inputText p:type="email" value="#{user.email}"/> 
 
 <input type="email" name="j_idt6:j_idt10"/>! !
  69. 69. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.69 #34: JSF: File Upload Component <h:form enctype="multipart/form-data">
 <h:inputFile value="#{fileUploadBean.file}"/><br/>
 <h:commandButton value="Upload"/><p/>
 </h:form> ! @Named @RequestScoped 
 public class FileUploadBean {
 private Part file;
 
 //getter and setter
 } !
  70. 70. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.70 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 JAX-RS 2.0 (JSR 339)
  71. 71. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.71 #35: JAX-RS: Client API New API to consume rest services Client client = ClientBuilder.newClient();! WebTarget target = client.target("http://www.foo.com/book");! Invocation invocation = target.request(TEXT_PLAIN).buildGet() Response response = invocation.invoke();! ! Response response = ClientBuilder.newClient()! .target("http://www.foo.com/book")! .request(MediaType.TEXT_PLAIN)! .get();! ! String body = ClientBuilder.newClient()! .target("http://www.foo.com/book")! .request()! .get(String.class);!
  72. 72. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.72 #36: JAX-RS: Async Client The client API also supports asynchronous invocation Future<String> future = ClientBuilder.newClient()! .target("http://www.foo.com/book")! .request()! .async()! .get(String.class);! ! try {! String body = future.get(1, TimeUnit.MINUTES);! } catch (InterruptedException | ExecutionException e) {...}!
  73. 73. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.73 #37: JAX-RS: Async Server Asynchronous request processing on the server @Path("/async")! public class AsyncResource {! ! @GET! public void asyncGet(@Suspended AsyncResponse asyncResp) {! ! new Thread(new Runnable() {! ! public void run() {! String result = veryExpensiveOperation();! asyncResp.resume(result);! }! }).start();! }}!
  74. 74. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.74 #38: JAX-RS: Message Filter Used to process incoming and outgoing request or response headers §  Filters on client side –  ClientRequestFilter! –  ClientResponseFilter! §  Filters on server side –  ContainerRequestFilter! –  ContainerResponseFilter!
  75. 75. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.75 #38: JAX-RS: Message Filter Used to process incoming and outgoing request or response headers public class LogginFilter implements ClientRequestFilter {! ! public void filter(ClientRequestContext ctx) throws IOException { System.out.println(ctx.getMethod());! System.out.println(ctx.getUri());! }! }!
  76. 76. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.76 #39: JAX-RS: Entity Interceptors Marshalling and unmarshalling HTTP message bodies §  Intercepts inbound entity streams (read from the “wire”) –  ReaderInterceptor! §  Intercepts outbound entity streams (written to the “wire”) –  WriterInterceptor!
  77. 77. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.77 #39: JAX-RS: Entity Interceptors Marshalling and unmarshalling HTTP message bodies public class GZipInterceptor implements WriterInterceptor {! ! public void aroundWriteTo(WriterInterceptorContext ctx){! OutputStream os = ctx.getOutputStream();! ctx.setOutputStream(new GZIPOutputStream(os));! ctx.proceed();! }! }!
  78. 78. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.78 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 JSON-P 1.0 (JSR 353)
  79. 79. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.79 #40: JSON-P: JSON Builder Creates an object model (or an array) in memory by adding elements JsonObject value = Json.createObjectBuilder()! .add("id", "1234")! .add("date", "19/09/2012")! .add("total_amount", "93.48")! .add("customer", Json.createObjectBuilder()! .add("first_name", "James")! .add("last_name", "Rorrison")! .add("email", "j.rorri@me.com")! .add("phoneNumber", "+44 1234 1234")! )! .build();!
  80. 80. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.80 #41: JSON-P: JsonParser Event-based parser that can read JSON data from a stream JsonParser parser = Json.createParser(new FileReader(“order.json"));! while (parser.hasNext()) {! JsonParser.Event event = parser.next();! ! if (event.equals(JsonParser.Event.KEY_NAME) && ! parser.getString().matches("email")) {! parser.next();! email = parser.getString();! }! }!
  81. 81. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.81 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 Batch 1.0 (JSR 352)
  82. 82. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.82 #42: Batch: Chunk-style Processing Item-oriented Processing Style (primary)
  83. 83. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.83 #42: Batch: Chunk-style Processing <step id=”sendStatements”>! <chunk item-count=“3”>
 <reader ref=”accountReader”/>! <processor ref=”accountProcessor”/>
 <writer ref=”emailWriter”/>! </step>! …implements ItemReader {
 public Object readItem() {
 // read account using JPA! }! ! …implements ItemProcessor {! public Object processItems(Object account) {
 // read Account, return Statement! }! ! …implements ItemWriter {! public void writeItems(List accounts) {
 // use JavaMail to send email! }! !
  84. 84. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.84 #43: Batch: Batchlet-style Processing Task-oriented processing style <step id=”transferFile”>! <batchlet ref=“MyFileTransfer” />! </step>! …implements Batchlet {! @Override
 public void process() {
 // Transfer file! }! !
  85. 85. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.85 #44: Batch: Job/Step/Chunk Listeners <job id="myJob" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0”>
 <listeners>
 <listener ref="myJobListener"/>
 </listeners>
 <step id="myStep" >
 <listeners>
 <listener ref="myStepListener"/>
 <listener ref="myChunkListener"/>
 <listener ref="myItemReadListener"/>
 <listener ref="myItemProcessorListener"/>
 <listener ref="myItemWriteListener"/>
 </listeners>
 <chunk item-count="3”>. . .</chunk>
 </step>
 </job>! !
  86. 86. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.86 #44: Batch: Job/Step/Chunk Listeners Interface Abstract Classes JobListener! AbstractJobListener! StepListener! AbstractStepListener! ChunkListener! AbstractChunkListener! ItemRead/Write/ProcessListener! AbstractItemRead/Write/ProcessListener! SkipRead/Write/ProcessListener! AbstractSkipRead/Write/ProcessListener! RetryRead/Write/ProcessListener! AbstractRetryRead/Write/ ProcessListener!
  87. 87. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.87 #44: Batch: Job/Step/Chunk Listeners @Named
 public class MyJobListener extends AbstractJobListener {
 
 @Override
 public void beforeJob() throws Exception { . . . }
 
 @Override
 public void afterJob() throws Exception { . . . }
 }!
  88. 88. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.88 #45: Batch: Partition <step>
 <chunk item-count="3">
 <reader ref="myItemReader">
 <properties>
 <property name="start" value="#{partitionPlan['start']}"/>
 <property name="end" value="#{partitionPlan['end']}"/>
 </properties> 
 </reader>
 . . .
 </chunk>!
  89. 89. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.89 #45: Batch: Partition <partition>
 <plan partitions="2">
 <properties partition="0">
 <property name="start" value="1"/>
 <property name="end" value="10"/>
 </properties>
 <properties partition="1">
 <property name="start" value="11"/>
 <property name="end" value="20"/>
 </properties>
 </plan>
 </partition>
 </step>!
  90. 90. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.90 #46: Batch: Creating Workflows <flow id="flow1" next="step3">
 <step id="step1" next="step2"> . . . </step>
 <step id="step2"> . . . </step>
 </flow>
 <step id="step3"> . . . </step>! Flow: Elements that execute together as a unit
  91. 91. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.91 #46: Batch: Creating Workflows <split id="split1" next=" . . . ">
 <flow id="flow1”>
 <step id="step1”> . . . </step>
 </flow>
 <flow id="flow2”>
 <step id="step2”> . . . </step>
 </flow>
 </split>! Split: Concurrent execution of flows
  92. 92. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.92 #46: Batch: Creating Workflows <step id="step1" next="decider1">. . .</step>
 <decision id="decider1" ref="myDecider"> 
 <next on="DATA_LOADED" to="step2"/> 
 <end on="NOT_LOADED"/> </decision>
 <step id="step2">. . .</step> ! ! Decision: Customized way of sequencing between steps, flows, splits @Named
 public class MyDecider implements Decider {
 @Override
 public String decide(StepExecution[] ses) throws Exception {
 . . .
 return "DATA_LOADED"; // or "NOT_LOADED"! } ! }!
  93. 93. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.93 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 JavaMail 1.5 (JSR 919)
  94. 94. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.94 #48: JavaMail @MailSessionDefinition(name = "java:comp/myMailSession",
 properties = {
 "mail.smtp.host=smtp.gmail.com",
 "mail.smtp.ssl.enable=true",
 "mail.smtp.auth=true",
 "mail.transport.protocol=smtp",
 "mail.debug=true"
 })
 
 
 @Resource(lookup = "java:comp/myMailSession")
 Session session;!
  95. 95. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.95 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 JCA 1.7 (JSR 322)
  96. 96. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.96 #49: Java Connector Architecture @ConnectionDefinition(
 connection="MyConnection.class",
 connectionImpl="MyConnectionImpl.class",
 connectionFactory="MyConnectionFactory.class",
 connectionFactoryImpl="MyConnectionFactoryImpl.class"
 )
 ! @AdministeredObjectDefinition(
 className="MyQueueImpl.class",
 name="java:comp/MyQueue",
 resourceAdapter="myAdapter",
 )!
  97. 97. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.97 #47: Default Resources JNDI name: java:comp/DefaultDataSource Default Data Source @Resource(lookup="java:comp/DefaultDataSource")
 DataSource myDS;
 ! @Resource
 DataSource myDS; !
  98. 98. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.98 JAX-RS 2.0 JSON-P 1.0 Web Socket 1.0Servlet 3.1 JSF 2.2EL 3.0 JSP JSTLBeanValidation1.1 Interceptors1.2 CDI1.1 Concurrency1.0 JPA 2.1 JTA 1.2 EJB 3.2 JMS 2.0 Batch 1.0 JCA 1.7 Java EE 7 JavaMail 1.5 Java EE 7 (JSR 342)
  99. 99. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.99 #47: Default Resources JNDI name: java:comp/DefaultJMSConnectionFactory
 
 
 @Resource(lookup="java:comp/DefaultJMSConnectionFactory") 
 ConnectionFactory myCF; @Resource
 ConnectionFactory myCF;! Default JMS Connection Factory
  100. 100. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.100 #47: Default Resources JNDI names §  java:comp/DefaultManagedExecutorService! §  java:comp/DefaultManagedScheduledExecutorService! §  java:comp/DefaultManagedThreadFactory! §  java:comp/DefaultContextService! Default Concurrency Utilities Objects
  101. 101. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.101 #50: Buy our books!
  102. 102. Copyright © 2013, Oracle and/or its affiliates. All rights reserved.102 DOWNLOAD Java EE 7 SDK oracle.com/javaee GlassFish 4.0 Full Platform or Web Profile glassfish.org

×