JBoss Weld CDI for Java Platform
Table of Contents
JBoss Weld CDI for Java Platform
Credits
About the Author
About the Reviewer
www.PacktPub.com
Support files, eBooks, discount offers and more
Why Subscribe?
Free Access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. What is a Bean?
The history of beans
Definition of a bean
Is my class a bean?
What does it mean to be a bean?
Bean types
Qualifiers
Scope
Expression Language (EL)
Alternatives
Which classes are beans?
Managed Beans
Session Beans
Producers
Producer methods
Producer fields
Summary
2. Dependency Injection and Lookup
What is an injection point?
Typesafe resolution
Qualifiers
@Default and @Any
Qualifier members
Alternatives
Resolving Weld deployment errors
Client proxies
Unproxyable bean types
Programmatic lookup of contextual instances
Injection point metadata
Summary
3. Deploying JBoss Weld
JBoss Weld distribution
JBoss AS
Glassfish
Apache Tomcat
Summary
4. Scopes and Contexts
Scope types
Built-in scopes
The request context lifecycle
The session context lifecycle
The application context lifecycle
The conversation scope
The conversation context lifecycle
Conversation propagation
Conversation timeout
Pseudo scopes
Custom scopes
Summary
5. Producers
The scope of a producer
Injection into producer methods
Dependent beans for producers
Cleanup of produced beans
Summary
6. Interceptors and Decorators
Interceptor bindings
Creating and enabling an interceptor
Advanced interceptors
Interceptor binding types with members
Combining interceptor binding types
Inheritance of interceptor binding types
What is a decorator delegate?
Enabling a decorator
Summary
7. Events
What is a payload?
How do I listen for an event?
How do I fire an event?
Event qualifiers
Members of event qualifiers
Combining event qualifiers
Observing events in different transaction phases
Event-observer bean creation
Summary
8. Writing a Portable Extension
What is a portable extension?
What is the CDI container lifecycle?
BeanManager
Injection into non-container managed instances
Registering a bean
Replacing annotations on a type via an extension
Summary
9. Book Store – CDI Services
Overview of the application
Adding interceptors for our services
Securing methods with an interceptor
Providing a transaction with an interceptor
Creating CDI services
Summary
10. Book Store – User Interfaces
REST services
User interface for customers
Administration interface
Summary
Index
JBoss Weld CDI for Java Platform
Copyright © 2013 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: July 2013
Production Reference: 1050713
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78216-018-2
www.packtpub.com
Author
Ken Finnigan
Reviewer
George Gastaldi
Acquisition Editor
Usha Iyer
Commissioning Editor
Llewellyn F. Rozario
Meeta Rajani
Technical Editors
Sampreshita Maheshwari
Veena Pagare
Copy Editors
Aditya Nair
Alfida Paiva
Laxmi Subramanian
Project Coordinator
Michelle Quadros
Proofreader
Maria Gould
Indexer
Priya Subramani
Production Coordinator
Aditi Gajjar
Cover Work
Aditi Gajjar
Ken Finnigan is a Senior Software Engineer at Red Hat, technical lead of the JBoss Portlet Bridge project, a member of the GateIn development team, and the founder of the Arquillian Portal Extension. As a consultant and engineer he has over 15 years development experience with enterprises throughout the world using technologies that include Java EE frameworks (JSF, CDI, EJB3, Hibernate, and Seam), Java testing frameworks (Arquillian, JUnit, and TestNG), Maven, Ant, and a variety of others. In his spare time, he is a committer for Apache DeltaSpike, ShrinkWrap, and Arquillian. He is also the author of GateIn Cookbook, Packt Publishing.
George Gastaldi is a Senior Software Engineer from Brazil working at RedHat, notably as a core developer for the JBoss Forge project. He is also the leader of Seam 3 Reports and the co-leader of the Seam 3 JCR module. George has been working professionally with Java since 2000. In 2006, George joined Apache as an individual committer to work on Apache ServiceMix (an open source JBI-compliant ESB). George is a JCP individual member and also a member of the CDI 1.1 spec team. He also promotes Java technology by giving sp...