<h1>GlassFish v3 Application Development Guide Document Plan</h1>

People and Roles

Name Role Location Time Zone Email
June Parks Document Owner SCA16 1724 US Pacific junesm@dev.java.net
  Additional Writers     java.netID@dev.java.net
Julie Bettis Editor     java.netID@dev.java.net
See Reviewers Software Engineers     java.netID@dev.java.net
See Reviewers QA Engineers     java.netID@dev.java.net

Audience

The Application Development Guide (formerly Developer's Guide) is for application developers.

Purpose and Description

The Application Development Guide describes how to create and run Java^TM^ Platform, Enterprise Edition (Java EE platform) applications that follow the open Java standards model for Java EE components and APIs in the Sun Java System Application Server environment. Topics include developer tools, security, and debugging. This book is intended for use by software developers who create, assemble, and deploy Java EE applications using GlassFish servers and software.

For Technology Preview 2 (TP2) and Prelude, this book only discussed topics related to web modules and JDBC.

Statement of Work

This section describes in detail for each milestone the work that is needed on the document, such as changes, addition of new material, relocation of existing material, and removal of existing material. Work might result from new features, changes to existing features, bug fixes, RFEs, and editorial enhancements.

Documentation Impact:

  • None
  • Minor
  • Moderate
  • Major
  • New

TP2 Statement of Work

For TP2, 10 of the 20 chapters were suppressed because they were not relevant to the small scope of TP2.

Section Documentation Impact Description of Change
Chapter 1 Setting Up a Development Environment Minor Suppress info not relevant to TP2
Chapter 2 Class Loaders Moderate Change class loading for OSGi
Chapter 3 Debugging Applications Minor Suppress info not relevant to TP2
Chapter 4 Securing Applications Minor Suppress info not relevant to TP2
Chapter 5 Using the Java Persistence API Moderate Change the provider to EclipseLink
Chapter 6 Developing Web Applications Moderate Add information on Comet
Chapter 7 Using Enterprise JavaBeans Technology Moderate Add EJB 3.1 info
Chapter 8 Using the JDBC API for Database Access Minor Suppress info not relevant to TP2
Chapter 9 Using the Transaction Service Minor Suppress info not relevant to TP2
Chapter 10 Using the Java Naming and Directory Interface Minor Suppress info not relevant to TP2

Prelude Statement of Work

For Prelude, 9 of the 20 chapters were suppressed because they were not relevant to the small scope of Prelude.

Section Documentation Impact Description of Change
Chapter 1 Setting Up a Development Environment Minor Suppress info not relevant to Prelude
Chapter 2 Class Loaders Moderate Change class loading for OSGi
Chapter 3 Debugging Applications Minor Suppress info not relevant to Prelude
Chapter 4 Securing Applications Minor Suppress info not relevant to Prelude
Chapter 5 Developing Web Services Minor Suppress info not relevant to Prelude
Chapter 6 Using the Java Persistence API Moderate Change the provider to EclipseLink
Chapter 7 Developing Web Applications Moderate Add Bayeux, Groovy/Grails, SSI, CGI, PHP, Scala/Lift
Chapter 8 Using Enterprise JavaBeans Technology Moderate Add EJB 3.1 info
Chapter 9 Using the JDBC API for Database Access Minor Add statement timeout & connection unwrap
Chapter 10 Using the Transaction Service Minor Suppress info not relevant to Prelude
Chapter 11 Using the Java Naming and Directory Interface Minor Suppress info not relevant to Prelude

FCS Statement of Work

For FCS, all of the GFv2 chapters will be restored except the MBean and AMX chapters. Scripting info will be moved from the Web Applications chapter into its own book, which Devika owns.

Chapter Documentation Impact Description of Change
Chapter 1 Setting Up a Development Environment Minor Version and bundling updates
Chapter 2 Class Loaders Minor Updates for components not in Prelude
Chapter 3 Using Ant with Enterprise Server Minor GFv2 functionality minus asant
Chapter 4 Debugging Applications None Prelude functionality
Chapter 5 Securing Applications Moderate Add Ron's blog "Adding Authentication Mechanisms to the Servlet Container"
Chapter 6 Developing Web Services Minor Java EE 6 & Metro 2.0
Chapter 7 Using the Java Persistence API Minor Possible updates from Prelude
Chapter 8 Developing Web Applications Minor Possible updates from Prelude, some content moved to the Administration Guide and the Scripting Framework Guide.
Chapter 9 Using Enterprise JavaBeans Technology Minor EJB 3.1
Chapter 10 Using Container-Managed Persistence None GFv2 functionality
Chapter 11 Developing Java Clients Moderate New GFv3 features in spec
Chapter 12 Developing Connectors Moderate New GFv3 features in spec
Chapter 13 Developing Lifecycle Listeners Minor A few small changes from GFv2
Chapter 14 Using the JDBC API for Database Access Moderate New GFv3 features in spec
Chapter 15 Using the Transaction Service Minor Possible updates from Prelude
Chapter 16 Using the Java Naming and Directory Interface Moderate Custom Resource Factories
Chapter 17 Using the Java Message Service Minor GFv2 functionality, possible updates
Chapter 18 Using the JavaMail API None GFv2 functionality

Overall Content Outline

  1. Setting Up a Development Environment
    • Installing and Preparing the Server for Development
    • Using the Update Center
    • Development Tools
      • The asadmin Command
      • The Admin Console
      • Ant Tasks
      • The NetBeans IDE
      • The Eclipse IDE
      • The Migration Tool
      • Debugging Tools
      • Profiling Tools
    • Sample Applications
  2. Class Loaders
    • The Class Loader Hierarchy
    • Delegation
    • Using the Java Optional Package Mechanism
    • Using the Endorsed Standards Override Mechanism
    • Class Loader Universes
    • Application-Specific Class Loading
    • Circumventing Class Loader Isolation
      • Using the Application Server Parent Class Loader
      • Sharing Libraries Across a Cluster
      • Packaging the Client JAR for One Application in Another Application
  3. Using Ant with Enterprise Server
    • Enterprise Server Ant Tasks
      • The sun-appserv-deploy Task
      • The sun-appserv-undeploy Task
      • The sun-appserv-instance Task
      • The sun-appserv-component Task
      • The sun-appserv-admin Task
      • The sun-appserv-jspc Task
      • The sun-appserv-update Task
      • The wsgen Task
      • The wsimport Task
    • Reusable Subelements
      • The server Subelement
      • The component Subelement
      • The fileset Subelement
  4. Debugging Applications
    • Enabling Debugging
    • JPDA Options
    • Generating a Stack Trace for Debugging
    • Application Client Debugging
    • Sun GlassFish Message Queue Debugging
    • Enabling Verbose Mode
    • Application Server Logging
    • Profiling Tools
      • The NetBeans Profiler
      • The HPROF Profiler
      • The JProbe Profiler
  5. Securing Applications
    • Security Goals
    • Application Server Specific Security Features
    • Container Security
      • Declarative Security
      • Programmatic Security
    • Roles, Principals, and Principal to Role Mapping
    • Realm Configuration
      • Supported Realms
      • How to Configure a Realm
      • How to Set a Realm for an Application or Module
      • Creating a Custom Realm
    • JACC Support
    • Pluggable Audit Module Support
      • Configuring an Audit Module
      • The AuditModule Class
    • The server.policy File
      • Default Permissions
      • Changing Permissions for an Application
      • Enabling and Disabling the Security Manager
    • Configuring Message Security for Web Services
      • Message Security Providers
      • Message Security Responsibilities
      • Application-Specific Message Protection
      • Understanding and Running the Sample Application
    • Programmatic Login
      • Programmatic Login Precautions
      • Granting Programmatic Login Permission
      • The ProgrammaticLogin Class
    • User Authentication for Single Sign-on
    • Adding Authentication Mechanisms to the Servlet Container
      • The Enterprise Server and JSR 196
      • Writing a Server Authentication Module
      • Sample Server Authentication Module
      • Compiling and Installing a Server Authentication Module
      • Configuring a Server Authentication Module
      • Binding a Server Authentication Module to Your Application
  6. Developing Web Services
    • Creating Portable Web Service Artifacts
    • Deploying a Web Service
    • The Web Service URI, WSDL File, and Test Page
  7. Using the Java Persistence API
    • Specifying the Database
    • Additional Database Properties
    • Configuring the Cache
    • Setting the Logging Level
    • Using Lazy Loading
    • Primary Key Generation Defaults
    • Automatic Schema Generation
      • Annotations
      • Supported Data Types
      • Generation Options
    • Query Hints
    • Changing the Persistence Provider
    • Database Restrictions and Optimizations
      • Extended Persistence Context Failover
      • Using @OrderBy with a Shared Session Cache
      • Using BLOB or CLOB Types with the Inet Oraxo JDBC Driver
      • Database Case Sensitivity
      • Sybase Finder Limitation
      • MySQL Database Restrictions
  8. Developing Web Applications
    • Using Servlets
      • Caching Servlet Results
      • About the Servlet Engine
    • Using JavaServer Pages
      • JSP Tag Libraries and Standard Portable Tags
      • JSP Caching
      • Options for Compiling JSP Files
    • Creating and Managing Sessions
      • Configuring Sessions
      • Session Managers
    • Advanced Web Application Features
      • Internationalization Issues
      • Virtual Server Properties
      • Class Loader Delegation
      • Using the default-web.xml File
      • Configuring Logging and Monitoring in the Web Container
      • Header Management
      • Configuring Valves and Catalina Listeners
      • Alternate Document Roots
      • Using a context.xml File
      • Enabling WebDav
      • Using SSI
      • Using CGI
  9. Using Enterprise JavaBeans Technology
    • Summary of EJB 3.1 Changes
    • Value Added Features
      • Read-Only Beans
      • The pass-by-reference Element
      • Pooling and Caching
      • Bean-Level Container-Managed Transaction Timeouts
      • Priority Based Scheduling of Remote Bean Invocations
      • Immediate Flushing
    • EJB Timer Service
    • Using Session Beans
      • About the Session Bean Containers
      • Session Bean Restrictions and Optimizations
    • Using Read-Only Beans
      • Read-Only Bean Characteristics and Life Cycle
      • Read-Only Bean Good Practices
      • Refreshing Read-Only Beans
      • Deploying Read-Only Beans
    • Using Message-Driven Beans
      • Message-Driven Bean Configuration
      • Message-Driven Bean Restrictions and Optimizations
    • Handling Transactions With Enterprise Beans
      • Flat Transactions
      • Global and Local Transactions
      • Commit Options
      • Administration and Monitoring
  10. Using Container-Managed Persistence
    • Communications Server Support for CMP
    • CMP Mapping
      • Mapping Capabilities
      • The Mapping Deployment Descriptor File
      • Mapping Considerations
    • Automatic Schema Generation for CMP
      • Supported Data Types for CMP
      • Generation Options for CMP
    • Schema Capture
      • Automatic Database Schema Capture
      • Using the capture-schema Utility
    • Configuring the CMP Resource
    • Performance-Related Features
      • Version Column Consistency Checking
      • Relationship Prefetching
      • Read-Only Beans
    • Default Fetch Group Flags
    • Configuring Queries for 1.1 Finders
      • About JDOQL Queries
      • Query Filter Expression
      • Query Parameters
      • Query Variables
      • JDOQL Examples
    • CMP Restrictions and Optimizations
      • Disabling ORDER BY Validation
      • Setting the Heap Size onDB2
      • Eager Loading of Field State
      • Restrictions on Remote Interfaces
      • PostgreSQL Case Insensitivity
      • No Support for lock-when-loaded on Sybase
      • Sybase Finder Limitation
      • Date and Time Fields
      • Set RECURSIVE_TRIGGERS to false on MSSQL
      • MySQL Database Restrictions
  11. Developing Java Clients
    • Introducing the Application Client Container
      • ACC Security
      • ACC Naming
      • ACC Annotation
      • Java Web Start
      • Application Client JAR File
    • Developing Clients Using the ACC
      • To Access an EJB Component From an Application Client
      • To Access a JMS Resource From an Application Client
      • Using Java Web Start
        • Enabling and Disabling Java Web Start
        • Downloading and Launching an Application Client
        • The Application Client URL
        • Signing JAR Files Used in Java Web Start
        • Error Handling
        • Vendor Icon, Splash Screen, and Text
      • Using the Embeddable ACC
      • Running an Application Client Using the appclient Script
      • Using the package-appclient Script
      • The client.policy File
      • Using RMI/IIOP Over SSL
      • Connecting to a Remote EJB Module Through a Firewall
      • Using JavaFX Code
      • Specifying a Splash Screen
  12. Developing Connectors
    • Connector Support in the Communications Server
      • Connector Architecture for JMS and JDBC
      • Connector Configuration
    • Advanced Connector Configuration Options
      • Thread Associations
      • Security Maps
      • Work Security Maps
      • Overriding Configuration Properties
      • Testing a Connector Connection Pool
      • Flushing a Connector Connection Pool
      • Handling Invalid Connections
      • Setting the Shutdown Timeout
      • Using Last Agent Optimization of Transactions
      • Disabling Pooling for a Connection
      • Application-Scoped Connectors
    • Inbound Communication Support
    • Outbound Communication Support
    • Configuring a Message Driven Bean to Use a Resource Adapter
  13. Developing Lifecycle Listeners
    • Server Life Cycle Events
    • The LifecycleListener Interface
    • The LifecycleEvent Class
    • The Server Lifecycle Event Context
    • Deploying a Lifecycle Module
    • Considerations for LifecycleModules
  14. Using the JDBC API for Database Access
    • General Steps for Creating a JDBC Resource
      • Integrating the JDBC Driver
        • Supported Database Drivers
        • Making the JDBC Driver JAR Files Accessible
        • Detecting Installed Drivers
      • Creating a JDBC Connection Pool
      • Testing a JDBC Connection Pool
      • Flushing a JDBC Connection Pool
      • Creating a JDBC Resource
    • Creating Applications That Use the JDBC API
      • Statements
        • Using an Initialization Statement
        • Setting a Statement Timeout
        • Statement Caching
        • Statement Tracing
      • Connections
        • Disabling Pooling for a Connection
        • Associating Connections with Threads
        • Custom Connection Validation
        • Sharing Connections
        • Marking Bad Connections
        • Handling Invalid Connections
      • Connection Wrapping
        • Wrapping Connections
        • Obtaining a Physical Connection From a Wrapped Connection
        • Using the Connection.unwrap() Method
      • Transactions
        • Using Non-Transactional Connections
        • Using JDBC Transaction Isolation Levels
      • Other Features
        • Allowing Non-Component Callers
        • Using Application-Scoped Databases
    • Restrictions and Optimizations
      • Disabling Stored Procedure Creation on Sybase
  15. Using the Transaction Service
    • Transaction Resource Managers
    • Transaction Scope
    • Distributed Transaction Recovery
    • Configuring the Transaction Service
    • The Transaction Manager, the Transaction Synchronization Registry, and UserTransaction
    • Transaction Logging
    • Storing Transaction Logs in a Database
    • Recovery Workarounds
  16. Using the Java Naming and Directory Interface
    • Accessing the Naming Context
      • Global JNDI Names
      • Accessing EJB Components Using the CosNaming Naming Context
      • Accessing EJB Components in a Remote Application Server
      • Naming Environment for Lifecycle Modules
    • Configuring Resources
      • External JNDI Resources
      • Custom Resources
      • Built-In Custom Resource Factories
    • Using a Custom jndi.properties File
    • Mapping References
  17. Using the Java Message Service
    • The JMS Provider
    • Message Queue Resource Adapter
    • Generic Resource Adapter
    • Administration of the JMS Service
      • Configuring the JMS Service
      • The Default JMS Host
      • Creating JMS Hosts
      • Checking Whether the JMS Provider Is Running
      • Creating Physical Destinations
      • Creating JMS Resources: Destinations and Connection Factories
    • Restarting the JMS Client After JMS Configuration
    • JMS Connection Features
      • Connection Pooling
      • Connection Failover
    • Transactions and Non-Persistent Messages
    • Authentication With ConnectionFactory
    • Message Queue varhome Directory
    • Delivering SOAP Messages Using the JMS API
      • To Send SOAP Messages Using the JMS API
      • To Receive SOAP Messages Using the JMS API
  18. Using the JavaMail API
    • Introducing JavaMail
    • Creating a JavaMail Session
    • JavaMail Session Properties
    • Looking Up a JavaMail Session
    • Sending and Reading Messages Using JavaMail
      • To Send a Message Using JavaMail
      • To Read a Message Using JavaMail

Reviewers

The review schedule for this document is provided in the following table.

Review Milestone Start Date End Date
TP2 Draft 4/23/08 4/30/08
TP2 Draft 2 5/16/08 5/28/08
Prelude Draft 10/03/08 10/10/08
Preview Draft 5/18/09 5/20/09
FishCAT Draft 9/08/09 9/22/09
Final Version 11/09/09 11/13/09

The reviewers of this document are listed in the following table.

Chapter Writers Reviewers Preview Done FishCAT Done Final Done
Chapter 1 Setting Up a Development Environment June Parks Snjezana Sevo-Zenzerovic Ludovic Champenois 5/20/09    
Chapter 2 Class Loaders June Parks Sanjeeb Sahoo 5/20/09    
Chapter 3 Using Ant with Enterprise Server June Parks Lloyd Chambers Kedar Mhaswade Sankar Neelakandan 5/20/09    
Chapter 4 Debugging Applications June Parks Ludovic Champenois 5/20/09    
Chapter 5 Securing Applications June Parks VB Kumar Jayanti K Venugopal Ron Monzillo Jagadesh Munta QA 5/20/09    
Chapter 6 Developing Web Services June Parks Bhakti Mehta Harold Carr Anand Mishra QA Eric Jendrock 5/20/09    
Chapter 7 Using the Java Persistence API June Parks Mitesh Meswani Ming Zhang QA Sherry Shen QA Ian Evans 5/20/09    
Chapter 8 Developing Web Applications June Parks Rajiv Mordani Jean-Francois Arcand Jan Luehe Oleksiy Stashok Dhiru Pandey Shaline Sudipa Bhattacharya QA Devika Gollapudi 5/20/09    
Chapter 9 Using Enterprise JavaBeans Technology June Parks Mahesh Kannan Marina Vatkina Ian Evans 5/20/09    
Chapter 10 Using Container-Managed Persistence June Parks Mitesh Meswani Ming Zhang QA Sherry Shen QA 5/20/09    
Chapter 11 Developing Java Clients June Parks Tim Quinn Hong Zhang Ken Saks 5/20/09    
Chapter 12 Developing Connectors June Parks Jagadish Prasad Ramu Shalini Muthukrishnan Smitha Prabhu QA Chinmayee Srivathsa 5/20/09    
Chapter 13 Developing Lifecycle Listeners June Parks Hong Zhang N/A    
Chapter 14 Using the JDBC API for Database Access June Parks Jagadish Prasad Ramu Shalini Muthukrishnan Smitha Prabhu QA Chinmayee Srivathsa 5/20/09    
Chapter 15 Using the Transaction Service June Parks Marina Vatkina Smitha Prabhu QA 5/20/09    
Chapter 16 Using the Java Naming and Directory Interface June Parks Jagadish Ramu Shalini Muthukrishnan Mahesh Kannan Sanjeeb Sahoo Smitha Prabhu QA Chinmayee Srivathsa 5/20/09    
Chapter 17 Using the Java Message Service June Parks Satish Kumar 5/20/09    
Chapter 18 Using the JavaMail API June Parks Sanjeeb Sahoo Mahesh Kannan 5/20/09    

Delivery Methods

The Application Development Guide will be published on the docs.sun.com^SM^ site in PDF and HTML formats.

Related Information

Latest draft (PDF): Application Development Guide Comments Page
Previous Preview version (HTML): Developer's Guide

Email aliases:

  • [admin@glassfish.java.net]
  • [users@glassfish.java.net]
  • [docs@glassfish.java.net]