apresentação tdc como aproveitar os novos recursos do java ee 7
TRANSCRIPT
![Page 1: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/1.jpg)
Como aproveitar os novos recursos do Java EE 7Denis Tiago | @denistiagoRodrigo Santos | @rodimes
![Page 2: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/2.jpg)
● Websockets○ Rapida introdução
○ Demo
○ Api
● Batch Api na prática
● Bean validation 1.1
Agenda
![Page 3: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/3.jpg)
Web Sockets● O que é?
○ Protocol RFC 6455
○ Bidirection communication channel
○ Over TCP
○ Provides Server push
![Page 4: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/4.jpg)
Web Sockets● Como funciona?
Client RequestGET /endpoint HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeOrigin: http://example.com
Server ResponseHTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: Upgrade
![Page 5: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/5.jpg)
Web Sockets● Como funciona?
![Page 6: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/6.jpg)
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???
![Page 7: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/7.jpg)
Web Sockets● Blz!! mas e o suporte nos browsers???
fonte: www.caniuse.com
![Page 8: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/8.jpg)
● Fallback?
○ Atmosphere
○ Socket.io
○ ServerEndpointConfig.Builder.create(ProgrammaticEndpoint.class, "/uri").build();
Web Sockets
![Page 9: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/9.jpg)
Web Sockets
DEMO
![Page 10: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/10.jpg)
Web Sockets● Hello world api
import javax.websocket.*;
@ServerEndpoint("/hello")public class HelloBean {
@OnMessage public String onMessage(String name) { return “Hello “ + name; }
}
![Page 11: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/11.jpg)
● Endpoint
@ServerEndpoint(value="/subscribers/{user-id}",encoders={JsonEndoder.class},decoders={JsonEndoder.class},configurator = {EndpointConfigurator.class}
)public class SubscriberEndpoint { ...}
Web Sockets
![Page 12: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/12.jpg)
Web Sockets ● Lifecycle
@OnOpenpublic void onOpen(Session session);
@OnCLosepublic void onClose(Session session, CloseReason closeReason);
@OnErrorpublic void onError(Session session, Throwable thr);
@OnMessagepublic void onMessage(Session session, String data);
![Page 13: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/13.jpg)
Web Sockets● Session
session.addMessageHandler(new MessageHandler(){....});
session.isOpen();
session.getAsyncRemote().sendText("");
session.close(CloseReason.CloseCodes.CANNOT_ACCEPT);
![Page 14: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/14.jpg)
Web Sockets● Client
@ClientEndpoint(value="/subscribers/{user-id}"
)public class SubscriberEndpoint {
....}
WebSocketContainer container = ContainerProvider.getWebSocketContainer();container.connectToServer(SubscriberEndpoint.class,URI.create("ws://localhost"));
![Page 15: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/15.jpg)
Web sockets● E segurança??
![Page 16: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/16.jpg)
Web sockets● Containers
Glassfish 4.0 (tyrus) Jboss 8.0.0.Alpha1
![Page 17: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/17.jpg)
Batch API ● Introdução a JSR 352
● Conceitos
● Projetando um Job de Download de
Imagens○ Batchlet
○ Chunk
![Page 18: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/18.jpg)
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.
![Page 19: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/19.jpg)
Batch API Conceitos
![Page 20: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/20.jpg)
Batch API Fluxo do Download Imagens
![Page 21: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/21.jpg)
Batch API JSL - Job Specification Language
● Configuração dos Jobs
○ Arquivos xml em:
META-INF/batch-jobs
WEB-INF/classes/META-INF/batch-jobs
![Page 22: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/22.jpg)
Batch API JSL - Job Specification Language
:
![Page 23: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/23.jpg)
Batch API
:
![Page 24: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/24.jpg)
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.
![Page 25: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/25.jpg)
Mudanças Bean validations 1.1
● Dependency Injection and CDI integrationpublic 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);
}}
![Page 26: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/26.jpg)
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;
}
![Page 27: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/27.jpg)
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}
![Page 28: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/28.jpg)
Mudanças Bean validations 1.1
● Method Validationpublic class UserService { public User findUserById(@NotNull Long id) { .... } public @NotNull List<User> findAll() { .... }}
![Page 29: Apresentação tdc como aproveitar os novos recursos do java ee 7](https://reader035.vdocuments.mx/reader035/viewer/2022062710/55a23af41a28ab42078b480f/html5/thumbnails/29.jpg)
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