Como aproveitar os novos
recursos do Java EE 7
Denis Tiago | @denistiago
Rodrigo Santos | @rodimes
● Websockets
○ Rapida introdução
○ Demo
○ Api
● Batch Api na prática
● Bean validation 1.1
Agenda
Web Sockets
● O que é?
○ Protocol RFC 6455
○ Bidirection communication channel
○ Over TCP
○ Provides Server push
Web Sockets
● Como funciona?
Client Request
GET /endpoint HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection:...
Web Sockets
● Como funciona?
Web Sockets
● Por que não usar long pooling ou comet?
○ Http overhead (kb not bytes)
○ Http não foi feito para isso
○ Real...
Web Sockets
● Blz!! mas e o suporte nos browsers???
fonte: www.caniuse.com
● Fallback?
○ Atmosphere
○ Socket.io
○ ServerEndpointConfig.Builder.create
(ProgrammaticEndpoint.class, "/uri").build();
W...
Web Sockets
DEMO
Web Sockets
● Hello world api
import javax.websocket.*;
@ServerEndpoint("/hello")
public class HelloBean {
@OnMessage
publ...
● Endpoint
@ServerEndpoint(
value="/subscribers/{user-id}",
encoders={JsonEndoder.class},
decoders={JsonEndoder.class},
co...
Web Sockets
● Lifecycle
@OnOpen
public void onOpen(Session session);
@OnCLose
public void onClose(Session session, CloseRe...
Web Sockets
● Session
session.addMessageHandler(new MessageHandler(){....});
session.isOpen();
session.getAsyncRemote().se...
Web Sockets
● Client
@ClientEndpoint(
value="/subscribers/{user-id}"
)
public class SubscriberEndpoint {
....
}
WebSocketC...
Web sockets
● E segurança??
Web sockets
● Containers
Glassfish 4.0 (tyrus)
Jboss 8.0.0.Alpha1
Batch API
● Introdução a JSR 352
● Conceitos
● Projetando um Job de Download de
Imagens
○ Batchlet
○ Chunk
Batch API Introdução JSR 352
● O que é?
○ Processamento batch.
■ Possui muitas caracteristicas em comun
■ Atividade da mai...
Batch API Conceitos
Batch API Fluxo do Download Imagens
Batch API JSL - Job Specification Language
● Configuração dos Jobs
○ Arquivos xml em:
META-INF/batch-jobs
WEB-INF/classes/...
Batch API JSL - Job Specification Language
:
Batch API
:
Batch API Batchlet
● Simples, permite maior liberdade de implementação
● Executado apenas uma vez, orientado a tarefa
● Ca...
Mudanças Bean validations 1.1
● Dependency Injection and CDI integration
public class ZipCodeValidator implements Constrai...
Mudanças Bean validations 1.1
● Group Conversion
public class Place {
@Valid
@ConvertGroup.List( {
@ConvertGroup(from=Defa...
Mudanças Bean validations 1.1
● Message interpolation via the unified
expression language
@DecimalMax(inclusive = true, va...
Mudanças Bean validations 1.1
● Method Validation
public class UserService {
public User findUserById(@NotNull Long id) {
...
Mudanças Bean validations 1.1
● Method Validation
○ Pros
■ Design by Contract
■ Validações declarativas
○ Cons
■ Depende d...
Fim
● Perguntas?
Estamos contratando. 100% home office!!!
recrutamento@tecsinapse.com.br
handson.tecsinapse.com.br
Upcoming SlideShare
Loading in …5
×

Apresentação tdc como aproveitar os novos recursos do java ee 7

311 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
311
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Apresentação tdc como aproveitar os novos recursos do java ee 7

  1. 1. Como aproveitar os novos recursos do Java EE 7 Denis Tiago | @denistiago Rodrigo Santos | @rodimes
  2. 2. ● Websockets ○ Rapida introdução ○ Demo ○ Api ● Batch Api na prática ● Bean validation 1.1 Agenda
  3. 3. Web Sockets ● O que é? ○ Protocol RFC 6455 ○ Bidirection communication channel ○ Over TCP ○ Provides Server push
  4. 4. Web Sockets ● Como funciona? Client Request GET /endpoint HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Origin: http://example.com Server Response HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade
  5. 5. Web Sockets ● Como funciona?
  6. 6. Web Sockets ● Por que não usar long pooling ou comet? ○ Http overhead (kb not bytes) ○ Http não foi feito para isso ○ Real time???
  7. 7. Web Sockets ● Blz!! mas e o suporte nos browsers??? fonte: www.caniuse.com
  8. 8. ● Fallback? ○ Atmosphere ○ Socket.io ○ ServerEndpointConfig.Builder.create (ProgrammaticEndpoint.class, "/uri").build(); Web Sockets
  9. 9. Web Sockets DEMO
  10. 10. Web Sockets ● Hello world api import javax.websocket.*; @ServerEndpoint("/hello") public class HelloBean { @OnMessage public String onMessage(String name) { return “Hello “ + name; } }
  11. 11. ● Endpoint @ServerEndpoint( value="/subscribers/{user-id}", encoders={JsonEndoder.class}, decoders={JsonEndoder.class}, configurator = {EndpointConfigurator.class} ) public class SubscriberEndpoint { ... } Web Sockets
  12. 12. Web Sockets ● Lifecycle @OnOpen public void onOpen(Session session); @OnCLose public void onClose(Session session, CloseReason closeReason); @OnError public void onError(Session session, Throwable thr); @OnMessage public void onMessage(Session session, String data);
  13. 13. Web Sockets ● Session session.addMessageHandler(new MessageHandler(){....}); session.isOpen(); session.getAsyncRemote().sendText(""); session.close(CloseReason.CloseCodes.CANNOT_ACCEPT);
  14. 14. Web Sockets ● Client @ClientEndpoint( value="/subscribers/{user-id}" ) public class SubscriberEndpoint { .... } WebSocketContainer container = ContainerProvider.getWebSocketContainer(); container.connectToServer(SubscriberEndpoint.class,URI.create("ws://localhost"));
  15. 15. Web sockets ● E segurança??
  16. 16. Web sockets ● Containers Glassfish 4.0 (tyrus) Jboss 8.0.0.Alpha1
  17. 17. Batch API ● Introdução a JSR 352 ● Conceitos ● Projetando um Job de Download de Imagens ○ Batchlet ○ Chunk
  18. 18. Batch API Introdução JSR 352 ● O que é? ○ Processamento batch. ■ Possui muitas caracteristicas em comun ■ Atividade da maioria das aplicações corporativas ● Porque ? ○ Padronização de uma idéia boa.
  19. 19. Batch API Conceitos
  20. 20. Batch API Fluxo do Download Imagens
  21. 21. Batch API JSL - Job Specification Language ● Configuração dos Jobs ○ Arquivos xml em: META-INF/batch-jobs WEB-INF/classes/META-INF/batch-jobs
  22. 22. Batch API JSL - Job Specification Language :
  23. 23. Batch API :
  24. 24. Batch API Batchlet ● Simples, permite maior liberdade de implementação ● Executado apenas uma vez, orientado a tarefa ● Caracteristicas uteis para o mundo real ○ Cópia de arquivos. ○ Enviar emails , gerar um relatório. ○ Disparar querys de update em massa.
  25. 25. Mudanças Bean validations 1.1 ● Dependency Injection and CDI integration public class ZipCodeValidator implements ConstraintValidator<ZipCode, String> { @Inject private ZipCodeChecker checker; public void initialize(ZipCode zipCode) {} @Override public boolean isValid(String value, ConstraintValidatorContext context) { if (value==null) return true; return checker.isZipCodeValid(value); } }
  26. 26. Mudanças Bean validations 1.1 ● Group Conversion public class Place { @Valid @ConvertGroup.List( { @ConvertGroup(from=Default.class, to=Complete.class), } ) Address address; } public class User { @Valid Address address; } public class Address { .... @NotNull(groups =Complete.class) private Double lat; @NotNull(groups = Complete.class ) private Double long; }
  27. 27. Mudanças Bean validations 1.1 ● Message interpolation via the unified expression language @DecimalMax(inclusive = true, value = "10.5") private BigDecimal score; javax.validation.constraints.DecimalMax.message= must be less than ${inclusive == true ? 'or equal to ' : ''}{value}
  28. 28. Mudanças Bean validations 1.1 ● Method Validation public class UserService { public User findUserById(@NotNull Long id) { .... } public @NotNull List<User> findAll() { .... } }
  29. 29. Mudanças Bean validations 1.1 ● Method Validation ○ Pros ■ Design by Contract ■ Validações declarativas ○ Cons ■ Depende de um provedor de interceptors ■ Herança de validações ainda não funciona muito bem
  30. 30. Fim ● Perguntas? Estamos contratando. 100% home office!!! recrutamento@tecsinapse.com.br handson.tecsinapse.com.br

×