apresentação tdc como aproveitar os novos recursos do java ee 7
Post on 12-Jul-2015
156 Views
Preview:
TRANSCRIPT
Como aproveitar os novos recursos do Java EE 7Denis Tiago | @denistiagoRodrigo 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 RequestGET /endpoint HTTP/1.1Host: server.example.comUpgrade: websocketConnection: UpgradeOrigin: http://example.com
Server ResponseHTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: Upgrade
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 time???
Web Sockets● Blz!! mas e o suporte nos browsers???
fonte: www.caniuse.com
● Fallback?
○ Atmosphere
○ Socket.io
○ ServerEndpointConfig.Builder.create(ProgrammaticEndpoint.class, "/uri").build();
Web Sockets
Web Sockets
DEMO
Web Sockets● Hello world api
import javax.websocket.*;
@ServerEndpoint("/hello")public class HelloBean {
@OnMessage public String onMessage(String name) { return “Hello “ + name; }
}
● Endpoint
@ServerEndpoint(value="/subscribers/{user-id}",encoders={JsonEndoder.class},decoders={JsonEndoder.class},configurator = {EndpointConfigurator.class}
)public class SubscriberEndpoint { ...}
Web Sockets
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);
Web Sockets● Session
session.addMessageHandler(new MessageHandler(){....});
session.isOpen();
session.getAsyncRemote().sendText("");
session.close(CloseReason.CloseCodes.CANNOT_ACCEPT);
Web Sockets● Client
@ClientEndpoint(value="/subscribers/{user-id}"
)public class SubscriberEndpoint {
....}
WebSocketContainer container = ContainerProvider.getWebSocketContainer();container.connectToServer(SubscriberEndpoint.class,URI.create("ws://localhost"));
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 maioria das aplicações corporativas
● Porque ?○ Padronização de uma idéia boa.
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/META-INF/batch-jobs
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
● Caracteristicas uteis para o mundo real
○ Cópia de arquivos.
○ Enviar emails , gerar um relatório.
○ Disparar querys de update em massa.
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);
}}
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;
}
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}
Mudanças Bean validations 1.1
● Method Validationpublic class UserService { public User findUserById(@NotNull Long id) { .... } public @NotNull List<User> findAll() { .... }}
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
Fim● Perguntas?
Estamos contratando. 100% home office!!!recrutamento@tecsinapse.com.brhandson.tecsinapse.com.br
top related