errai cdi integration
TRANSCRIPT
Errai-CDI IntegrationHeiko Braun <[email protected]>
Apr 2010
Topics
• Use cases
• CDI Concepts
• Bootstrap process
• Invocation Handling
• Status & Roadmap
2
Use cases
• Initially
• Declaring a CDI component as Service
• Exposing a CDI component as RPC endpoint
• Integrating with the CDI event subsystem
3
Declaring Services
• Most low level use cases
• Similar to MessageDriven Bean
• Service implementation fully managed by CDI container
CDI Component
GWT Client
4
Exposing RPC endpoints
• Exposes a typed interface
• Similar to EJB Session beans
CDI Component
Remote interface
GWT Client
5
Working with CDI events
• Bi-directional event exchange
• Discriminate on:- Event Type- Qualifier Annotations
• Exposes high level CDI client API
CDI Component
GWT Client
6
CDI Concepts
• Portable Extensions
• Integration point when container bootstraps
• Create beans, annotation processing, meta data modifications
• Scope & Lifecycle
• ApplicationScoped, RequestScoped, ConversationScoped
• Bean context & reference
• Lookup and instance (reference) creation
7
Bootstrap process
• Two phases: CDI -> Errai Bootstrap
• Ordering important
• CDI Service discovery first
• Services instances are maintained by CDI
8
Service discovery
• Provide injection points for Errai Components
• Discover Errai annotations during CDI bootstrap
• Provide service proxies
9
Invocation Handling
• Encapsulated in invocation proxy
• Lookup bean reference (instance)
• Context & Scope managed by CDI
10
Invocation proxiesBean invocation (RPC)
11
Event dispatcherCDI Observer
12
Event client boilerplate GWT Client
13
Status
• Project: http://anonsvn.jboss.org/repos/errai/projects/weld-integration/trunk
• Basic use cases covered
• Incorporate feedback from the CDI team
• Clarification on Errai RPC API
14
Roadmap
• More work on Bean scopes:
• Session-, Request-, ConversationScoped
• Integration with EJB3
• Stateless, Stateful session beans
• Transactions, Security, etc:
• Context propagation
15