SlideShare a Scribd company logo
1 of 7
Download to read offline
JBoss Application Server Overview
                                                                                                                                   Community Project




                                                                JBoss Application Server* is the world's lead-
                                                                ing Open Source Java EE application server for
                                                                developing and deploying enterprise applica-
                                                                tions. The latest in this line, JBoss AS 7 (Java EE
                                                                Web Profile certified), provides the same devel-
                                                                oper friendly environment as previous versions
        JBoss Application Server 7                              while offering revolutionary new management
                                                                capabilities, and much more.
Blazing fast startup (~3seconds)
Services are started concurrently to eliminate unnecessary waits and leverage multi-core processors, while non-critical
services remain passivated until rst use. JBoss AS 7 o ers a 10-fold reduction in startup time over previous versions.

Lightweight
An aggressive approach to memory management and metadata indexing keeps the footprint exceptionally small,
enabling it to run with stock JVM settings and on small devices. Pro les can be used to tune the capabilities of
the server.

Modular core
JBoss Modules o ers true application isolation, hiding server implementation classes and only loads the classes your
application needs. Class loading is concurrent for extreme performance. OSGi support is available the moment you
install the application server.

Hot, incremental deployment
Quick turnaround during development as a result of fast, concurrent deployment and the ability to edit static resources
without redeployment in a exible deployment structure.

Elegant administration
Consistent and powerful management is available, ranging from a polished, user-friendly web console to Java and
HTTP APIs to a command line tool to direct XML edits. Con guration data is centralized and user-focused.

Domain (multi-server) management
One controller can rule them all or you can simply start a standalone server. Port o sets can be changed with a single
switch. Rolling deployments are available

First class components
JBoss AS builds on many best of breed standalone OSS projects: Hibernate, JBoss Transactions, In nispan, Iron
Jacamar, RESTEasy, Weld, HornetQ, JGroups, JBoss Logging, Mojarra, Apache CXF, and more.

Java EE 6 programming model
Java EE 6 o ers a modern, loosely coupled programming model, founded on CDI, a speci cation driven by JBoss.
With Java EE 6 you can focus on implementing your business logic, and allow the platform to take care of the rest.

Testable by design
Arquillian o ers absolute delity for testing: the ability to test your application inside the actual environment. Just like
CDI, Arquillian takes care of all the boilerplate in the background, removing clutter from your tests.


            Scan this and find out
            more about the JBoss Application Server project.
            http://www.jboss.org/jbossas

                                                                          * JBoss Application Server is in the upstream for JBoss Enterprise Application Platform.
brought to you by...

#150
   Get More Refcardz! Visit refcardz.com



                                           CONTENTS INCLUDE:
                                           n	


                                           n	 	


                                           n	
                                                About the Platform
                                                Common Annotations For Java
                                                Java Platform, Enterprise Edition
                                                                                                       Java Enterprise Edition 6
                                                Java Servelet 3.0
                                                                                                                                                          The Most Elegant Enterprise Java Yet
                                           n	


                                           n	
                                                JavaServer Faces 2.0
                                           n	
                                                Enterprise JavaBeans 3.1                                                                                                        By Andrew Lee Rubinger

                                                                                                                                         Reference
                                                    ABOUT THE PLATFORM                                                                   The full JavaDoc for the Java EE 6 API is located at:
                                                                                                                                         http://download.oracle.com/javaee/6/api/
                                           Enterprise software development is inherently complex, and multi-user
                                           systems open the door to concerns such as transactional integrity, security,                      COMMON ANNOTATIONS FOR THE JAVA PLATFORM
                                           persistence integration, and interaction between components. Very simply
                                           put, the mission of the Java Enterprise Edition is to enable an out-of-the-box
                                           set of configurable services that allows the programmer to write less and focus               JSR-250
                                           on delivering clean business logic.
                                                                                                                                         he common annotations for Java EE are a shared package used throughout
                                           To this end, Java EE 6 is an aggregate of many interoperable technologies
                                                                                                                                         the platform specifications that generally focus on shared services like
                                           designed to deliver a unified experience. Application Servers that are
                                                                                                                                         lifecycle, injection, and security.
                                           certified to the standards defined by the Java Community Process are
                                           intended to service applications written to the specifications within the
                                           platform.
                                                                                                                                          Class Name             Description
                                           For the sake of brevity, this reference card will focus on the key APIs of Java EE             Generated              Marks generated code
                                           6 that are most relevant to modern development.
                                                                                                                                          ManagedBean            Defines a class as a Java EE 6 Managed Bean


                                                    JAVA PLATFORM, ENTERPRISE EDITION 6 (JAVA EE 6)                                       PostConstruct          Lifecycle callback after an instance has been created but
                                                                                                                                                                 before it is put into service
                                                                                                                                          PreDestroy             Lifecycle callback before an instance is to be removed from
                                           JSR-316                                                                                                               service

                                           This umbrella specification ties together the various subsystems that comprise                 Resource               Defines an injection point, marks that this is to be provided by
                                           the platform and provides additional integration support.                                                             the container

                                           Profiles                                                                                       Resources              Allows for injection of N resources

                                           New to Java EE 6 is the notion of the “Web Profile”, a subset of the full
                                           specification that is targeted to cater to more specialized and minimal web-                   DeclareRoles           Class-level target defining valid security roles
                                           based application requirements. It is guaranteed to support the platform
                                           common annotations for injection and lifecycle (JSR-250), JNDI Naming                          DenyAll                Marks that no roles are allowed to access this method
                                           standards, and the Java Transaction API. Additionally, the Web Profile
                                           focuses on Servlet and closely related technologies such as persistence, view                  PermitAll              Marks that all roles are allowed to access this method (or all
                                           presentation (JavaServer Faces and JavaServer Pages), and the business logic                                          methods if applied to a class)
                                           elements of EJB Lite.
                                                                                                                                          RolesAllowed           Specifies list of roles permitted to access this method (or all
                                           Code Example                                                                                                          methods if applied to a class)


                                           The simple class below is all it takes in Java EE 6 to define a POJO-based
                                           managed component capable of lifecycle callbacks, interceptors, and
                                           resource injection.

                                                /**
Java Enterprise Edition 6




                                                 * Interceptor logging that an invocation has been received
                                                 */
                                                public class LoggingInterceptor {

                                                    @AroundInvoke
                                                    public Object intercept(InvocationContext context) throws Exception {
                                                        System.out.println(“Been intercepted: “ + context);
                                                        return context.proceed();
                                                    }
                                                }

                                                /**
                                                 * Defines a simple managed bean able to receive an injection
                                                 */
                                                @ManagedBean
                                                @Interceptors({LoggingInterceptor.class}) // Invocations will be
                                                   // intercepted
                                                public class ComponentResourceInjection {

                                                    @Resource
                                                    private UserTransaction userTransaction;

                                                    // ... business methods will be intercepted
                                                    // by LoggingInterceptor




                                                                                                                       DZone, Inc.   |   www.dzone.com
2                                                                      Java Enterprise Edition 6




 RunAs                     Defines the identity context when run in the container                     RolesAllowed                  Specifies list of roles permitted to access this method (or all
                                                                                                                                    methods if applied to a class)


                                                                                                      RunAs                         Defines the identity context when run in the container
     JAVA SERVLET 3.0

                                                                                                          JAVA API FOR RESTFUL WEB SERVICES (JAX-RS)
JSR-315

Servlet technology models the request/response programming model and                                 JSR-311
is commonly used to extend HTTP servers to tie into server-side business
logic. In Servlet 3.0, the specification has been expanded to include                                New to Java EE, the JAX-RS specification allows for standard development
support for annotations, asynchronous processing, pluggability, and                                  adhering to the Representational State Transfer (REST) paradigm. These
general ease-of-configuration.                                                                       applications are packaged as a Servlet inside a web application archive.

Code Example
                                                                                                      /**
Because Servlet 3.0 includes annotations to define servlets, the descriptor                            * JAXB Model of a Name
                                                                                                       */
web.xml is no longer required in most of the common cases; below is an                                @XmlRootElement
example of all that’s needed to create a simple servlet.                                              public class Name {

 /**                                                                                                         private String name;
  * Simple Servlet which welcomes the user by name specified
  * by the request parameter “name”.                                                                         public Name(String name) {
  */                                                                                                             this.name = name;
 @WebServlet(urlPatterns =                                                                                   }
 {“/welcome”}) // Will service requests to the path “/welcome”                                               public Name() {}
 public class WelcomeServlet extends HttpServlet
 {                                                                                                           public String getName() {return this.name;}
    /**
     * Inject a reference to an EJB                                                                          public void setName(String name) {
     */                                                                                                          this.name = name;
    @EJB                                                                                                     }
    private WelcomeBean bean;                                                                         }

    /**                                                                                               /**
     * Service HTTP GET Requests                                                                       * Services requests for the path “/name”
     */                                                                                                * returning the JAXB-formed Name XML
    @Override                                                                                          */
    protected void doGet(final HttpServletRequest request, final HttpServletResponse                  @Path(“/name”)
 response) throws ServletException,                                                                   @Produces({“application/xml”})
           IOException                                                                                public class NamedResource extends javax.ws.rs.core.Application {
    {                                                                                                     @GET
       // Get the name from the request                                                                   public Name get(@QueryParam(“name”) String name) {
       final String name = request.getParameter(“name”);                                                      return new Name(name);
                                                                                                          }
       // Precondition checks                                                                         }
       if (name == null)
       {
          response.sendError(HttpServletResponse.SC_BAD_REQUEST, “Request                            ...and HTTP GET requests to “{baseUrl}/myapp/name?name=andrew” will
 parameter ”name” is required”);                                                                   return the XML form for the Name.
       }

         // Set content type                                                                         Public API Annotation Selection from javax.ws.rs:
         response.setContentType(“text/plain”);

         // Get the welcome message
                                                                                                      Class Name                    Description
         final String welcomeMessage = bean.welcome(name);
                                                                                                      Consumes                      Defines the media types that may be accepted
         // Write out
         response.getWriter().write(welcomeMessage);
     }                                                                                                CookieParam                   Injects the value of an HTTP cookie to a method param
                                                                                                                                    or bean/class field
 }


                                                                                                      DefaultValue                  Defines default values for cookies and other parameters
Public API from javax.servlet.annotation:
 Class Name                Description                                                                DELETE                        Flags that a method is to service HTTP DELETE requests

 HttpConstraint            Defines security constraints for all HTTP-servicing meth-
                           ods in a secured servlet                                                   Encoded                       Disables automatic decoding of parameter values

 HttpMethodCon-            Defines security constraints for an HTTP-servicing
                                                                                                      FormParam                     Injects the value of a form parameter to a resource method
 straint                   method in a servlet                                                                                      parameter

 MultipartConfig           Indicates the servlet is to service requests for multipart/                GET                           Flags that a method is to service HTTP GET requests
                           form-data MIME type
                                                                                                      HEAD                          Flags that a method is to service HTTP HEAD requests
 ServletSecurity           Secures a servlet class for HTTP-servicing methods


 WebFilter                 Defines a class as a servlet filter                                        HeaderParam                   Injects the value of a header parameter

                                                                                                      HttpMethod                    Draws an association between an HTTP method with an an-
 WebInitParam              Specificies an initialization parameter on a servlet or filter                                           notation

 WebListener               Defines a class as a web listener                                          MatrixParam                   Injects the value of a URI matrix parameter


 WebServlet                Defines a class as a servlet                                               Path                          Designates the URI path that a resource class or resource
                                                                                                                                    method will serve

 PermitAll                 Marks that all roles are allowed to access this method (or all             PathParam                     Injects the value of a URI path parameter
                           method if applied to a class)




                                                                                   DZone, Inc.   |   www.dzone.com
3                                                                   Java Enterprise Edition 6




 POST                       Flags that a method is to service HTTP POST requests                   javax.enterprise.inject.Model                          Built-in stereotype for beans
                                                                                                                                                          defining the model layer of an MVC
                                                                                                                                                          webapp (ie. JSF)
 Produces                   Signals the media type(s) to be served by this resource
                                                                                                   javax.enterprise.inject.New                            Built-in qualifier type
 PUT                        Flags that a method is to service HTTP PUT requests
                                                                                                   javax.enterprise.inject.Produces                       Identifies a Producer method or field
 QueryParam                 Injects the value of a query parameter
                                                                                                   javax.enterprise.inject.Specializes                    Indicates that a bean specializes
                                                                                                                                                          another bean

                                                                                                   javax.enterprise.inject.Stereotype                     Specifies that an annotation is a
      CONTEXTS AND DEPENDENCY INJECTION FOR JAVA                                                                                                          stereotype

                                                                                                   javax.enterprise.inject.Typed                          Restricts the types of a bean

JSR-299
                                                                                                  Relevent Public Annotation API from JSR-330,
The Java Contexts and Dependency Injection (CDI) specification                                    Dependency Injection for Java in package javax.inject:
introduces a standard set of application component management services
                                                                                                   Class Name          Description
to the Java EE platform. CDI manages the lifecycle and interactions
of stateful components bound to well defined contexts. CDI provides                                Inject              Identifies injectable constructors, methods, and fields
typesafe dependency injection between components. CDI also provides
                                                                                                   Named               String-based qualifier
interceptors and decorators to extend the behavior of components,
an event model for loosely coupled components and an SPI allowing
portable extensions to integrate cleanly with the Java EE environment.                             Qualifier           Identifies qualifier annotations
Additionally, CDI provides for easy integration with view layers such as                           Scope               Identifies scope annotations
JavaServer Faces 2.0 (JSR-314).

                                                                                                   Singleton           Identifies a type that the injector only instantiates once
Code Example
                                                                                                  For a deeper dive into CDI, check out DZone’s CDI Refcard: http://
Below is a simple example of a CDI Bean that is placed in scope alongside                         refcardz.dzone.com/refcardz/contexts-and-depencency
the HTTP session, given a String-based name binding (such that it may be
used in JSF view components, for example) and injects the FacesContext
such that it may be used in business methods.                                                          BEAN VALIDATION 1.0


 @SessionScoped // Bind to the web session                                                        JSR-303
 @Named // To be used in view components by name
 public class GreeterBean implements Serializable {
                                                                                                  New to Java EE 6, the Bean Validation Specification provides for unified
     @Inject // Used to integrate w/ JSF
     private FacesContext context;
                                                                                                  declaration of validation constraints upon bean data. It may be used to
                                                                                                  maintain the integrity of an object at all levels of an application: from user
     public GreeterBean() {}
                                                                                                  form input in the presentation tier all the way to the persistence layer.
     // ... business methods

 }                                                                                                Code Example

                                                                                                  Here is an example of how to apply Bean Validation constraints in a
 Class Name                                           Description                                 declarative fashion to ensure the integrity of a User object.

 javax.decorator.Decorator                            Declares the class as a Decorator            public class User {
                                                                                                       @NotNull
                                                                                                       @Size(min=1, max=15)
 javax.decorator.Delegate                             Specifies the injection point of a               private String firstname;
                                                      Decorator
                                                                                                       @NotNull
                                                                                                       @Size(min=1, max=30)
                                                                                                       private String lastname;
 javax.enterprise.context.ApplicationScoped           Specifies the bean has applica-
                                                      tion scope                                       @Pattern(regexp=”b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}b”)
                                                                                                       public String email;

                                                                                                   }
 javax.enterprise.context.ConversationScoped          Specifies the bean has conversation
                                                      scope

                                                                                                  Public Annotation API for javax.validation
 javax.enterprise.context.Dependent                   Specifies the bean belongs to
                                                      dependent pseudo-scope                       Class Name                  Description
                                                                                                   Constraint                  Link between a constraint annotation and its constraint
 javax.enterprise.context.NormalScope                 Specifies the bean is normally-                                          validation implementations
                                                      scoped
                                                                                                   GroupSequence               Defines a group sequence
 javax.enterprise.context.RequestScoped               Specifies the bean is request-scoped

 javax.enterprise.context.SessionScoped               Specifies the bean is session-scoped         OverridesAttribute          Mark an attribute as overriding the attribute of a com-
 javax.enterprise.event.Observes                      Identifies an event parameter of an                                      posing constraint
                                                      observer method
                                                                                                   OverridesAttribute.List     Defines several @OverridesAttribute annotations on the same
 javax.enterprise.inject.Alternative                  Specifies that the bean is an                                            element
                                                      Alternative
                                                                                                   ReportAsSingleViola-        A constraint annotation hosting this annotation will return the
                                                                                                   tion                        composed annotation error report if any of the composing
 javax.enterprise.inject.Any                          Built-in qualifier type
                                                                                                                               annotations fail.
 javax.enterprise.inject.Default                      Default qualifier type                       Valid                       Mark an association as cascaded

 javax.enterprise.inject.Disposes                     Identifies the disposed parameter of
                                                      a disposer method




                                                                                DZone, Inc.   |   www.dzone.com
4                                                            Java Enterprise Edition 6




                                                                                           ManagedProperty           Injection point for fields in ManagedBean classes
     JAVASERVER FACES 2.0

                                                                                           NoneScoped                Denotes a ManagedBean is to be in the “none” scope
JSR-314                                                                                    ReferencedBean            Denotes the class as a referenced bean

JavaServer Faces is a user interface (UI) framework for the development                    RequestScoped             Denotes a ManagedBean is to be in request scope
of Java web applications. Its primary function is to provide a component-
                                                                                           SessionScoped             Denotes a ManagedBean is to be in session scope
based toolset for easily displaying dynamic data to the user. It also
integrates a rich set of tools to help manage state and promote code                       ViewScoped                Denotes a ManagedBean is to be in view scope
reuse.
                                                                                          Public API from javax.faces.application:
Additionally, JSF is an extensible specification that encourages the
authoring of custom user views. It’s designed with tooling in mind such                    Class Name                Description
that integrated development environments (IDEs) can intelligently assist
                                                                                           Application               Singleton scoped per web application to provide
with design.
                                                                                                                     configuration for things like validators, components
                                                                                                                     and converters
Code Example
                                                                                           ApplicationFactory        Creates (if required) and returns Application instances
Here we’ll show a simple example of a JSF managed bean whose state is
scope to the HTTP request, and is registered to a bean name that may be                    ApplicationWrapper        Application type which may be used by developers to
accessed by the view layer.                                                                                          add to an existing ResourceHandler
                                                                                           ConfigurableNavigation-   Extends NavidationHandler to provide runtime inspection
                                                                                           Handler                   of the NavigationCase which defines the rule base for
 /**                                                                                                                 navigation
  * This class defines a bean to live bound to the HTTP
  * request scope, and may be accessed by the view layer                                   FacesMessage              A single validation message
  * under the name “hitchhikersGuide”.
  */                                                                                       NavigationCase            A single navigation case in the navigation rule base
 import javax.annotation.PostConstruct;
 import javax.enterprise.context.RequestScoped;
 import javax.faces.application.ProjectStage;
                                                                                           NavigationHandler         Handles navigation from a given action and outcome
 import javax.faces.bean.ManagedBean;
 import javax.faces.bean.ManagedProperty;                                                  Resource                  Models a client resource request

 @RequestScoped                                                                            ResourceHandler           API by which UIComponent and Renderer instances can
 @ManagedBean(name = “hitchhikersGuide”)                                                                             reference Resource instances
 public class HitchhikersGuide {
     private String ultimateAnswer;
                                                                                           ResourceWrapper           Simple base implementation of Resource to be extended
     @ManagedProperty(value = “#{facesContext.application.projectStage}”)                                            by developers looking to add custom behaviors
     private ProjectStage journeyStage;
                                                                                           StateManager              Coordinates the process of saving and restoring the view
     public String getUltimateAnswer() {                                                                             between client requests
         return ultimateAnswer;
     }                                                                                     StateManagerWrapper       Base implementation of a StateManager which may be
                                                                                                                     subclasses by developers looking to add custom behaviors
     public void setUltimateAnswer(String ultimateAnswer) {
         this.ultimateAnswer = ultimateAnswer;                                             ViewHandler               Pluggable point for the render response and restore view
     }                                                                                                               phases of the request lifecycle.
     public ProjectStage getJourneyStage() {
                                                                                           ViewHandlerWrapper        Base implementation of a ViewHandler which may be sub-
         return journeyStage;
     }                                                                                                               classes by developers looking to add custom behaviors.

     public void setJourneyStage(ProjectStage journeyStage) {
         this.journeyStage = journeyStage;
     }
                                                                                              ENTERPRISE JAVABEANS 3.1
     @PostConstruct
     public void findUltimateAnswerToUltimateQuestion() {
         ultimateAnswer = “42”;

 }
     }                                                                                    JSR-318
 index.xhtml View:                                                                        Enterprise JavaBeans provide a component model to encapsulate
 <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”                           business logic. As such, they provide a few bean types:
    “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
 <html xmlns=”http://www.w3.org/1999/xhtml”                                                 •	 Session Beans
    xmlns:h=”http://java.sun.com/jsf/html”
    xmlns:f=”http://java.sun.com/jsf/core”>
    <head>
                                                                                            •	 Stateless
       <title>Sample JSF Page</title>
    </head>                                                                                 •	 No conversational state between requests
    <body>
    <f:view>
       <h2><h:outputText value=”Test Managed Bean Annotations”/></h2>                       •	 Stateful
       <p><h:outputText value=”hitchhikersGuide.ultimateAnswer =
 #{hitchhikersGuide.ultimateAnswer}”/></p>
       <h2><h:outputText value=”Test Project Stage”/></h2>
                                                                                            •	 Same bean instance used to service each client/session
       <p><h:outputText value=”project stage = #{hitchhikersGuide.
 journeyStage}”/></p>                                                                       •	 Singleton
    </f:view>
    </body>
 </html>                                                                                    •	 One shared bean instance for all users
                                                                                            •	 Message-Driven
Public API from javax.faces.bean:
                                                                                            •	 Event Listener
 Class Name                 Description
                                                                                            •	 JCA endpoint
 ApplicationScoped          Denotes a ManagedBean is to be in application
                            scope                                                           •	 Asynchronous
 CustomScoped               Denotes a ManagedBean is to be in a custom-de-
                                                                                            •	 Entity
                            fined scope of the specified value
 ManagedBean                Defines a class as a ManagedBean type                           •	 Integration point w/ Java Persistence



                                                                        DZone, Inc.   |   www.dzone.com
5                                                                   Java Enterprise Edition 6




Code Example                                                                                    TransactionManage-           Configures transactional management for a Session or
                                                                                                ment                         Message-Driven Bean (container or bean provided)
It’s simple to define an EJB capable of greeting a user.


 /**
  * Stateless Session EJB                                                                            JAVA PERSISTENCE 2.0
  */
 @Stateless // Defines a Stateless Session Bean
 @LocalBean // No-interface view
 public class GreeterBean {
     @Override                                                                                 JSR-317
     public String greet(String name) {
         return “Hi, “ + name + “!”;
     }                                                                                         Most enterprise applications will need to deal with persistent data,
 }                                                                                             and interaction with relational databases can be a tedious and difficult
                                                                                               endeavor. The Java Persistence specification aims to provide an object
                                                                                               view of backend storage in a transactionally aware manner. By dealing
Other components, such as Servlets, may now inject a proxy to the above                        with POJOs, JPA enables developers to perform database operations
EJB:                                                                                           without the need for manually tuning SQL.

@EJB private GreeterBean greeterEjb;
                                                                                               Code Example
Public API Annotation Selection from javax.ejb:                                                A JPA entity is simply a POJO with some annotations to provide additional
 Class Name               Description                                                          mapping metadata. For instance:

 AccessTimeout            Designates the amount of time a concurrent method                      @Entity
                          should block before timing out                                         public class SimpleEmployee {
                                                                                                    @Id @Auto
 ActivationConfig-        Used to configure Message-Driven Beans                                    private Long id;
                                                                                                    private String name;
 Property
                                                                                                     public   Long getId(){ return id; }
 AfterBegin               Defines a Tx callback method for the “after begin”                         public   void setId(final Long id) { this.id = id; }
                                                                                                     public   String getName() { return name; }
                          event                                                                      public   void setName(final String name) { this.name = name; }
                                                                                                 }
 AfterCompletion          Defines a Tx callback method for the “after completion” event


 ApplicationException     Defines a user exception which should not be wrapped                 Now a managed component such as an EJB or CDI bean can interact with
                                                                                               the database through our entity by associating it with an EntityManager.
 Asynchronous             Defines methods to be executed asynchronously.
                                                                                                 @PersistenceContext
                                                                                                 private EntityManager em;
 BeforeCompletion         Defines a Tx callback method for the “before completion”
                          event                                                                  public void createUser(){
                                                                                                   final SimpleEmployee andrew = new SimpleEmployee();
 ConcurrencyManage-       Configures the concurrency management mode for a single-                 andrew.setId(100L);
 ment                     ton session bean                                                         andrew.setName(“Andrew Lee Rubinger”);
                                                                                                   em.persist(andrew); // Store in the DB
 DependsOn                Designates initialization order for Singleton Session Beans              // Now any state changes done to this managed object will be
                                                                                                   // reflected in the database when the Tx completes
                                                                                                 }
 EJB                      Defines an injection point and dependency upon an EJB
                          component

 EJBs                     Plural injection point and dependency for EJB components, to
                          be applied at the class-level                                        Public API Annotation Selection from javax.persistence:
 Local                    Defines a local business interface view                               Class Name               Description
 LocalBean                Defines a no-interface view                                           Basic                    Describes mapping for a database column

 Lock                     Defines a concurrency lock for Singleton Session Beans using
                          container-managed concurrency
                                                                                                Column                   Specifies column mapping for a persistent property

 MessageDriven            Defines a Message-Driven Bean
                                                                                                DiscriminatorCol-        Notes the discriminator column used for SINGLE_TABLE
 PostActivate             Defines an event callback after a Stateful Session Bean has           umn                      and JOINED inheritance strategies
                          been activated

 PrePassivate             Defines an event callback before a Stateful Session Bean is to        DiscriminatorValue       Specifies the value of the discriminator column for entities of this
                          be passivated                                                                                  type

 Remote                   Defines a remote business interface view                              ElementCollection        Defines a collection of instances

 Remove                   Defines a business method that should trigger the removal of
                          a Stateful Session Bean instance (i.e., destroy the session)          Embeddable               Defines a class whose instances are stored as part of the owning
                                                                                                                         entity
 Schedule                 Defines a new timer to be created with a specified schedule

 Schedules                Plural of Schedule                                                    Embedded                 Specifies a persistent property whose value is an instance of an
                                                                                                                         embeddable class
 Singleton                Defines a Singleton Session Bean

 Startup                  Denotes that a Singleton Session Bean should eagerly load             EmbeddedId               Denotes composite primary key of an embeddable class

 Stateful                 Defines a Stateful Session Bean
                                                                                                Entity                   Defines a POJO as a persistent entity
 StatefulTimeout          Defines the amount of idle time before a Stateful Session is
                          eligible for removal                                                  EntityListeners          Specifies callback listeners

 Stateless                Defines a Stateless Session Bean
                                                                                                Enumerated               Specifies that a persistent property should be persisted as an
 Timeout                  Defines a timer expiration method                                                              enumeration

 TransactionAttribute     Configures the transactional context under which business
                          methods should execute


                                                                             DZone, Inc.   |   www.dzone.com
JavaEE6

More Related Content

What's hot

JBoss presentation 2003 11 for matrix
JBoss presentation 2003 11 for matrixJBoss presentation 2003 11 for matrix
JBoss presentation 2003 11 for matrixrunsignup
 
JavaEE 6 and GlassFish v3 at SFJUG
JavaEE 6 and GlassFish v3 at SFJUGJavaEE 6 and GlassFish v3 at SFJUG
JavaEE 6 and GlassFish v3 at SFJUGMarakana Inc.
 
Java EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureJava EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureArun Gupta
 
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010Arun Gupta
 
Improve your Developer Experiece using the WAS Liberty Profile with JRebel
Improve your Developer Experiece using the WAS Liberty Profile with JRebel Improve your Developer Experiece using the WAS Liberty Profile with JRebel
Improve your Developer Experiece using the WAS Liberty Profile with JRebel Anton Arhipov
 
Windows Server 2012 Active Directory Domain and Trust (Forest Trust)
Windows Server 2012 Active Directory Domain and Trust (Forest Trust)Windows Server 2012 Active Directory Domain and Trust (Forest Trust)
Windows Server 2012 Active Directory Domain and Trust (Forest Trust)Serhad MAKBULOĞLU, MBA
 
Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 workshop at Dallas Tech Fest 2011Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 workshop at Dallas Tech Fest 2011Arun Gupta
 
Sun Java EE 6 Overview
Sun Java EE 6 OverviewSun Java EE 6 Overview
Sun Java EE 6 Overviewsbobde
 
it's learning MLG integration
it's learning MLG integrationit's learning MLG integration
it's learning MLG integrationjab
 
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010Arun Gupta
 
Java EE 6 Component Model Explained
Java EE 6 Component Model Explained Java EE 6 Component Model Explained
Java EE 6 Component Model Explained Shreedhar Ganapathy
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFlex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFrançois Le Droff
 
Workload Groups overview updates
Workload Groups overview updatesWorkload Groups overview updates
Workload Groups overview updatesCOMMON Europe
 
Eclipse Development Tools | JBuilder from Embarcadero Technologies
Eclipse Development Tools | JBuilder from Embarcadero TechnologiesEclipse Development Tools | JBuilder from Embarcadero Technologies
Eclipse Development Tools | JBuilder from Embarcadero TechnologiesMichael Findling
 
Java one brazil_keynote_dochez
Java one brazil_keynote_dochezJava one brazil_keynote_dochez
Java one brazil_keynote_dochezJerome Dochez
 
Whats new in was liberty security and cloud readiness
Whats new in was liberty   security and cloud readinessWhats new in was liberty   security and cloud readiness
Whats new in was liberty security and cloud readinesssflynn073
 
LUGOD Raspberry Pi Hacking
LUGOD Raspberry Pi HackingLUGOD Raspberry Pi Hacking
LUGOD Raspberry Pi HackingStephen Chin
 

What's hot (18)

JBoss presentation 2003 11 for matrix
JBoss presentation 2003 11 for matrixJBoss presentation 2003 11 for matrix
JBoss presentation 2003 11 for matrix
 
JavaEE 6 and GlassFish v3 at SFJUG
JavaEE 6 and GlassFish v3 at SFJUGJavaEE 6 and GlassFish v3 at SFJUG
JavaEE 6 and GlassFish v3 at SFJUG
 
Java EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureJava EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for future
 
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
Java EE 6 Hands-on Workshop at Dallas Tech Fest 2010
 
Improve your Developer Experiece using the WAS Liberty Profile with JRebel
Improve your Developer Experiece using the WAS Liberty Profile with JRebel Improve your Developer Experiece using the WAS Liberty Profile with JRebel
Improve your Developer Experiece using the WAS Liberty Profile with JRebel
 
Windows Server 2012 Active Directory Domain and Trust (Forest Trust)
Windows Server 2012 Active Directory Domain and Trust (Forest Trust)Windows Server 2012 Active Directory Domain and Trust (Forest Trust)
Windows Server 2012 Active Directory Domain and Trust (Forest Trust)
 
Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 workshop at Dallas Tech Fest 2011Java EE 6 workshop at Dallas Tech Fest 2011
Java EE 6 workshop at Dallas Tech Fest 2011
 
Sun Java EE 6 Overview
Sun Java EE 6 OverviewSun Java EE 6 Overview
Sun Java EE 6 Overview
 
it's learning MLG integration
it's learning MLG integrationit's learning MLG integration
it's learning MLG integration
 
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
 
Java EE 6 Component Model Explained
Java EE 6 Component Model Explained Java EE 6 Component Model Explained
Java EE 6 Component Model Explained
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFlex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
 
Workload Groups overview updates
Workload Groups overview updatesWorkload Groups overview updates
Workload Groups overview updates
 
Sail Fin Webinar Overview
Sail Fin Webinar OverviewSail Fin Webinar Overview
Sail Fin Webinar Overview
 
Eclipse Development Tools | JBuilder from Embarcadero Technologies
Eclipse Development Tools | JBuilder from Embarcadero TechnologiesEclipse Development Tools | JBuilder from Embarcadero Technologies
Eclipse Development Tools | JBuilder from Embarcadero Technologies
 
Java one brazil_keynote_dochez
Java one brazil_keynote_dochezJava one brazil_keynote_dochez
Java one brazil_keynote_dochez
 
Whats new in was liberty security and cloud readiness
Whats new in was liberty   security and cloud readinessWhats new in was liberty   security and cloud readiness
Whats new in was liberty security and cloud readiness
 
LUGOD Raspberry Pi Hacking
LUGOD Raspberry Pi HackingLUGOD Raspberry Pi Hacking
LUGOD Raspberry Pi Hacking
 

Viewers also liked

Mongo db实战
Mongo db实战Mongo db实战
Mongo db实战Roger Xia
 
Q con london2011-matthewwall-whyichosemongodbforguardiancouk
Q con london2011-matthewwall-whyichosemongodbforguardiancoukQ con london2011-matthewwall-whyichosemongodbforguardiancouk
Q con london2011-matthewwall-whyichosemongodbforguardiancoukRoger Xia
 
Consistency-New-Generation-Databases
Consistency-New-Generation-DatabasesConsistency-New-Generation-Databases
Consistency-New-Generation-DatabasesRoger Xia
 
Ajax Lucence
Ajax LucenceAjax Lucence
Ajax LucenceRoger Xia
 
构建高效能的Web网站 精选版-by-infoq
构建高效能的Web网站 精选版-by-infoq构建高效能的Web网站 精选版-by-infoq
构建高效能的Web网站 精选版-by-infoqRoger Xia
 
机器学习推动金融数据智能
机器学习推动金融数据智能机器学习推动金融数据智能
机器学习推动金融数据智能Roger Xia
 

Viewers also liked (6)

Mongo db实战
Mongo db实战Mongo db实战
Mongo db实战
 
Q con london2011-matthewwall-whyichosemongodbforguardiancouk
Q con london2011-matthewwall-whyichosemongodbforguardiancoukQ con london2011-matthewwall-whyichosemongodbforguardiancouk
Q con london2011-matthewwall-whyichosemongodbforguardiancouk
 
Consistency-New-Generation-Databases
Consistency-New-Generation-DatabasesConsistency-New-Generation-Databases
Consistency-New-Generation-Databases
 
Ajax Lucence
Ajax LucenceAjax Lucence
Ajax Lucence
 
构建高效能的Web网站 精选版-by-infoq
构建高效能的Web网站 精选版-by-infoq构建高效能的Web网站 精选版-by-infoq
构建高效能的Web网站 精选版-by-infoq
 
机器学习推动金融数据智能
机器学习推动金融数据智能机器学习推动金融数据智能
机器学习推动金融数据智能
 

Similar to JavaEE6

A DYNAMIC APPLICATION USING JBOSS
A DYNAMIC APPLICATION USING JBOSSA DYNAMIC APPLICATION USING JBOSS
A DYNAMIC APPLICATION USING JBOSSijcax
 
A DYNAMIC APPLICATION USING JBOSS
A DYNAMIC APPLICATION USING JBOSSA DYNAMIC APPLICATION USING JBOSS
A DYNAMIC APPLICATION USING JBOSSijcax
 
Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1sandeep54552
 
IBM Websphere introduction and installation for beginners
IBM Websphere introduction and installation for beginnersIBM Websphere introduction and installation for beginners
IBM Websphere introduction and installation for beginnersShubham Gupta
 
JEE Course - JEE Overview
JEE Course - JEE  OverviewJEE Course - JEE  Overview
JEE Course - JEE Overviewodedns
 
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudTDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudArun Gupta
 
Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...Aditya Jha
 
The Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the CloudThe Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the Cloudcodemotion_es
 
Introduction to java ee
Introduction to java eeIntroduction to java ee
Introduction to java eeRanjan Kumar
 
Technology Tutorial.pdf
Technology Tutorial.pdfTechnology Tutorial.pdf
Technology Tutorial.pdfTechSearchWeb
 
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgJava EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgArun Gupta
 
Project report for final year project
Project report for final year projectProject report for final year project
Project report for final year projectsuneel singh
 

Similar to JavaEE6 (20)

A DYNAMIC APPLICATION USING JBOSS
A DYNAMIC APPLICATION USING JBOSSA DYNAMIC APPLICATION USING JBOSS
A DYNAMIC APPLICATION USING JBOSS
 
A DYNAMIC APPLICATION USING JBOSS
A DYNAMIC APPLICATION USING JBOSSA DYNAMIC APPLICATION USING JBOSS
A DYNAMIC APPLICATION USING JBOSS
 
Jboss
JbossJboss
Jboss
 
Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1
 
IBM Websphere introduction and installation for beginners
IBM Websphere introduction and installation for beginnersIBM Websphere introduction and installation for beginners
IBM Websphere introduction and installation for beginners
 
EJBW
EJBWEJBW
EJBW
 
J2ee seminar
J2ee seminarJ2ee seminar
J2ee seminar
 
Frameworks in java
Frameworks in javaFrameworks in java
Frameworks in java
 
JEE Course - JEE Overview
JEE Course - JEE  OverviewJEE Course - JEE  Overview
JEE Course - JEE Overview
 
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudTDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
 
Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...
 
Jboss Tutorial Basics
Jboss Tutorial BasicsJboss Tutorial Basics
Jboss Tutorial Basics
 
The Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the CloudThe Java EE 7 Platform: Developing for the Cloud
The Java EE 7 Platform: Developing for the Cloud
 
Java server face tutorial
Java server face tutorialJava server face tutorial
Java server face tutorial
 
Introduction to java ee
Introduction to java eeIntroduction to java ee
Introduction to java ee
 
Java EE 7 - Overview and Status
Java EE 7  - Overview and StatusJava EE 7  - Overview and Status
Java EE 7 - Overview and Status
 
TechSearchWeb.pdf
TechSearchWeb.pdfTechSearchWeb.pdf
TechSearchWeb.pdf
 
Technology Tutorial.pdf
Technology Tutorial.pdfTechnology Tutorial.pdf
Technology Tutorial.pdf
 
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, JohannesburgJava EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
 
Project report for final year project
Project report for final year projectProject report for final year project
Project report for final year project
 

More from Roger Xia

Code reviews
Code reviewsCode reviews
Code reviewsRoger Xia
 
Python introduction
Python introductionPython introduction
Python introductionRoger Xia
 
Learning notes ruby
Learning notes rubyLearning notes ruby
Learning notes rubyRoger Xia
 
Converged open platform for enterprise
Converged open platform for enterpriseConverged open platform for enterprise
Converged open platform for enterpriseRoger Xia
 
Code reviews
Code reviewsCode reviews
Code reviewsRoger Xia
 
E commerce search strategies
E commerce search strategiesE commerce search strategies
E commerce search strategiesRoger Xia
 
Indefero source code_managment
Indefero source code_managmentIndefero source code_managment
Indefero source code_managmentRoger Xia
 
Web Services Atomic Transactio
 Web Services Atomic Transactio Web Services Atomic Transactio
Web Services Atomic TransactioRoger Xia
 
Web service through cxf
Web service through cxfWeb service through cxf
Web service through cxfRoger Xia
 
Spring one2gx2010 spring-nonrelational_data
Spring one2gx2010 spring-nonrelational_dataSpring one2gx2010 spring-nonrelational_data
Spring one2gx2010 spring-nonrelational_dataRoger Xia
 
Java explore
Java exploreJava explore
Java exploreRoger Xia
 
Ca siteminder
Ca siteminderCa siteminder
Ca siteminderRoger Xia
 
Fixing twitter
Fixing twitterFixing twitter
Fixing twitterRoger Xia
 
Eclipse plug in mylyn & tasktop
Eclipse plug in mylyn & tasktopEclipse plug in mylyn & tasktop
Eclipse plug in mylyn & tasktopRoger Xia
 
新浪微博架构猜想
新浪微博架构猜想新浪微博架构猜想
新浪微博架构猜想Roger Xia
 
MDD and modeling tools research
MDD and modeling tools researchMDD and modeling tools research
MDD and modeling tools researchRoger Xia
 
Secure Multi Tenancy In the Cloud
Secure Multi Tenancy In the CloudSecure Multi Tenancy In the Cloud
Secure Multi Tenancy In the CloudRoger Xia
 
Java programing considering performance
Java programing considering performanceJava programing considering performance
Java programing considering performanceRoger Xia
 

More from Roger Xia (20)

Code reviews
Code reviewsCode reviews
Code reviews
 
Python introduction
Python introductionPython introduction
Python introduction
 
Learning notes ruby
Learning notes rubyLearning notes ruby
Learning notes ruby
 
Converged open platform for enterprise
Converged open platform for enterpriseConverged open platform for enterprise
Converged open platform for enterprise
 
Code reviews
Code reviewsCode reviews
Code reviews
 
E commerce search strategies
E commerce search strategiesE commerce search strategies
E commerce search strategies
 
Saml
SamlSaml
Saml
 
Indefero source code_managment
Indefero source code_managmentIndefero source code_managment
Indefero source code_managment
 
Web Services Atomic Transactio
 Web Services Atomic Transactio Web Services Atomic Transactio
Web Services Atomic Transactio
 
Web service through cxf
Web service through cxfWeb service through cxf
Web service through cxf
 
Spring one2gx2010 spring-nonrelational_data
Spring one2gx2010 spring-nonrelational_dataSpring one2gx2010 spring-nonrelational_data
Spring one2gx2010 spring-nonrelational_data
 
Java explore
Java exploreJava explore
Java explore
 
Ca siteminder
Ca siteminderCa siteminder
Ca siteminder
 
Fixing twitter
Fixing twitterFixing twitter
Fixing twitter
 
Eclipse plug in mylyn & tasktop
Eclipse plug in mylyn & tasktopEclipse plug in mylyn & tasktop
Eclipse plug in mylyn & tasktop
 
新浪微博架构猜想
新浪微博架构猜想新浪微博架构猜想
新浪微博架构猜想
 
Jenkins
JenkinsJenkins
Jenkins
 
MDD and modeling tools research
MDD and modeling tools researchMDD and modeling tools research
MDD and modeling tools research
 
Secure Multi Tenancy In the Cloud
Secure Multi Tenancy In the CloudSecure Multi Tenancy In the Cloud
Secure Multi Tenancy In the Cloud
 
Java programing considering performance
Java programing considering performanceJava programing considering performance
Java programing considering performance
 

Recently uploaded

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Recently uploaded (20)

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

JavaEE6

  • 1. JBoss Application Server Overview Community Project JBoss Application Server* is the world's lead- ing Open Source Java EE application server for developing and deploying enterprise applica- tions. The latest in this line, JBoss AS 7 (Java EE Web Profile certified), provides the same devel- oper friendly environment as previous versions JBoss Application Server 7 while offering revolutionary new management capabilities, and much more. Blazing fast startup (~3seconds) Services are started concurrently to eliminate unnecessary waits and leverage multi-core processors, while non-critical services remain passivated until rst use. JBoss AS 7 o ers a 10-fold reduction in startup time over previous versions. Lightweight An aggressive approach to memory management and metadata indexing keeps the footprint exceptionally small, enabling it to run with stock JVM settings and on small devices. Pro les can be used to tune the capabilities of the server. Modular core JBoss Modules o ers true application isolation, hiding server implementation classes and only loads the classes your application needs. Class loading is concurrent for extreme performance. OSGi support is available the moment you install the application server. Hot, incremental deployment Quick turnaround during development as a result of fast, concurrent deployment and the ability to edit static resources without redeployment in a exible deployment structure. Elegant administration Consistent and powerful management is available, ranging from a polished, user-friendly web console to Java and HTTP APIs to a command line tool to direct XML edits. Con guration data is centralized and user-focused. Domain (multi-server) management One controller can rule them all or you can simply start a standalone server. Port o sets can be changed with a single switch. Rolling deployments are available First class components JBoss AS builds on many best of breed standalone OSS projects: Hibernate, JBoss Transactions, In nispan, Iron Jacamar, RESTEasy, Weld, HornetQ, JGroups, JBoss Logging, Mojarra, Apache CXF, and more. Java EE 6 programming model Java EE 6 o ers a modern, loosely coupled programming model, founded on CDI, a speci cation driven by JBoss. With Java EE 6 you can focus on implementing your business logic, and allow the platform to take care of the rest. Testable by design Arquillian o ers absolute delity for testing: the ability to test your application inside the actual environment. Just like CDI, Arquillian takes care of all the boilerplate in the background, removing clutter from your tests. Scan this and find out more about the JBoss Application Server project. http://www.jboss.org/jbossas * JBoss Application Server is in the upstream for JBoss Enterprise Application Platform.
  • 2. brought to you by... #150 Get More Refcardz! Visit refcardz.com CONTENTS INCLUDE: n n n About the Platform Common Annotations For Java Java Platform, Enterprise Edition Java Enterprise Edition 6 Java Servelet 3.0 The Most Elegant Enterprise Java Yet n n JavaServer Faces 2.0 n Enterprise JavaBeans 3.1 By Andrew Lee Rubinger Reference ABOUT THE PLATFORM The full JavaDoc for the Java EE 6 API is located at: http://download.oracle.com/javaee/6/api/ Enterprise software development is inherently complex, and multi-user systems open the door to concerns such as transactional integrity, security, COMMON ANNOTATIONS FOR THE JAVA PLATFORM persistence integration, and interaction between components. Very simply put, the mission of the Java Enterprise Edition is to enable an out-of-the-box set of configurable services that allows the programmer to write less and focus JSR-250 on delivering clean business logic. he common annotations for Java EE are a shared package used throughout To this end, Java EE 6 is an aggregate of many interoperable technologies the platform specifications that generally focus on shared services like designed to deliver a unified experience. Application Servers that are lifecycle, injection, and security. certified to the standards defined by the Java Community Process are intended to service applications written to the specifications within the platform. Class Name Description For the sake of brevity, this reference card will focus on the key APIs of Java EE Generated Marks generated code 6 that are most relevant to modern development. ManagedBean Defines a class as a Java EE 6 Managed Bean JAVA PLATFORM, ENTERPRISE EDITION 6 (JAVA EE 6) PostConstruct Lifecycle callback after an instance has been created but before it is put into service PreDestroy Lifecycle callback before an instance is to be removed from JSR-316 service This umbrella specification ties together the various subsystems that comprise Resource Defines an injection point, marks that this is to be provided by the platform and provides additional integration support. the container Profiles Resources Allows for injection of N resources New to Java EE 6 is the notion of the “Web Profile”, a subset of the full specification that is targeted to cater to more specialized and minimal web- DeclareRoles Class-level target defining valid security roles based application requirements. It is guaranteed to support the platform common annotations for injection and lifecycle (JSR-250), JNDI Naming DenyAll Marks that no roles are allowed to access this method standards, and the Java Transaction API. Additionally, the Web Profile focuses on Servlet and closely related technologies such as persistence, view PermitAll Marks that all roles are allowed to access this method (or all presentation (JavaServer Faces and JavaServer Pages), and the business logic methods if applied to a class) elements of EJB Lite. RolesAllowed Specifies list of roles permitted to access this method (or all Code Example methods if applied to a class) The simple class below is all it takes in Java EE 6 to define a POJO-based managed component capable of lifecycle callbacks, interceptors, and resource injection. /** Java Enterprise Edition 6 * Interceptor logging that an invocation has been received */ public class LoggingInterceptor { @AroundInvoke public Object intercept(InvocationContext context) throws Exception { System.out.println(“Been intercepted: “ + context); return context.proceed(); } } /** * Defines a simple managed bean able to receive an injection */ @ManagedBean @Interceptors({LoggingInterceptor.class}) // Invocations will be // intercepted public class ComponentResourceInjection { @Resource private UserTransaction userTransaction; // ... business methods will be intercepted // by LoggingInterceptor DZone, Inc. | www.dzone.com
  • 3. 2 Java Enterprise Edition 6 RunAs Defines the identity context when run in the container RolesAllowed Specifies list of roles permitted to access this method (or all methods if applied to a class) RunAs Defines the identity context when run in the container JAVA SERVLET 3.0 JAVA API FOR RESTFUL WEB SERVICES (JAX-RS) JSR-315 Servlet technology models the request/response programming model and JSR-311 is commonly used to extend HTTP servers to tie into server-side business logic. In Servlet 3.0, the specification has been expanded to include New to Java EE, the JAX-RS specification allows for standard development support for annotations, asynchronous processing, pluggability, and adhering to the Representational State Transfer (REST) paradigm. These general ease-of-configuration. applications are packaged as a Servlet inside a web application archive. Code Example /** Because Servlet 3.0 includes annotations to define servlets, the descriptor * JAXB Model of a Name */ web.xml is no longer required in most of the common cases; below is an @XmlRootElement example of all that’s needed to create a simple servlet. public class Name { /** private String name; * Simple Servlet which welcomes the user by name specified * by the request parameter “name”. public Name(String name) { */ this.name = name; @WebServlet(urlPatterns = } {“/welcome”}) // Will service requests to the path “/welcome” public Name() {} public class WelcomeServlet extends HttpServlet { public String getName() {return this.name;} /** * Inject a reference to an EJB public void setName(String name) { */ this.name = name; @EJB } private WelcomeBean bean; } /** /** * Service HTTP GET Requests * Services requests for the path “/name” */ * returning the JAXB-formed Name XML @Override */ protected void doGet(final HttpServletRequest request, final HttpServletResponse @Path(“/name”) response) throws ServletException, @Produces({“application/xml”}) IOException public class NamedResource extends javax.ws.rs.core.Application { { @GET // Get the name from the request public Name get(@QueryParam(“name”) String name) { final String name = request.getParameter(“name”); return new Name(name); } // Precondition checks } if (name == null) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, “Request ...and HTTP GET requests to “{baseUrl}/myapp/name?name=andrew” will parameter ”name” is required”); return the XML form for the Name. } // Set content type Public API Annotation Selection from javax.ws.rs: response.setContentType(“text/plain”); // Get the welcome message Class Name Description final String welcomeMessage = bean.welcome(name); Consumes Defines the media types that may be accepted // Write out response.getWriter().write(welcomeMessage); } CookieParam Injects the value of an HTTP cookie to a method param or bean/class field } DefaultValue Defines default values for cookies and other parameters Public API from javax.servlet.annotation: Class Name Description DELETE Flags that a method is to service HTTP DELETE requests HttpConstraint Defines security constraints for all HTTP-servicing meth- ods in a secured servlet Encoded Disables automatic decoding of parameter values HttpMethodCon- Defines security constraints for an HTTP-servicing FormParam Injects the value of a form parameter to a resource method straint method in a servlet parameter MultipartConfig Indicates the servlet is to service requests for multipart/ GET Flags that a method is to service HTTP GET requests form-data MIME type HEAD Flags that a method is to service HTTP HEAD requests ServletSecurity Secures a servlet class for HTTP-servicing methods WebFilter Defines a class as a servlet filter HeaderParam Injects the value of a header parameter HttpMethod Draws an association between an HTTP method with an an- WebInitParam Specificies an initialization parameter on a servlet or filter notation WebListener Defines a class as a web listener MatrixParam Injects the value of a URI matrix parameter WebServlet Defines a class as a servlet Path Designates the URI path that a resource class or resource method will serve PermitAll Marks that all roles are allowed to access this method (or all PathParam Injects the value of a URI path parameter method if applied to a class) DZone, Inc. | www.dzone.com
  • 4. 3 Java Enterprise Edition 6 POST Flags that a method is to service HTTP POST requests javax.enterprise.inject.Model Built-in stereotype for beans defining the model layer of an MVC webapp (ie. JSF) Produces Signals the media type(s) to be served by this resource javax.enterprise.inject.New Built-in qualifier type PUT Flags that a method is to service HTTP PUT requests javax.enterprise.inject.Produces Identifies a Producer method or field QueryParam Injects the value of a query parameter javax.enterprise.inject.Specializes Indicates that a bean specializes another bean javax.enterprise.inject.Stereotype Specifies that an annotation is a CONTEXTS AND DEPENDENCY INJECTION FOR JAVA stereotype javax.enterprise.inject.Typed Restricts the types of a bean JSR-299 Relevent Public Annotation API from JSR-330, The Java Contexts and Dependency Injection (CDI) specification Dependency Injection for Java in package javax.inject: introduces a standard set of application component management services Class Name Description to the Java EE platform. CDI manages the lifecycle and interactions of stateful components bound to well defined contexts. CDI provides Inject Identifies injectable constructors, methods, and fields typesafe dependency injection between components. CDI also provides Named String-based qualifier interceptors and decorators to extend the behavior of components, an event model for loosely coupled components and an SPI allowing portable extensions to integrate cleanly with the Java EE environment. Qualifier Identifies qualifier annotations Additionally, CDI provides for easy integration with view layers such as Scope Identifies scope annotations JavaServer Faces 2.0 (JSR-314). Singleton Identifies a type that the injector only instantiates once Code Example For a deeper dive into CDI, check out DZone’s CDI Refcard: http:// Below is a simple example of a CDI Bean that is placed in scope alongside refcardz.dzone.com/refcardz/contexts-and-depencency the HTTP session, given a String-based name binding (such that it may be used in JSF view components, for example) and injects the FacesContext such that it may be used in business methods. BEAN VALIDATION 1.0 @SessionScoped // Bind to the web session JSR-303 @Named // To be used in view components by name public class GreeterBean implements Serializable { New to Java EE 6, the Bean Validation Specification provides for unified @Inject // Used to integrate w/ JSF private FacesContext context; declaration of validation constraints upon bean data. It may be used to maintain the integrity of an object at all levels of an application: from user public GreeterBean() {} form input in the presentation tier all the way to the persistence layer. // ... business methods } Code Example Here is an example of how to apply Bean Validation constraints in a Class Name Description declarative fashion to ensure the integrity of a User object. javax.decorator.Decorator Declares the class as a Decorator public class User { @NotNull @Size(min=1, max=15) javax.decorator.Delegate Specifies the injection point of a private String firstname; Decorator @NotNull @Size(min=1, max=30) private String lastname; javax.enterprise.context.ApplicationScoped Specifies the bean has applica- tion scope @Pattern(regexp=”b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}b”) public String email; } javax.enterprise.context.ConversationScoped Specifies the bean has conversation scope Public Annotation API for javax.validation javax.enterprise.context.Dependent Specifies the bean belongs to dependent pseudo-scope Class Name Description Constraint Link between a constraint annotation and its constraint javax.enterprise.context.NormalScope Specifies the bean is normally- validation implementations scoped GroupSequence Defines a group sequence javax.enterprise.context.RequestScoped Specifies the bean is request-scoped javax.enterprise.context.SessionScoped Specifies the bean is session-scoped OverridesAttribute Mark an attribute as overriding the attribute of a com- javax.enterprise.event.Observes Identifies an event parameter of an posing constraint observer method OverridesAttribute.List Defines several @OverridesAttribute annotations on the same javax.enterprise.inject.Alternative Specifies that the bean is an element Alternative ReportAsSingleViola- A constraint annotation hosting this annotation will return the tion composed annotation error report if any of the composing javax.enterprise.inject.Any Built-in qualifier type annotations fail. javax.enterprise.inject.Default Default qualifier type Valid Mark an association as cascaded javax.enterprise.inject.Disposes Identifies the disposed parameter of a disposer method DZone, Inc. | www.dzone.com
  • 5. 4 Java Enterprise Edition 6 ManagedProperty Injection point for fields in ManagedBean classes JAVASERVER FACES 2.0 NoneScoped Denotes a ManagedBean is to be in the “none” scope JSR-314 ReferencedBean Denotes the class as a referenced bean JavaServer Faces is a user interface (UI) framework for the development RequestScoped Denotes a ManagedBean is to be in request scope of Java web applications. Its primary function is to provide a component- SessionScoped Denotes a ManagedBean is to be in session scope based toolset for easily displaying dynamic data to the user. It also integrates a rich set of tools to help manage state and promote code ViewScoped Denotes a ManagedBean is to be in view scope reuse. Public API from javax.faces.application: Additionally, JSF is an extensible specification that encourages the authoring of custom user views. It’s designed with tooling in mind such Class Name Description that integrated development environments (IDEs) can intelligently assist Application Singleton scoped per web application to provide with design. configuration for things like validators, components and converters Code Example ApplicationFactory Creates (if required) and returns Application instances Here we’ll show a simple example of a JSF managed bean whose state is scope to the HTTP request, and is registered to a bean name that may be ApplicationWrapper Application type which may be used by developers to accessed by the view layer. add to an existing ResourceHandler ConfigurableNavigation- Extends NavidationHandler to provide runtime inspection Handler of the NavigationCase which defines the rule base for /** navigation * This class defines a bean to live bound to the HTTP * request scope, and may be accessed by the view layer FacesMessage A single validation message * under the name “hitchhikersGuide”. */ NavigationCase A single navigation case in the navigation rule base import javax.annotation.PostConstruct; import javax.enterprise.context.RequestScoped; import javax.faces.application.ProjectStage; NavigationHandler Handles navigation from a given action and outcome import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; Resource Models a client resource request @RequestScoped ResourceHandler API by which UIComponent and Renderer instances can @ManagedBean(name = “hitchhikersGuide”) reference Resource instances public class HitchhikersGuide { private String ultimateAnswer; ResourceWrapper Simple base implementation of Resource to be extended @ManagedProperty(value = “#{facesContext.application.projectStage}”) by developers looking to add custom behaviors private ProjectStage journeyStage; StateManager Coordinates the process of saving and restoring the view public String getUltimateAnswer() { between client requests return ultimateAnswer; } StateManagerWrapper Base implementation of a StateManager which may be subclasses by developers looking to add custom behaviors public void setUltimateAnswer(String ultimateAnswer) { this.ultimateAnswer = ultimateAnswer; ViewHandler Pluggable point for the render response and restore view } phases of the request lifecycle. public ProjectStage getJourneyStage() { ViewHandlerWrapper Base implementation of a ViewHandler which may be sub- return journeyStage; } classes by developers looking to add custom behaviors. public void setJourneyStage(ProjectStage journeyStage) { this.journeyStage = journeyStage; } ENTERPRISE JAVABEANS 3.1 @PostConstruct public void findUltimateAnswerToUltimateQuestion() { ultimateAnswer = “42”; } } JSR-318 index.xhtml View: Enterprise JavaBeans provide a component model to encapsulate <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” business logic. As such, they provide a few bean types: “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> <html xmlns=”http://www.w3.org/1999/xhtml” • Session Beans xmlns:h=”http://java.sun.com/jsf/html” xmlns:f=”http://java.sun.com/jsf/core”> <head> • Stateless <title>Sample JSF Page</title> </head> • No conversational state between requests <body> <f:view> <h2><h:outputText value=”Test Managed Bean Annotations”/></h2> • Stateful <p><h:outputText value=”hitchhikersGuide.ultimateAnswer = #{hitchhikersGuide.ultimateAnswer}”/></p> <h2><h:outputText value=”Test Project Stage”/></h2> • Same bean instance used to service each client/session <p><h:outputText value=”project stage = #{hitchhikersGuide. journeyStage}”/></p> • Singleton </f:view> </body> </html> • One shared bean instance for all users • Message-Driven Public API from javax.faces.bean: • Event Listener Class Name Description • JCA endpoint ApplicationScoped Denotes a ManagedBean is to be in application scope • Asynchronous CustomScoped Denotes a ManagedBean is to be in a custom-de- • Entity fined scope of the specified value ManagedBean Defines a class as a ManagedBean type • Integration point w/ Java Persistence DZone, Inc. | www.dzone.com
  • 6. 5 Java Enterprise Edition 6 Code Example TransactionManage- Configures transactional management for a Session or ment Message-Driven Bean (container or bean provided) It’s simple to define an EJB capable of greeting a user. /** * Stateless Session EJB JAVA PERSISTENCE 2.0 */ @Stateless // Defines a Stateless Session Bean @LocalBean // No-interface view public class GreeterBean { @Override JSR-317 public String greet(String name) { return “Hi, “ + name + “!”; } Most enterprise applications will need to deal with persistent data, } and interaction with relational databases can be a tedious and difficult endeavor. The Java Persistence specification aims to provide an object view of backend storage in a transactionally aware manner. By dealing Other components, such as Servlets, may now inject a proxy to the above with POJOs, JPA enables developers to perform database operations EJB: without the need for manually tuning SQL. @EJB private GreeterBean greeterEjb; Code Example Public API Annotation Selection from javax.ejb: A JPA entity is simply a POJO with some annotations to provide additional Class Name Description mapping metadata. For instance: AccessTimeout Designates the amount of time a concurrent method @Entity should block before timing out public class SimpleEmployee { @Id @Auto ActivationConfig- Used to configure Message-Driven Beans private Long id; private String name; Property public Long getId(){ return id; } AfterBegin Defines a Tx callback method for the “after begin” public void setId(final Long id) { this.id = id; } public String getName() { return name; } event public void setName(final String name) { this.name = name; } } AfterCompletion Defines a Tx callback method for the “after completion” event ApplicationException Defines a user exception which should not be wrapped Now a managed component such as an EJB or CDI bean can interact with the database through our entity by associating it with an EntityManager. Asynchronous Defines methods to be executed asynchronously. @PersistenceContext private EntityManager em; BeforeCompletion Defines a Tx callback method for the “before completion” event public void createUser(){ final SimpleEmployee andrew = new SimpleEmployee(); ConcurrencyManage- Configures the concurrency management mode for a single- andrew.setId(100L); ment ton session bean andrew.setName(“Andrew Lee Rubinger”); em.persist(andrew); // Store in the DB DependsOn Designates initialization order for Singleton Session Beans // Now any state changes done to this managed object will be // reflected in the database when the Tx completes } EJB Defines an injection point and dependency upon an EJB component EJBs Plural injection point and dependency for EJB components, to be applied at the class-level Public API Annotation Selection from javax.persistence: Local Defines a local business interface view Class Name Description LocalBean Defines a no-interface view Basic Describes mapping for a database column Lock Defines a concurrency lock for Singleton Session Beans using container-managed concurrency Column Specifies column mapping for a persistent property MessageDriven Defines a Message-Driven Bean DiscriminatorCol- Notes the discriminator column used for SINGLE_TABLE PostActivate Defines an event callback after a Stateful Session Bean has umn and JOINED inheritance strategies been activated PrePassivate Defines an event callback before a Stateful Session Bean is to DiscriminatorValue Specifies the value of the discriminator column for entities of this be passivated type Remote Defines a remote business interface view ElementCollection Defines a collection of instances Remove Defines a business method that should trigger the removal of a Stateful Session Bean instance (i.e., destroy the session) Embeddable Defines a class whose instances are stored as part of the owning entity Schedule Defines a new timer to be created with a specified schedule Schedules Plural of Schedule Embedded Specifies a persistent property whose value is an instance of an embeddable class Singleton Defines a Singleton Session Bean Startup Denotes that a Singleton Session Bean should eagerly load EmbeddedId Denotes composite primary key of an embeddable class Stateful Defines a Stateful Session Bean Entity Defines a POJO as a persistent entity StatefulTimeout Defines the amount of idle time before a Stateful Session is eligible for removal EntityListeners Specifies callback listeners Stateless Defines a Stateless Session Bean Enumerated Specifies that a persistent property should be persisted as an Timeout Defines a timer expiration method enumeration TransactionAttribute Configures the transactional context under which business methods should execute DZone, Inc. | www.dzone.com