JBoss Weld CDI for Java Platform - Kenneth Finnigan - E-Book

JBoss Weld CDI for Java Platform E-Book

Kenneth Finnigan

0,0
23,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

CDI simplifies dependency injection for modern application developers by taking advantage of Java annotations and moving away from complex XML, while at the same time providing an extensible and powerful programming model.

"JBoss Weld CDI for Java Platform" is a practical guide to CDI's dependency injection concepts using clear and easy-to-follow examples. This will help you take advantage of the power behind CDI, as well as providing a firm understanding of how to use it within your applications.

"JBoss Weld CDI for Java Platform" covers all the major aspects of CDI, breaking it down into understandable pieces. This book will take you through many examples of how these concepts can be utilized, helping you get up and running quickly and painlessly.

"JBoss Weld CDI for Java Platform" gives you an insight into the different scopes provided by CDI and the use cases for which each has been designed. You will learn everything about dependency injection, scopes, events, producers, and more from JBoss Weld CDI, as well as how producers can create new beans for consumption within your application. You will also learn how to build a real world application with CDI using JSF and AngularJS for different web interfaces.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 127

Veröffentlichungsjahr: 2013

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



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

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

Cover Image by Timappa Shetty (<[email protected]>)

Credits

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

About the Author

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.

I'd like to thank my wonderful wife, Erin, and my family for all their support and understanding through the entire book development process. I'd also like to thank George Gastaldi for agreeing to review the book.

About the Reviewer

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 speeches at Brazilian conferences, such as JUDCon Brazil 2013 and The Developer's Conference 2012.

I wish to thank my wife Estéfany de Souza Gastaldi for supporting me during long nights, my parents Gilberto and Noeli Gastaldi, 
my sister Alessandra, and God for giving me the needed strength and faith.

www.PacktPub.com

Support files, eBooks, discount offers and more

You might want to visit www.PacktPub.com for support files and downloads related to your book.

Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at <[email protected]> for more details.

At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.

http://PacktLib.PacktPub.com

Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can access, read and search across Packt's entire library of books. 

Why Subscribe?

Fully searchable across every book published by PacktCopy and paste, print and bookmark contentOn demand and accessible via web browser

Free Access for Packt account holders

If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access.

Preface

The CDI specification standardized the process of dependency injection for Java EE, opening the door to efficient integration with components and frameworks for your applications. JBoss Weld is the open source reference implementation for CDI that simplifies the development of applications with dependency injection.

JBoss Weld CDI for Java Platform will explain dependency injection with JBoss Weld and how you can use it to ensure that your applications take advantage of type safety, making your applications easier to debug and maintain. It is filled with information on what scopes CDI provides for your applications, how to fire and listen to events, creating new beans with producers, interceptors, and decorators, and developing portable extensions.

JBoss Weld CDI for Java Platform will have you up and running with CDI on JBoss Weld in a short space of time. Once we've covered the main topics of CDI, we will develop a simple application using CDI services with REST endpoints that we connect to from JSF and AngularJS.

What this book covers

Chapter 1, What is a Bean?, provides an overview of CDI beans and their history, before explaining how a Java class can be a bean.

Chapter 2, Dependency Injection and Lookup, explains injection and lookup functions, by understanding qualifiers and injection points. We also cover some possible Weld dependency errors and how our beans are proxied.

Chapter 3, Deploying JBoss Weld, covers how to deploy JBoss Weld to JBoss AS, GlassFish, and Tomcat.

Chapter 4, Scopes and Contexts, explains the scopes that are provided by CDI and how they should be used. We also explain pseudo scopes and creating a custom scope.

Chapter 5, Producers, covers producer methods and fields, injecting into producer methods, and how we can clean up beans that we produce.

Chapter 6, Interceptors and Decorators, explains how to create and enable an interceptor, and how their bindings are defined. We also look at enabling decorators and what is a decorator delegate.

Chapter 7, Events, explains how to listen for and fire events, and what type of payload can be sent. We also explain advanced event qualifiers and how to listen for events during specific transaction phases.

Chapter 8, Writing a Portable Extension, explains how to create an extension to CDI and what events the container fires that we can utilize. We then cover some examples of what can be achieved within an extension.

Chapter 9, Book Store – CDI Services, covers the development of CDI services, REST endpoints, and communicating with a database for our example application.

Chapter 10, Book Store – User Interfaces, explains how to develop a JSF admin interface and a user interface using AngularJS for our example application that will interact with our services.

What you need for this book

To be able to run the examples from this book, you should have:

Any operating system based on Linux, Mac OS X, or WindowsJava Development Kit (JDK) 1.6 or 1.7Apache Maven (latest version)JBoss Weld (latest 1.x version)Your favorite runtime container: JBoss AS7, GlassFish, or Apache Tomcat

Who this book is for

This book is for anyone wanting to understand what CDI 1.0 is and how it can be used to benefit an application's architecture. Experience with Java is required, but only so far as is needed to understand the coding constructs of the language. RESTful architecture, AngularJS, and Java Server Faces (JSF) skills are suggested, though not essential.

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.

To send us general feedback, simply send an e-mail to <[email protected]>, and mention the book title via the subject of your message.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.

Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Downloading the example code

You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.

Errata

Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the errata submission form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title. Any existing errata can be viewed by selecting your title from http://www.packtpub.com/support.

Piracy

Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.

Please contact us at <[email protected]> with a link to the suspected pirated material.

We appreciate your help in protecting our authors, and our ability to bring you valuable content.

Questions

You can contact us at <[email protected]> if you are having a problem with any aspect of the book, and we will do our best to address it.

Chapter 1. What is a Bean?

This chapter will introduce us to beans and their history prior to Contexts and Dependency Injection (CDI) becoming a part of Java Enterprise Edition (Java EE). After a short history, we will define what a bean is and what characteristics and behavior a Java class requires to be considered a bean.

Note

JSR-299: Contexts and Dependency Injection for the Java EE platform was finalized in December 2009. CDI 1.1 is due to be released in the first half of 2013 to coincide with the release of Java EE 7.

The history of beans

Beans have been used to refer to many different kinds of Java classes over the years. The oldest use of a bean is from 1996, when Sun introduced JavaBeans as a term for a reusable software component for Java that defined a series of rules as to how a Java class should be developed. Those original rules have become ubiquitous to the point that the term JavaBeans is rarely, if ever, used anymore.

Since that initial use of the bean in 1996, there have been many uses of the term in third-party frameworks such as Seam and Spring. The term was also used in EE specifications for Enterprise JavaBeans (EJBs) and Java Server Faces (JSF) where they were called Managed Beans. Even though the term "bean" had been used by various specifications within the Java EE platform, there was never a consistent or clear definition of what a bean is made of and how it could be utilized.