You are previewing Professional Oracle® WebLogic Server.
O'Reilly logo
Professional Oracle® WebLogic Server

Book Description

Authoritative guide to Oracle WebLogic Server-from Oracle insiders

If you're an experienced Java developer who wants to expand your skills, Professional Oracle WebLogic Server is the perfect guide for you. This book is written by a top-notch author team that that includes one of the lead architects from Oracle's Fusion Middleware Development Architects team.

Follow their best practices, workarounds, and sound techniques and confidently develop even the most mission-critical applications with WebLogic Server.

This book fully covers WebLogic Server 11g, including the new features of both JEE 5 and WebLogic Server, as well as JEE 5 annotations, Spring, JPA, JAX-WS, JMS Store-And-Forward, SAML support, and the WLST administrative scripting tool.

This book is the authoritative guide to

  • Choosing a Web application architecture

  • Best practices for development and production environments

  • Designing an Java EE application

  • Building Enterprise JavaBeans in WebLogic Server

  • Building an EJB application

  • Packaging and deploying WebLogic web applications

  • Developing and deploying web services

  • Using WebLogic JMS

  • Using WebLogic security

  • Administering and deploying applications in WebLogic Server

  • Optimizing WebLogic Server performance

Table of Contents

  1. Copyright
  2. About the Authors
  3. Credits
  4. Acknowledgments
  5. Introduction
    1. Who This Book Is For
    2. What This Book Covers
    3. How This Book Is Structured
    4. What You Need to Use This Book
    5. Source Code
    6. Errata
    7. Online Appendix
    8. p2p.wrox.com
  6. 1. Building Web Applications in WebLogic
    1. 1.1. Java Servlets and JSP Key Concepts
      1. 1.1.1. Characteristics of Servlets
        1. 1.1.1.1. Servlets Use the Request/Response Model
        2. 1.1.1.2. Servlets Are Pure Java Classes
        3. 1.1.1.3. Servlets Must be Registered in the Application
        4. 1.1.1.4. Servlets Have a Life Cycle
        5. 1.1.1.5. Servlets Allow Multiple Parallel Requests
        6. 1.1.1.6. Servlets May Access Request Data
        7. 1.1.1.7. Servlets Use Session Tracking
      2. 1.1.2. Characteristics of JavaServer Pages
        1. 1.1.2.1. JSP Is a Scripting Technology
        2. 1.1.2.2. JSP Pages Are Converted to Servlets
        3. 1.1.2.3. Many Tags and Scripting Elements Are Available
        4. 1.1.2.4. All Servlet Capabilities Are Available
        5. 1.1.2.5. JSP Response Is Buffered
        6. 1.1.2.6. JSP Pages Have Unique Capabilities
    2. 1.2. Web Application Best Practices
      1. 1.2.1. Ensure Proper Error Handling
      2. 1.2.2. Use JSTL Tags to Reduce Scriptlet Code
        1. 1.2.2.1. Calling Custom Tags in JSP Pages
        2. 1.2.2.2. Using Expression Language in JSTL Calls
        3. 1.2.2.3. JSTL Contains Five Tag Libraries
      3. 1.2.3. Use Custom Tags for Selected Behaviors
        1. 1.2.3.1. Custom Tag Key Concepts
        2. 1.2.3.2. Custom Tags are Different from Tag Files
        3. 1.2.3.3. Custom Tag Use Is Easy — Development Is Complex
      4. 1.2.4. Use Servlet Filtering for Common Behaviors
        1. 1.2.4.1. Building a Simple SnoopFilter Filter Class
        2. 1.2.4.2. Registering SnoopFilter in the Application
        3. 1.2.4.3. Response Caching Using the CacheFilter
      5. 1.2.5. Creating Excel Files Using Servlets and JSP Pages
      6. 1.2.6. Viewing Generated Servlet Code
    3. 1.3. Chapter Review
  7. 2. Choosing a Web Application Architecture
    1. 2.1. Architecture Key Concepts
      1. 2.1.1. Java EE Application Tiers
      2. 2.1.2. Model-View-Controller Architecture
      3. 2.1.3. Common Java EE Design Patterns
    2. 2.2. Presentation-Tier Architecture Selection
      1. 2.2.1. Presentation-Tier Requirements
        1. 2.2.1.1. Display Requirements
          1. 2.2.1.1.1. Displaying Model Data
          2. 2.2.1.1.2. Displaying Model Data in a Form
          3. 2.2.1.1.3. Displaying a List of Model Objects
          4. 2.2.1.1.4. Presenting Role-Based Views of Data
          5. 2.2.1.1.5. Internationalization
          6. 2.2.1.1.6. Display Flexibility and Maintainability
        2. 2.2.1.2. Form/Update Requirements
          1. 2.2.1.2.1. Client-Side Validation
          2. 2.2.1.2.2. Extracting Form Data
          3. 2.2.1.2.3. Server-Side Validation
          4. 2.2.1.2.4. Displaying Errors
          5. 2.2.1.2.5. Interacting with the Business Tier to Update Model Objects
        3. 2.2.1.3. Navigation Requirements
          1. 2.2.1.3.1. Basic Navigation Definition
          2. 2.2.1.3.2. Outcome-Based Navigation
          3. 2.2.1.3.3. Submission/Bookmark Controls
        4. 2.2.1.4. Building a Presentation-Tier Architecture
      2. 2.2.2. Other Architecture Considerations
    3. 2.3. Candidate Presentation-Tier Architectures
      1. 2.3.1. JSP-Centric Architecture
      2. 2.3.2. Servlet-Centric Architecture: Struts
      3. 2.3.3. Servlet-Centric Architecture: Spring MVC
    4. 2.4. Chapter Review
  8. 3. Designing an Example Java EE Application
    1. 3.1. Application Requirements
    2. 3.2. Business Domain Models
    3. 3.3. Presentation Requirements
    4. 3.4. Web Application Architecture
    5. 3.5. Presentation Approach
      1. 3.5.1. Self-Assembly
      2. 3.5.2. Master Page Assembly
      3. 3.5.3. External View Assembly with Tiles Framework
    6. 3.6. Business-Tier Interfaces
      1. 3.6.1. Controllers Call Business Services
      2. 3.6.2. Controllers Populate Forms for JSPs
      3. 3.6.3. Updates Require Explicit Service Calls
      4. 3.6.4. Relationships in Presentation Components
    7. 3.7. Chapter Review
  9. 4. Building an Example Web Application
    1. 4.1. Overview of Application Components
    2. 4.2. Constructing the Application Skeleton
    3. 4.3. Constructing the User Site Components
      1. 4.3.1. Reservation Information Components
      2. 4.3.2. Core Reservation Process Components
        1. 4.3.2.1. Defining Navigation Paths
        2. 4.3.2.2. Choosing Spring MVC Components
        3. 4.3.2.3. Choosing Basic Controller Components
        4. 4.3.2.4. Choosing Form-Processing Controller Components
        5. 4.3.2.5. Choosing Handler and Resolver Components
        6. 4.3.2.6. Property Search/Selection Pages
        7. 4.3.2.7. Date Selection Page
        8. 4.3.2.8. Availability Display and Room Type Selection Page
        9. 4.3.2.9. Reservation Creation Process
      3. 4.3.3. Targeted Offers Components
    4. 4.4. Construction of Administration Site Components
      1. 4.4.1. Authentication/Authorization Components
      2. 4.4.2. Property Maintenance Components
        1. 4.4.2.1. Property Main Form
        2. 4.4.2.2. Rate Maintenance Pages
        3. 4.4.2.3. Availability Maintenance Pages
        4. 4.4.2.4. Administration Controller Form View Overrides
    5. 4.5. Chapter Review
  10. 5. Packaging and Deploying WebLogic Web Applications
    1. 5.1. Packaging Web Applications
      1. 5.1.1. Web Application Directory Structure
        1. 5.1.1.1. Internal Components
      2. 5.1.2. Web Application Descriptor Files
        1. 5.1.2.1. Standard web.xml Descriptor File
        2. 5.1.2.2. weblogic.xml Descriptor File
      3. 5.1.3. Precompiling JSP Components
      4. 5.1.4. Creating an Exploded Web Application
      5. 5.1.5. Creating a Web Application Archive File
    2. 5.2. Deploying Web Applications
      1. 5.2.1. Automatic Deployment
      2. 5.2.2. WebLogic Deployer Utility and Ant Task
      3. 5.2.3. WebLogic Console Deployment
      4. 5.2.4. Creating Required Users and Groups for bigrez.com
    3. 5.3. Chapter Review
  11. 6. Building Enterprise JavaBeans in WebLogic Server
    1. 6.1. EJB Technology Overview
    2. 6.2. EJB 3.0
      1. 6.2.1. The Spring Framework
    3. 6.3. EJB Component Types
      1. 6.3.1. Stateless Session Beans
      2. 6.3.2. Stateful Session Beans
      3. 6.3.3. Message-Driven Beans
      4. 6.3.4. Interceptors
    4. 6.4. The Java Persistence API
      1. 6.4.1. JPA History
        1. 6.4.1.1. OpenJPA and Kodo
      2. 6.4.2. JPA Concepts
      3. 6.4.3. A JPA Sample
        1. 6.4.3.1. Generated Values
        2. 6.4.3.2. Using JPA Entities in a Java SE Environment
        3. 6.4.3.3. Persistent Class Enhancement
        4. 6.4.3.4. Relationships
        5. 6.4.3.5. Cascading Operations
        6. 6.4.3.6. JPQL Queries
        7. 6.4.3.7. JPQL Bulk Updates
        8. 6.4.3.8. Embedded Entity Classes
        9. 6.4.3.9. Eager and Lazy Fetching
        10. 6.4.3.10. Optimistic Locking and Version Fields
        11. 6.4.3.11. Explicit Locking
        12. 6.4.3.12. Writing a Web Layer Suited to Optimistic Locking
        13. 6.4.3.13. Inheritance
      4. 6.4.4. Applying JPA
    5. 6.5. WebLogic Server EJB Container
      1. 6.5.1. EJB Container Basics
      2. 6.5.2. EJB Lifecycle in WebLogic Server
    6. 6.6. General WebLogic Server EJB Features
      1. 6.6.1. EJB Deployment/Redeployment
      2. 6.6.2. Dynamic EJB Compilation
      3. 6.6.3. EJB Remote Business Interfaces and JNDI
      4. 6.6.4. References between EJBs
        1. 6.6.4.1. Referring to EJB Components in the Same Application
        2. 6.6.4.2. Referring to External EJB Components
        3. 6.6.4.3. Calling Components by Reference
        4. 6.6.4.4. Transaction Isolation
    7. 6.7. Session Bean Features
      1. 6.7.1. Stateless Session EJB Pooling
      2. 6.7.2. Stateful Session EJB Cache Management
      3. 6.7.3. In-Memory Replication for Stateful Session EJBs
      4. 6.7.4. Handles to Session Beans
      5. 6.7.5. Idempotent Methods
    8. 6.8. Message-Driven Bean Features
    9. 6.9. OpenJPA and Kodo Features
      1. 6.9.1. The Kodo Deployment Descriptor
      2. 6.9.2. Fetch Groups
      3. 6.9.3. Eager Fetching
      4. 6.9.4. Optimistic Locking Version Strategies
        1. 6.9.4.1. Support for Other Version Field Types
        2. 6.9.4.2. State Comparison Version Strategy
        3. 6.9.4.3. Lock Groups
      5. 6.9.5. Large Result Sets
        1. 6.9.5.1. Queries with Large Result Sets
        2. 6.9.5.2. Large Result Set Proxies
      6. 6.9.6. Second-level Caching
        1. 6.9.6.1. Tuning Data Caches
        2. 6.9.6.2. Configuring a Data Cache for Multiple JVMs
        3. 6.9.6.3. Using Oracle Coherence as a Second-Level Cache
      7. 6.9.7. Controlling Flush Behavior
      8. 6.9.8. Managed Inverses
      9. 6.9.9. Mixed Inheritance Strategies
      10. 6.9.10. Prepared Statement Caching
    10. 6.10. Deployment Descriptors or Annotations?
      1. 6.10.1. Deployment Plans
      2. 6.10.2. Annotations, Descriptors, Plans, and Dependency Injection
    11. 6.11. Chapter Review
  12. 7. Building an Example EJB Application
    1. 7.1. Business Layer Requirements
      1. 7.1.1. Business Logic Requirements
        1. 7.1.1.1. Encapsulation and the Business Layer Interface
        2. 7.1.1.2. Transaction Management and Security
        3. 7.1.1.3. The Domain Model and Data Transfer Objects
        4. 7.1.1.4. Validation
      2. 7.1.2. Object-Relational Mapping Requirements
        1. 7.1.2.1. Mapping Simple Classes
        2. 7.1.2.2. Mapping Associations
        3. 7.1.2.3. Mapping Inheritance
      3. 7.1.3. Data Access Requirements
      4. 7.1.4. Other Business Layer Requirements
      5. 7.1.5. Review of Business Layer Requirements
    2. 7.2. Business Layer Architecture Options
      1. 7.2.1. SLSBs and the Session Façade Requirements
      2. 7.2.2. Stateless Session EJBs with JDBC
      3. 7.2.3. Stateless Session EJBs with EJB 2.1 CMP Entity Beans
      4. 7.2.4. Stateless Session EJBs with JPA
    3. 7.3. The bigrez.com Implementation
      1. 7.3.1. Database Schema
      2. 7.3.2. Domain Model
        1. 7.3.2.1. Generating the JPA Classes from the Schema
        2. 7.3.2.2. Generic JPA Functionality
        3. 7.3.2.3. Changes to the bigrez.com Schema
      3. 7.3.3. Services
        1. 7.3.3.1. Session Façade
        2. 7.3.3.2. Service Implementation
        3. 7.3.3.3. Email Integration
        4. 7.3.3.4. Logging Interceptor
      4. 7.3.4. Unit Tests
      5. 7.3.5. Adding Optimistic Locking
    4. 7.4. Using TopLink instead of Kodo
      1. 7.4.1. Why Would You Want to Use TopLink?
      2. 7.4.2. Changes to bigrez.com to use TopLink
        1. 7.4.2.1. Change the Persistence Provider
        2. 7.4.2.2. TopLink Enhancement
        3. 7.4.2.3. Running the Unit Tests
        4. 7.4.2.4. Fix Incompatibilities
        5. 7.4.2.5. Test the Integrated Application
        6. 7.4.2.6. Summary
    5. 7.5. Chapter Review
  13. 8. Packaging and Deploying WebLogic Applications
    1. 8.1. Creating an EJB Archive File
      1. 8.1.1. EJB Deployment Descriptors
        1. 8.1.1.1. JNDI Bindings and References to EJBs and Other Resources
        2. 8.1.1.2. Bindings to Logical JMS Message Destinations
        3. 8.1.1.3. Security Settings
        4. 8.1.1.4. Transaction Settings
        5. 8.1.1.5. Free Pool Settings
        6. 8.1.1.6. Stateful Session Bean Cache Settings
        7. 8.1.1.7. Message-Driven Bean Settings
        8. 8.1.1.8. Tuning and Optimization Settings
    2. 8.2. Packaging JPA Persistence Units
    3. 8.3. Enterprise Applications
      1. 8.3.1. Enterprise Application Directory Structure
      2. 8.3.2. Enterprise Application Descriptor Files
        1. 8.3.2.1. Standard application.xml Descriptor File
        2. 8.3.2.2. weblogic-application.xml Descriptor File
      3. 8.3.3. Exploded Deployments
      4. 8.3.4. Bundled Libraries
      5. 8.3.5. Shared Java EE Libraries and Optional Packages
      6. 8.3.6. Other Types of Modules
      7. 8.3.7. Customizing Classloading
    4. 8.4. Packaging bigrez.com
      1. 8.4.1.
        1. 8.4.1.1. The bigrez.com Components
        2. 8.4.1.2. The bigrez.com Projects
        3. 8.4.1.3. Altering bigrez.com to Use a Shared Library
        4. 8.4.1.4. Compiling Production Builds with appc
    5. 8.5. Deploying Applications
      1. 8.5.1. Creating Required Services
      2. 8.5.2. Automatic Deployment and weblogic.Deployer
      3. 8.5.3. WebLogic Console Deployment
    6. 8.6. Chapter Review
  14. 9. Developing and Deploying Web Services
    1. 9.1. Summarizing Web Services Standards
    2. 9.2. Creating Web Services with WebLogic Server
      1. 9.2.1. Web Services Container Architecture
      2. 9.2.2. Developing Web Services for WebLogic Server
        1. 9.2.2.1. Developing Code-First Web Services
        2. 9.2.2.2. Developing WSDL-First Web Services
      3. 9.2.3. Developing Web Service Clients
    3. 9.3. Moving Past the Basics
      1. 9.3.1. Using JAX-RPC
      2. 9.3.2. Understanding Style and Use
      3. 9.3.3. Influencing which Operation to Invoke
      4. 9.3.4. Creating More Dynamic Web Services
      5. 9.3.5. Using Web Service Handlers
      6. 9.3.6. Using SOAP Attachments
      7. 9.3.7. Implementing Stateful Web Services
      8. 9.3.8. Implementing Asynchronous Web Services
        1. 9.3.8.1. Calling Web Services Asynchronously
        2. 9.3.8.2. Creating One-Way Web Services
        3. 9.3.8.3. Returning Multiple Asynchronous Responses
      9. 9.3.9. Customizing Mappings between Java and XML
    4. 9.4. Using Web Services Security
      1. 9.4.1. Defining Security Policies
      2. 9.4.2. Transport-level Security
      3. 9.4.3. Message-level Security
      4. 9.4.4. Web Service Security Configuration
    5. 9.5. Adding Web Services to bigrez.com
    6. 9.6. Chapter Review
  15. 10. Using WebLogic JMS
    1. 10.1. JMS Key Concepts
      1. 10.1.1. Understanding the Messaging Models
      2. 10.1.2. Reviewing the JMS API
        1. 10.1.2.1. Connection Factories
        2. 10.1.2.2. Connections
        3. 10.1.2.3. Destinations
        4. 10.1.2.4. Sessions
        5. 10.1.2.5. Message Producers and Consumers
          1. 10.1.2.5.1. Durable Subscribers
          2. 10.1.2.5.2. Asynchronous Consumers and Transactions
          3. 10.1.2.5.3. Message Selectors
        6. 10.1.2.6. Messages
    2. 10.2. The WebLogic JMS Provider
      1. 10.2.1. Understanding WebLogic JMS Servers
      2. 10.2.2. Clustering WebLogic JMS
        1. 10.2.2.1. Location Transparency
        2. 10.2.2.2. Connection Routing, Load Balancing, and Failover
        3. 10.2.2.3. Distributed Destinations
          1. 10.2.2.3.1. Producing Messages to a Distributed Queue
          2. 10.2.2.3.2. Consuming Messages from a Distributed Queue
          3. 10.2.2.3.3. Producing Messages to a Distributed Topic
          4. 10.2.2.3.4. Consuming Messages from a Distributed Topic
        4. 10.2.2.4. Automatic Failover for JMS Servers
      3. 10.2.3. WebLogic JMS Clients
        1. 10.2.3.1. WebLogic Server Client URLs
      4. 10.2.4. Configuring WebLogic JMS
        1. 10.2.4.1. JMS Modules
        2. 10.2.4.2. Connection Factories
        3. 10.2.4.3. Templates
        4. 10.2.4.4. Destination Keys
        5. 10.2.4.5. Time-to-Deliver Extension
        6. 10.2.4.6. Persistent Stores
          1. 10.2.4.6.1. Configuring Persistent Stores
          2. 10.2.4.6.2. Understanding When Messages are Persisted
        7. 10.2.4.7. Delivery Overrides, Quotas, and Flow Control
          1. 10.2.4.7.1. Overriding Message Delivery Characteristics
          2. 10.2.4.7.2. Understanding Quotas
          3. 10.2.4.7.3. Understanding Message Paging
          4. 10.2.4.7.4. Understanding Flow Control
    3. 10.3. WebLogic JMS Application Design
      1. 10.3.1. Choosing a Destination Type
      2. 10.3.2. Locating Destinations
      3. 10.3.3. Choosing the Appropriate Message Type
      4. 10.3.4. Compressing Large Messages
      5. 10.3.5. Selecting a Message Acknowledgment Strategy
      6. 10.3.6. Designing Message Selectors
      7. 10.3.7. Choosing a Message Expiration Strategy
        1. 10.3.7.1. Active Expiration
        2. 10.3.7.2. Expiration Policies
      8. 10.3.8. Handling Poison Messages
        1. 10.3.8.1. Redelivery Delay, Redelivery Limit, and Error Destination
        2. 10.3.8.2. Redelivered Flag and Redelivery Count
      9. 10.3.9. Handling Message Ordering Issues
        1. 10.3.9.1. Unit-of-Order
          1. 10.3.9.1.1. Using Unit-of-Order with Topics
        2. 10.3.9.2. Unit-of-Work
        3. 10.3.9.3. Path Service and Hash-Based Routing
      10. 10.3.10. Using Transactions
      11. 10.3.11. Using Multicast Sessions
      12. 10.3.12. Handling Request/Reply Style Message Exchange
    4. 10.4. WebLogic JMS Application Programming
      1. 10.4.1. Using WebLogic JMS with Servlets and EJBs
      2. 10.4.2. Consuming Asynchronous Messages on the Server
        1. 10.4.2.1. Message-Driven Beans
          1. 10.4.2.1.1. Understanding Concurrency
          2. 10.4.2.1.2. Using Transactions
          3. 10.4.2.1.3. Dealing with Durable Subscriptions
          4. 10.4.2.1.4. Connecting to Distributed Destinations
        2. 10.4.2.2. Application Design Considerations
    5. 10.5. External JMS Providers
      1. 10.5.1. Understanding the Messaging Bridge
      2. 10.5.2. Understanding the Store-and-Forward Service
      3. 10.5.3. Using Message-Driven Beans
      4. 10.5.4. Mapping External JMS Objects to WebLogic JNDI
      5. 10.5.5. Integrating Oracle Advanced Queuing
        1. 10.5.5.1. Integrating AQ with Older WebLogic Server Releases
      6. 10.5.6. Choosing an Integration Strategy
    6. 10.6. Chapter Review
  16. 11. Using WebLogic Security
    1. 11.1. WebLogic Security Overview
      1. 11.1.1. Administration
        1. 11.1.1.1. Domain Level
        2. 11.1.1.2. Server Level
        3. 11.1.1.3. Realm Level
        4. 11.1.1.4. Provider Management Level
    2. 11.2. WebLogic Security Framework
      1. 11.2.1. Embedded LDAP Server
        1. 11.2.1.1. RDBMS Security Store
      2. 11.2.2. Security Realms and Providers
        1. 11.2.2.1. Authentication
        2. 11.2.2.2. Identity Assertion
        3. 11.2.2.3. Authorization, Role Mapping, and Adjudication
        4. 11.2.2.4. Auditing
        5. 11.2.2.5. Credential Mapping
        6. 11.2.2.6. Certification Path
        7. 11.2.2.7. Managing Security Providers
        8. 11.2.2.8. Debugging
    3. 11.3. Using External Security Stores
      1. 11.3.1. Managing External LDAP Authentication
      2. 11.3.2. Managing RDBMS Authentication
    4. 11.4. Setting Up SSL/TLS
      1. 11.4.1. Overview of SSL and X.509 Certificates
      2. 11.4.2. Obtaining X.509 Certificates
      3. 11.4.3. Configuring One-Way SSL
      4. 11.4.4. Configuring Two-Way SSL
      5. 11.4.5. Debugging SSL Problems
    5. 11.5. Writing Security-Aware Java Clients
      1. 11.5.1. Writing Java Clients that Use JAAS
      2. 11.5.2. Writing Java Clients that Use SSL
        1. 11.5.2.1. RMI Clients
        2. 11.5.2.2. Programmatic HTTP Clients
        3. 11.5.2.3. Web Services Clients
        4. 11.5.2.4. Application Authentication
        5. 11.5.2.5. Hostname Verification
        6. 11.5.2.6. Trust Managers
    6. 11.6. Managing Application Security
      1. 11.6.1. Application Security Models
      2. 11.6.2. Setting Up Java EE Application Security
        1. 11.6.2.1. Securing Web Applications
        2. 11.6.2.2. Managing EJB Security
        3. 11.6.2.3. Securing J2EE CA Resource Adapters
        4. 11.6.2.4. Securing Enterprise Applications
      3. 11.6.3. Setting Up WebLogic Server Application Security
        1. 11.6.3.1. Managing Users and Groups
        2. 11.6.3.2. Resources
        3. 11.6.3.3. Working with Roles and Policies
      4. 11.6.4. Booting WebLogic Server
    7. 11.7. Single Sign-On
      1. 11.7.1. Security Assertion Markup Language (SAML)
        1. 11.7.1.1. Overview of SAML
        2. 11.7.1.2. SAML Security Providers
        3. 11.7.1.3. Configuring Federation Services
        4. 11.7.1.4. Managing SSO Partners
        5. 11.7.1.5. Managing Web Services Partners
        6. 11.7.1.6. Identity Provider Partners
        7. 11.7.1.7. Service Provider Partners
        8. 11.7.1.8. Debugging SAML
      2. 11.7.2. Setting Up Cross Domain Security and Single Sign-On
        1. 11.7.2.1. Trust Between Domains
        2. 11.7.2.2. SSO from Microsoft Windows Desktops
      3. 11.7.3. Custom Authentication Providers
        1. 11.7.3.1. Servlet Authentication Filter
    8. 11.8. Chapter Review
  17. 12. Administering and Deploying Applications in WebLogic Server
    1. 12.1. WebLogic Architecture Key Concepts
      1. 12.1.1. Domain Architecture
      2. 12.1.2. WebLogic Server Architecture
        1. 12.1.2.1. Execute Queues, Execute Threads, and Work Managers
        2. 12.1.2.2. Socket Muxer
        3. 12.1.2.3. Listen Ports and Listen Threads
        4. 12.1.2.4. Application Container
      3. 12.1.3. WebLogic Server Clustering Architecture
        1. 12.1.3.1. Clustering for Web Applications
          1. 12.1.3.1.1. Session-Based Routing
          2. 12.1.3.1.2. Secondary Selection
          3. 12.1.3.1.3. Change Detection and Propagation
        2. 12.1.3.2. Clustering for RMI-Based Applications
      4. 12.1.4. Admin Server
      5. 12.1.5. Node Manager
    2. 12.2. WebLogic Administration Key Concepts
      1. 12.2.1. Server States
      2. 12.2.2. Server Self-Health Monitoring
      3. 12.2.3. Network Channels
    3. 12.3. Configuring a WebLogic Server Domain
      1. 12.3.1. Setting Up a New Domain
      2. 12.3.2. Configuring Servers
      3. 12.3.3. Configuring the Cluster
        1. 12.3.3.1. Cross-Cluster Replication
      4. 12.3.4. Configuring Network Channels
      5. 12.3.5. Setting Up the Node Manager
      6. 12.3.6. Operating System Configuration
      7. 12.3.7. Java Virtual Machine Configuration
      8. 12.3.8. Web Server Plug-in Configuration
      9. 12.3.9. Administration Port and Channel Configuration
      10. 12.3.10. Configuring Applications for WebLogic Server
        1. 12.3.10.1. Configuring Database Resources
          1. 12.3.10.1.1. Selecting and Configuring a JDBC Driver
          2. 12.3.10.1.2. Configuring JDBC DataSources
          3. 12.3.10.1.3. Selecting Transaction Options for a Data Source
          4. 12.3.10.1.4. Locating Data Sources in Java EE Applications
          5. 12.3.10.1.5. Configuring bigrez.com Data Sources
        2. 12.3.10.2. Configuring JMS Resources
          1. 12.3.10.2.1. Creating JMS Servers and WebLogic Persistent Stores
          2. 12.3.10.2.2. Creating Distributed JMS Destinations
          3. 12.3.10.2.3. Creating JMS Connection Factories
        3. 12.3.10.3. Configuring JavaMail Sessions
        4. 12.3.10.4. Configuring Work Managers, Request Classes, and Constraints
        5. 12.3.10.5. Deploying Applications
          1. 12.3.10.5.1. Modifying Application Configuration Using Deployment Plans
    4. 12.4. Monitoring WebLogic Server Applications
      1. 12.4.1. Using the WebLogic Scripting Tool
      2. 12.4.2. Using the Deprecated Command-Line Administration Tool
      3. 12.4.3. Monitoring with the WebLogic Console
      4. 12.4.4. Programmatic Monitoring with JMX
      5. 12.4.5. Monitoring via SNMP
    5. 12.5. Managing WebLogic Server Applications
      1. 12.5.1. Troubleshooting Application Issues
        1. 12.5.1.1. Using WebLogic Server's Logging Services
          1. 12.5.1.1.1. Message Catalog Logging
          2. 12.5.1.1.2. Non-Catalog Logging
          3. 12.5.1.1.3. Commons Logging
        2. 12.5.1.2. Using the WebLogic Diagnostic Framework
          1. 12.5.1.2.1. Instrumenting bigrez.com
          2. 12.5.1.2.2. Harvesting Metric Information
          3. 12.5.1.2.3. Exporting Diagnostic Data
          4. 12.5.1.2.4. Managing the Diagnostic Archive
          5. 12.5.1.2.5. Watches and Notifications
      2. 12.5.2. Versioning Applications
      3. 12.5.3. Managing Failure Conditions
        1. 12.5.3.1. Database Failures
        2. 12.5.3.2. WebLogic Server Failures
          1. 12.5.3.2.1. Service Level Migration
          2. 12.5.3.2.2. Migrating JMS Services
          3. 12.5.3.2.3. Migrating the JTA Service
          4. 12.5.3.2.4. Migrating Custom Singleton Services
          5. 12.5.3.2.5. Whole Server Migration
          6. 12.5.3.2.6. Migrating the Admin Server
    6. 12.6. Chapter Review
  18. 13. Optimizing WebLogic Server Performance
    1. 13.1. Overview of System Performance
      1. 13.1.1. Reviewing the Core Principles
      2. 13.1.2. Tuning a WebLogic Server–Based Application
        1. 13.1.2.1. Operating System Tuning
          1. 13.1.2.1.1. Tuning Solaris
          2. 13.1.2.1.2. Tuning AIX
          3. 13.1.2.1.3. Tuning HP-UX
          4. 13.1.2.1.4. Tuning Linux
          5. 13.1.2.1.5. Tuning Windows
        2. 13.1.2.2. Network Tuning
        3. 13.1.2.3. Java Virtual Machine Tuning
          1. 13.1.2.3.1. Understanding Garbage Collection
          2. 13.1.2.3.2. Tuning the Sun HotSpot JVM Heap Size
          3. 13.1.2.3.3. Using Oracle JRockit JVM
        4. 13.1.2.4. Application Server Tuning
          1. 13.1.2.4.1. Configuring Connection-Related Parameters
          2. 13.1.2.4.2. Using the Native I/O Muxer
          3. 13.1.2.4.3. Optimizing Thread Management
          4. 13.1.2.4.4. Tuning Resource Pool and Cache Sizes
          5. 13.1.2.4.5. Verifying Application Server Tuning
    2. 13.2. Performance Best Practices
      1. 13.2.1. Designing for Performance
        1. 13.2.1.1. Session Façade
        2. 13.2.1.2. Value Object
        3. 13.2.1.3. Command Pattern
      2. 13.2.2. Understanding Web Container Best Practices
        1. 13.2.2.1. Session Management
        2. 13.2.2.2. JavaServer Pages
          1. 13.2.2.2.1. Using Sessions Efficiently
          2. 13.2.2.2.2. Using Dynamic Content Caching
        3. 13.2.2.3. Servlets
      3. 13.2.3. Understanding EJB Container Best Practices
        1. 13.2.3.1. JNDI Lookup Strategies
        2. 13.2.3.2. Optimizing EJB 3.0 Entities
        3. 13.2.3.3. Taking Advantage of Pass-by-Reference
      4. 13.2.4. Applying Database Access Best Practices
        1. 13.2.4.1. Basic Database Principles
        2. 13.2.4.2. Retrieve Columns Explicitly
        3. 13.2.4.3. Cache Prepared Statements
        4. 13.2.4.4. Transaction Model
        5. 13.2.4.5. Commitment Control Level
        6. 13.2.4.6. Batch Updates
        7. 13.2.4.7. Connection Pools
        8. 13.2.4.8. Release JDBC Resources
    3. 13.3. Troubleshooting Performance Problems
      1. 13.3.1. Preparing for Troubleshooting
      2. 13.3.2. Bottleneck Identification and Correction
      3. 13.3.3. Problem Resolution
      4. 13.3.4. Common Application Server Performance Problems
        1. 13.3.4.1. Troubleshooting High CPU Utilization and Poor Application Server Throughput
        2. 13.3.4.2. Troubleshooting Low CPU Utilization and Poor Application Server Throughput
        3. 13.3.4.3. Troubleshooting Low Activity and CPU Utilization on All Physical Components with Slow Throughput
        4. 13.3.4.4. Troubleshooting Slow Response Time from the Client and Low Database Usage
        5. 13.3.4.5. Troubleshooting Erratic Response Times and CPU Utilization on the Application Server
        6. 13.3.4.6. Troubleshooting Performance Degrading with High Disk I/O
      5. 13.3.5. Java Stack Traces
        1. 13.3.5.1. Understanding Thread States
        2. 13.3.5.2. Generating System-Level Process Dumps
        3. 13.3.5.3. Generating Java Thread Dumps
        4. 13.3.5.4. Reading Core Dumps
        5. 13.3.5.5. Reading Java Stack Traces
        6. 13.3.5.6. Understanding WebLogic Server Stack Traces
    4. 13.4. Chapter Review
  19. 14. Development Environment Best Practices
    1. 14.1. Defining Required Hardware and Software
      1. 14.1.1. Sharing a Database Server
    2. 14.2. Installing WebLogic Server Software
      1. 14.2.1. Creating and Configuring a WebLogic Server Domain
    3. 14.3. Development Project Structure
    4. 14.4. Streamlining the Development Cycle
      1. 14.4.1. Split Directory Development
      2. 14.4.2. FastSwap
    5. 14.5. Establishing a Build Process
      1. 14.5.1. Continuous Integration
      2. 14.5.2. Code Inspection and Reporting Tools
    6. 14.6. Integrated Development Environments
      1. 14.6.1. Prerequisites
      2. 14.6.2. Configuring Eclipse for bigrez.com
        1. 14.6.2.1. The Oracle Enterprise Pack for Eclipse
        2. 14.6.2.2. Installation
        3. 14.6.2.3. Configuring a Target Runtime
        4. 14.6.2.4. Importing the bigrez.com Projects
        5. 14.6.2.5. Running bigrez.com from Eclipse
        6. 14.6.2.6. Partial Redeployment
        7. 14.6.2.7. Virtual EARs
      3. 14.6.3. Configuring JDeveloper for bigrez.com
        1. 14.6.3.1. Oracle JDeveloper
        2. 14.6.3.2. Installation
        3. 14.6.3.3. Creating an Application and the First Project
        4. 14.6.3.4. Configuring a Server Instance
        5. 14.6.3.5. Creating the Remaining Projects
        6. 14.6.3.6. Generating the Web Service
        7. 14.6.3.7. Running and Deploying from JDeveloper
      4. 14.6.4. Debugging with an IDE
        1. 14.6.4.1. Starting WebLogic Server in Debug Mode
        2. 14.6.4.2. Debugging and Transaction Timeouts
    7. 14.7. Creating a Unit Testing Infrastructure
      1. 14.7.1. The Importance of Unit Testing
        1. 14.7.1.1. Write Unit Tests with the Code
      2. 14.7.2. The JUnit Testing Framework
      3. 14.7.3. Out-of-Container Testing
        1. 14.7.3.1. Mocking Frameworks
        2. 14.7.3.2. Dependency Injection and Unit Tests
        3. 14.7.3.3. Database Services as Part of the Unit Test Context
        4. 14.7.3.4. Time and Other Variable Factors
      4. 14.7.4. Testing Web Interfaces
      5. 14.7.5. Web Services
      6. 14.7.6. Performance and Concurrency Testing
    8. 14.8. Chapter Review
  20. 15. Production Environment Best Practices
    1. 15.1. Deployment Strategies
      1. 15.1.1. Evaluating Deployment Strategies
      2. 15.1.2. Server Deployment Strategies
        1. 15.1.2.1. Determining the JVM-to-Processor Ratio
        2. 15.1.2.2. Vertical Scaling
        3. 15.1.2.3. Horizontal Scaling
      3. 15.1.3. Single-Site Deployment Strategies
        1. 15.1.3.1. Simple WebLogic Server Clusters
        2. 15.1.3.2. Complex WebLogic Server Clusters
      4. 15.1.4. Multiple Site Deployment Strategies
      5. 15.1.5. Designing Multiple-Site WebLogic Clusters
        1. 15.1.5.1. Cluster Design Options
        2. 15.1.5.2. Session Replication
        3. 15.1.5.3. Transaction Collocation Requirements
        4. 15.1.5.4. Data Replication
      6. 15.1.6. Implementing Clusters that Span Multiple Sites
      7. 15.1.7. Implementing One Cluster per Site
        1. 15.1.7.1. Using MAN Replication
        2. 15.1.7.2. Using WAN Replication
    2. 15.2. Global and Local Traffic Management
      1. 15.2.1. Using Load Balancers
      2. 15.2.2. Using Local Load Balancers with WebLogic Server
      3. 15.2.3. Using Global Load Balancers with WebLogic Server
    3. 15.3. Production Security Strategies
      1. 15.3.1. Understanding Application Data Flow
      2. 15.3.2. Understanding Firewall Layouts
      3. 15.3.3. Using a Connection Filter
        1. 15.3.3.1. WebLogic Server's Built-In Connection Filter
        2. 15.3.3.2. Custom Connection Filters
      4. 15.3.4. Locking Down Web Applications
        1. 15.3.4.1. Access Control Checks During Server-Side Forwards
        2. 15.3.4.2. Session ID Cookies Safety
      5. 15.3.5. Examining Other Security Considerations
      6. 15.3.6. Using SSL Hardware Acceleration
    4. 15.4. Chapter Review