-
Notifications
You must be signed in to change notification settings - Fork 0
/
readme.txt
104 lines (72 loc) · 3.02 KB
/
readme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
mvn archetype:generate -Dfilter=com.airhacks:
http://localhost:8080/javaee-8/api/carro
http://localhost:8080/javaee-8/api/carro/lista-assincrono
curl localhost:8080/javaee-8/api/carro-evento -i
curl localhost:8080/javaee-8/api/carro-evento -i -H 'Last-Event-ID: 0'
https://www.packtpub.com/mapt/video/video/9781788831130
####################################################################################
section 1: core java ee components
utilizar @Stateless em BC e @Inject para injetar dependências
@Stateless: são classes mantidas pelo servidor, várias classes são criadas pelo servidor,
ao utilizar anotação, garante que a instância retornada não contém informação de outra execução
@Produces
anotar método, irá retornar objeto para interface, enum, ...
utilizar @Name("nome"), tanto no método gerador, quando no atributo a ser injetado,
porém não é typesafe
escopos EJB managend beans:
@Stateless
@Statefull: guarda estado, uma instância para cada sessão de usuário
@Singleton: uma instância para todo servidor, métodos são acessados um por vez, por vários usuário
escopos CDI managend beans:
@ApplicationScoped, similiar ao @Singleton
@RequestScoped, @SessionScoped
@Depend
CDI event
1.comportamento sincrono
classe dispara evento
@Inject
Event<ClasseQualquer> obj;
obj.fire(new ClasseQualquer());
Outra classe escuta evento:
public void onEvento(@Observes ClasseQualquer obj) {
}
2.comportamento assincrono
1.utilizar @Asynchronous com @Stateless
2.obj.fireAsync(new ClasseQualquer());
Outra classe escuta evento:
public void onEvento(@ObservesAsync ClasseQualquer obj) {
}
####################################################################################
section 2: http endpoints
JsonB
@JsonbTransient: anotar atributo classe que não será serializado
@JsonbProperty("nome"): alterar nome propriedade serializada
JsonP
Json.createObjectBuilder().add("nome",valor)
ao utilizar JsonArray, JsonObject, como entrada ou saída de método jax-rs, não é necessário definir
consumes, produces
####################################################################################
section 3: persistence
###
section 4: cross-cutting concerns
@Interceptors, @Interceptor, @AroundInvoke
jcache
####################################################################################
section 5: asynchronous behavior
@Asynchronous em métodos de classe EJB, ou na própria classe
executar algo em sua própria thread
@Resource
ManagedExecutorService service;
service.execute(() -> metodoSincrono);
//agendar tarefas sem utilizar ejb
@Resource
ManagedScheduledExecutorService service;
service.schedule(
####################################################################################
section 6: acessing external systems
acessar outro servidor via jax-rs
JsonObject json = Json.createObjectBuilder().add("mensagem", mensagem).build();
GenericType<List<String>>
####################################################################################
section 7: asynchronous communication protocols
SSE - Server sent events