Apresentação tdc   como aproveitar os novos recursos do java ee 7
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

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

on

  • 355 views

 

Statistics

Views

Total Views
355
Views on SlideShare
355
Embed Views
0

Actions

Likes
1
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • 1. Como aproveitar os novos recursos do Java EE 7 Denis Tiago | @denistiago Rodrigo Santos | @rodimes
  • 2. ● Websockets ○ Rapida introdução ○ Demo ○ Api ● Batch Api na prática ● Bean validation 1.1 Agenda
  • 3. Web Sockets ● O que é? ○ Protocol RFC 6455 ○ Bidirection communication channel ○ Over TCP ○ Provides Server push
  • 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. Web Sockets ● Como funciona?
  • 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. Web Sockets ● Blz!! mas e o suporte nos browsers??? fonte: www.caniuse.com
  • 8. ● Fallback? ○ Atmosphere ○ Socket.io ○ ServerEndpointConfig.Builder.create (ProgrammaticEndpoint.class, "/uri").build(); Web Sockets
  • 9. Web Sockets DEMO
  • 10. Web Sockets ● Hello world api import javax.websocket.*; @ServerEndpoint("/hello") public class HelloBean { @OnMessage public String onMessage(String name) { return “Hello “ + name; } }
  • 11. ● Endpoint @ServerEndpoint( value="/subscribers/{user-id}", encoders={JsonEndoder.class}, decoders={JsonEndoder.class}, configurator = {EndpointConfigurator.class} ) public class SubscriberEndpoint { ... } Web Sockets
  • 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. Web Sockets ● Session session.addMessageHandler(new MessageHandler(){....}); session.isOpen(); session.getAsyncRemote().sendText(""); session.close(CloseReason.CloseCodes.CANNOT_ACCEPT);
  • 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. Web sockets ● E segurança??
  • 16. Web sockets ● Containers Glassfish 4.0 (tyrus) Jboss 8.0.0.Alpha1
  • 17. Batch API ● Introdução a JSR 352 ● Conceitos ● Projetando um Job de Download de Imagens ○ Batchlet ○ Chunk
  • 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. Batch API Conceitos
  • 20. Batch API Fluxo do Download Imagens
  • 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. Batch API JSL - Job Specification Language :
  • 23. Batch API :
  • 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. 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. 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. 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. Mudanças Bean validations 1.1 ● Method Validation public class UserService { public User findUserById(@NotNull Long id) { .... } public @NotNull List<User> findAll() { .... } }
  • 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. Fim ● Perguntas? Estamos contratando. 100% home office!!! recrutamento@tecsinapse.com.br handson.tecsinapse.com.br