You are previewing WebLogic: The Definitive Guide.
O'Reilly logo
WebLogic: The Definitive Guide

Book Description

BEA's WebLogic Server implements the full range of J2EE technologies, and includes many additional features such as advanced management, clustering, and web services. Widely adopted, it forms the core of the WebLogic platform, providing a stable framework for building scalable, highly available, and secure applications. In fact, in the long list of WebLogic's strengths and features, only one shortcoming stands out: the documentation that comes with the WebLogic server often leaves users clamoring for more information. WebLogic: The Definitive Guide presents a 360-degree view of the world of WebLogic. Providing in-depth coverage of the WebLogic server, the book takes the concept of "definitive" to a whole new level. Exhaustive treatment of the WebLogic server and management console answers any question that developers or administrators might think to ask. Developers will find a useful guide through the world of WebLogic to help them apply their J2EE expertise to build and manage applications. Administrators will discover all they need to manage a WebLogic-based setup. And system architects will appreciate the detailed analysis of the different system architectures supported by WebLogic, the overall organization of a WebLogic domain and supporting network infrastructure, and more. WebLogic: The Definitive Guide is divided into three sections that explore WebLogic and J2EE, Managing the WebLogic Environment, and WebLogic Enterprise APIs. Some of the topics covered in this comprehensive volume include:

  • Building web applications on the WebLogic Server

  • Building and optimizing RMI applications

  • Using EJBs with WebLogic, including CMP entity beans

  • Packaging and deploying applications

  • Understanding WebLogic's support for clustering

  • Performance tuning and related configuration settings

  • Configuring WebLogic's SSL support

  • Maximizing WebLogic's security features

  • Building web services with XML

  • Using WebLogic's JMX services and MBeans

Anyone who has struggled with mastering the WebLogic server will appreciate the thorough, clearly written explanations and examples in this book. WebLogic: The Definitive Guide is the definitive documentation for this popular J2EE application server.

Table of Contents

  1. WebLogic: The Definitive Guide
    1. SPECIAL OFFER: Upgrade this ebook with O’Reilly
    2. Preface
      1. Who Should Read This Book?
      2. Organization
        1. WebLogic and J2EE
        2. Managing the WebLogic Environment
        3. WebLogic Enterprise APIs
      3. Online Documentation
      4. Conventions Used in This Book
      5. Using Code Examples
      6. Comments and Questions
      7. Acknowledgments
    3. 1. Introduction
      1. 1.1. Overview of WebLogic Server
        1. 1.1.1. The WebLogic Platform
        2. 1.1.2. WebLogic as a J2EE Product
          1. 1.1.2.1. Servlets, JSPs, and the web container
          2. 1.1.2.2. JDBC and distributed transactions
          3. 1.1.2.3. JNDI and RMI
          4. 1.1.2.4. EJBs
          5. 1.1.2.5. JMS
          6. 1.1.2.6. JCA
        3. 1.1.3. Additional Enterprise Features of WebLogic
          1. 1.1.3.1. WebLogic's security framework
          2. 1.1.3.2. WebLogic in a clustered environment
          3. 1.1.3.3. XML support
          4. 1.1.3.4. Web services
          5. 1.1.3.5. Management features
        4. 1.1.4. WebLogic Server Tools
          1. 1.1.4.1. System administration console
          2. 1.1.4.2. Deployment and development tools
          3. 1.1.4.3. WebLogic Builder
        5. 1.1.5. WebLogic Workshop
      2. 1.2. Software and Versions
      3. 1.3. Getting Started with WebLogic Server
        1. 1.3.1. Creating a Domain
        2. 1.3.2. Using the Administration Console
    4. 2. Web Applications
      1. 2.1. Packaging and Deployment
        1. 2.1.1. Structure of a Web Application
        2. 2.1.2. Assembling a WAR
        3. 2.1.3. XML Deployment Descriptors
        4. 2.1.4. WebLogic's JSP Compiler
        5. 2.1.5. Deploying a Web Application
        6. 2.1.6. Class Loaders
      2. 2.2. Configuring Web Applications
        1. 2.2.1. Context Root
        2. 2.2.2. Directory Listings
        3. 2.2.3. Serving Static Files
        4. 2.2.4. Enabling CGI Scripts
        5. 2.2.5. Reloading Files
        6. 2.2.6. Resources References
        7. 2.2.7. Response Caching
      3. 2.3. Servlets and JSPs
        1. 2.3.1. Configuring a Custom Execute Queue
        2. 2.3.2. Threading Issues
          1. 2.3.2.1. Single-threaded servlets
        3. 2.3.3. Custom URL Pattern Matching
        4. 2.3.4. Configuring JSPs
      4. 2.4. JSP Tag Libraries
        1. 2.4.1. WebLogic's Tag Library
          1. 2.4.1.1. The cache tag
          2. 2.4.1.2. The process tag
          3. 2.4.1.3. The repeat tag
        2. 2.4.2. Building Tag Libraries for EJBs
          1. 2.4.2.1. The ejb2jsp tool
          2. 2.4.2.2. Resolving conflicts
          3. 2.4.2.3. Custom tags for stateful beans and entity beans
      5. 2.5. Session Tracking
        1. 2.5.1. Session Tracking with Cookies
          1. 2.5.1.1. Using cookies with SSL
        2. 2.5.2. Session Tracking with URL Rewriting
          1. 2.5.2.1. URL rewriting for WAP
        3. 2.5.3. Session Security and Single Sign-on
          1. 2.5.3.1. Avoiding single sign-on
      6. 2.6. Session Persistence
        1. 2.6.1. Configuring Session Persistence
        2. 2.6.2. Memory Persistence
        3. 2.6.3. File-Based Persistence
        4. 2.6.4. JDBC Persistence
        5. 2.6.5. Cookie Persistence
      7. 2.7. Clusters and Replicated Persistence
        1. 2.7.1. Disadvantages of Session-State Replication
        2. 2.7.2. Session Replication
        3. 2.7.3. Session Failover
      8. 2.8. Configuring a Simple Web Cluster
        1. 2.8.1. Configuring HttpClusterServlet
        2. 2.8.2. Debugging the Configuration
      9. 2.9. Security Configuration
        1. 2.9.1. Authentication
        2. 2.9.2. Declarative Security
        3. 2.9.3. Programmatic Security
        4. 2.9.4. Securing Servlet Initialization and Destruction
        5. 2.9.5. Authenticated Dispatching
      10. 2.10. Monitoring Web Applications
    5. 3. Managing the Web Server
      1. 3.1. Configuring WebLogic's HTTP Server
        1. 3.1.1. Denial-of-Service Attacks
        2. 3.1.2. WAP Options
        3. 3.1.3. Setting the Default Web Application
      2. 3.2. Virtual Hosting
        1. 3.2.1. Creating Virtual Hosts
        2. 3.2.2. A Virtual Hosting Scenario
      3. 3.3. HTTP Access Logs
        1. 3.3.1. Common Log Format
        2. 3.3.2. Extended Log Format
      4. 3.4. Understanding Proxies
        1. 3.4.1. Proxying to a Secondary Web Server
      5. 3.5. Web Server Plug-ins
        1. 3.5.1. Installing a Proxy
        2. 3.5.2. Types of Proxying
        3. 3.5.3. Connection Pools and Keep-Alive Connections
        4. 3.5.4. Proxying to a Cluster
        5. 3.5.5. Connection Failures
        6. 3.5.6. Dynamic Server List
        7. 3.5.7. SSL and Web Server Plug-ins
        8. 3.5.8. Configuration Parameters
        9. 3.5.9. Example Configurations
    6. 4. Using JNDI and RMI
      1. 4.1. Using WebLogic's JNDI
        1. 4.1.1. Creating a Context
        2. 4.1.2. Security in a Context
        3. 4.1.3. Using a Context
      2. 4.2. Using JNDI in a Clustered Environment
        1. 4.2.1. Creating a Context in a Cluster
        2. 4.2.2. J2EE Resources and RMI Stubs
        3. 4.2.3. Binding Custom Objects
        4. 4.2.4. Pinned Services
      3. 4.3. Using WebLogic's RMI
        1. 4.3.1. Programming Issues
        2. 4.3.2. Using a WebLogic Startup Class to Register an RMI Object
        3. 4.3.3. WebLogic's RMI Compiler
        4. 4.3.4. RMI Objects in a Cluster
        5. 4.3.5. Cluster Example
        6. 4.3.6. Using a Custom CallRouter Class with an RMI Object
      4. 4.4. Using WebLogic's RMI over IIOP
        1. 4.4.1. Standalone RMI Clients
        2. 4.4.2. WebLogic Fat Clients
        3. 4.4.3. J2EE Thin Clients
        4. 4.4.4. CORBA/IDL Clients
        5. 4.4.5. Configuring RMI-IIOP
    7. 5. JDBC
      1. 5.1. Overview of JDBC Resources
        1. 5.1.1. JDBC Drivers for WebLogic Server
        2. 5.1.2. Connection Pools
        3. 5.1.3. Multipools
        4. 5.1.4. Data Sources
      2. 5.2. Configuring JDBC Connectivity
        1. 5.2.1. Using Third-Party JDBC Drivers
        2. 5.2.2. Configuring a Connection Pool
          1. 5.2.2.1. Creating a pool
          2. 5.2.2.2. General pool configuration
          3. 5.2.2.3. Controlling the pool size
          4. 5.2.2.4. Connection reservation
          5. 5.2.2.5. Connection testing
          6. 5.2.2.6. Advanced distributed transaction control
          7. 5.2.2.7. Initializing pool connections
          8. 5.2.2.8. Monitoring JDBC pools
          9. 5.2.2.9. Managing the connection pool
          10. 5.2.2.10. Using the physical connection
        3. 5.2.3. Configuring a Data Source
          1. 5.2.3.1. Setting up an XA-aware data source
          2. 5.2.3.2. Using a configured data source
          3. 5.2.3.3. Targeting the data source
        4. 5.2.4. Application-Scoped Data Sources and Connection Pools
          1. 5.2.4.1. Creating a data source factory
          2. 5.2.4.2. Editing the deployment descriptor
          3. 5.2.4.3. Using an application-scoped data source
          4. 5.2.4.4. Encrypting the passwords
        5. 5.2.5. Managing the Statement Cache
          1. 5.2.5.1. Enabling statement caching
          2. 5.2.5.2. Clearing the statement cache
          3. 5.2.5.3. Limitations of statement caching
        6. 5.2.6. Validating Database Connections
      3. 5.3. WebLogic's Wrapper Drivers
        1. 5.3.1. The RMI Driver
        2. 5.3.2. The Pool Driver
        3. 5.3.3. The JTS Driver
      4. 5.4. Rowsets
        1. 5.4.1. Creating and Populating Rowsets
        2. 5.4.2. Manipulating Rowsets
        3. 5.4.3. Transactions and Rowsets
        4. 5.4.4. Synchronizing Rowsets
          1. 5.4.4.1. VERIFY_READ_COLUMNS
          2. 5.4.4.2. VERIFY_AUTO_VERSION_COLUMNS
          3. 5.4.4.3. VERIFY_VERSION_COLUMNS
          4. 5.4.4.4. VERIFY_MODIFIED_COLUMNS
          5. 5.4.4.5. VERIFY_SELECTED_COLUMNS
          6. 5.4.4.6. VERIFY_NONE
          7. 5.4.4.7. Caveats
          8. 5.4.4.8. Group deletes and JDBC batching
        5. 5.4.5. Rowsets Spanning Multiple Tables
        6. 5.4.6. XML and Rowsets
      5. 5.5. Clustering and JDBC Connections
        1. 5.5.1. Failover and Load Balancing
    8. 6. Transactions
      1. 6.1. Overview
        1. 6.1.1. JDBC Transactions
        2. 6.1.2. Distributed Transactions
      2. 6.2. EJB Transactions
        1. 6.2.1. Container-Managed Transactions
        2. 6.2.2. Bean-Managed Transactions
      3. 6.3. The Transaction Service
        1. 6.3.1. Using JTA Transactions
        2. 6.3.2. Using XA Versus Non-XA Drivers in JTA Transactions
          1. 6.3.2.1. Data integrity problems with two-phase commit emulation
        3. 6.3.3. WebLogic Extensions to the JTA
      4. 6.4. Managing WebLogic JTA
        1. 6.4.1. Monitoring Transactions
        2. 6.4.2. Transaction Logs
        3. 6.4.3. Transaction Recovery
        4. 6.4.4. Handling Failed Servers
        5. 6.4.5. Interdomain Transactions
    9. 7. J2EE Connectors
      1. 7.1. Assembling and Deploying Resource Adapters
        1. 7.1.1. Packaging
        2. 7.1.2. Deployment
        3. 7.1.3. XML Deployment Descriptors
      2. 7.2. Configuring Resource Adapters
        1. 7.2.1. Generic Settings for the Resource Adapter
        2. 7.2.2. Support for Transaction Levels
      3. 7.3. WebLogic-Specific Configuration Options
        1. 7.3.1. Managing Connection Pools
          1. 7.3.1.1. Connection reservation
          2. 7.3.1.2. Detecting connection leaks
          3. 7.3.1.3. Connection proxy wrappers
        2. 7.3.2. Error Logging and Tracing
        3. 7.3.3. Secure Access
          1. 7.3.3.1. Sign-on mechanisms
          2. 7.3.3.2. Mapping WebLogic users to resource principals
      4. 7.4. Using the Resource Adapter
      5. 7.5. Monitoring Connections
    10. 8. JMS
      1. 8.1. Configuring JMS Resources
        1. 8.1.1. Server
        2. 8.1.2. Destinations
        3. 8.1.3. Connection Factory
        4. 8.1.4. Templates
        5. 8.1.5. Destination Keys
        6. 8.1.6. JMS Stores
        7. 8.1.7. Distributed Destination
        8. 8.1.8. JMS Session Pools
        9. 8.1.9. Foreign JMS Servers
          1. 8.1.9.1. Configuring a foreign JMS provider
      2. 8.2. Optimizing JMS Performance
        1. 8.2.1. Message Quotas
        2. 8.2.2. Message Paging
          1. 8.2.2.1. How paging works
          2. 8.2.2.2. Configuring paging for servers and destinations
        3. 8.2.3. Flow Control
          1. 8.2.3.1. How flow control works
          2. 8.2.3.2. Tuning the flow control mechanism
          3. 8.2.3.3. Blocking message producers
        4. 8.2.4. JMS Stores
          1. 8.2.4.1. Tuning file stores
          2. 8.2.4.2. Managing the JMS tables for a JDBC store
          3. 8.2.4.3. Configuring the JDBC pool for a JMS store
        5. 8.2.5. Message Expiration
          1. 8.2.5.1. Enabling active message expiration
          2. 8.2.5.2. Expired message handling
        6. 8.2.6. Concurrent Messaging
          1. 8.2.6.1. Using JMS session pools
      3. 8.3. Controlling Message Delivery
        1. 8.3.1. Delivery Modes
        2. 8.3.2. Timed Delivery
          1. 8.3.2.1. Delayed message delivery
          2. 8.3.2.2. Scheduled delivery
          3. 8.3.2.3. Evaluating the next scheduled delivery time
          4. 8.3.2.4. Determining delivery time
        3. 8.3.3. Time-to-Live
        4. 8.3.4. Redelivery
          1. 8.3.4.1. Configuring redelivery
          2. 8.3.4.2. Error destinations
        5. 8.3.5. Extended Acknowledge Modes
        6. 8.3.6. Multicasting
          1. 8.3.6.1. Enabling multicasting
          2. 8.3.6.2. Using a multicast session
          3. 8.3.6.3. Sequence violations
      4. 8.4. JMS Programming Issues
        1. 8.4.1. JMS Clients
        2. 8.4.2. Synchronous Versus Asynchronous Consumption
        3. 8.4.3. Durable Subscribers
          1. 8.4.3.1. Unique clients
          2. 8.4.3.2. Creating and removing durable subscribers
        4. 8.4.4. Transactions and JMS
          1. 8.4.4.1. Transacted sessions
          2. 8.4.4.2. Distributed transactions
          3. 8.4.4.3. MDBs
        5. 8.4.5. Integrating JMS with Servlets and EJBs
          1. 8.4.5.1. Pooled connection objects and testing
          2. 8.4.5.2. Caching JNDI lookups and JMS objects
          3. 8.4.5.3. Automatic enlistment in transactions
          4. 8.4.5.4. J2EE compliance
          5. 8.4.5.5. Container-managed security
        6. 8.4.6. Creating Destinations at Runtime
          1. 8.4.6.1. Temporary destinations
          2. 8.4.6.2. Permanent destinations
        7. 8.4.7. JMS Messages and Selectors
          1. 8.4.7.1. XML messages
          2. 8.4.7.2. JMS selectors
          3. 8.4.7.3. XML message selectors
          4. 8.4.7.4. Impact of messages on performance
          5. 8.4.7.5. Impact of message selectors on performance
      5. 8.5. Clustered JMS
        1. 8.5.1. JMS Connections and Connection Factories
          1. 8.5.1.1. Load balancing
          2. 8.5.1.2. Connection routing
          3. 8.5.1.3. Failover
          4. 8.5.1.4. Targeting for server-side applications
          5. 8.5.1.5. Targeting for external applications
          6. 8.5.1.6. Affinity-based load-balancing algorithms
        2. 8.5.2. Distributed Destinations
          1. 8.5.2.1. Using distributed queues
          2. 8.5.2.2. Using distributed topics
          3. 8.5.2.3. Creating a distributed destination
          4. 8.5.2.4. Accessing a distributed destination
          5. 8.5.2.5. Producer and consumer load balancing
          6. 8.5.2.6. Load-balancing schemes
          7. 8.5.2.7. Load-balancing heuristics
          8. 8.5.2.8. Targeting connection factories
        3. 8.5.3. Message-Driven Beans
          1. 8.5.3.1. Placement of MDBs
          2. 8.5.3.2. MDBs and distributed topics
          3. 8.5.3.3. Delivery order
        4. 8.5.4. JMS Migration
          1. 8.5.4.1. Migrating a JMS server
          2. 8.5.4.2. Migrating MDBs
      6. 8.6. WebLogic's Messaging Bridge
        1. 8.6.1. Installing a Messaging Bridge
        2. 8.6.2. Configuring Bridge Destinations
          1. 8.6.2.1. Example configuration of bridge destinations
        3. 8.6.3. Configuring the Messaging Bridge
          1. 8.6.3.1. General settings
          2. 8.6.3.2. Connection retry settings
          3. 8.6.3.3. Transaction settings
          4. 8.6.3.4. Example bridge configuration
          5. 8.6.3.5. Monitoring a bridge
          6. 8.6.3.6. Configuring the JMS thread pool
      7. 8.7. Monitoring JMS
    11. 9. JavaMail
      1. 9.1. Configuring a Mail Session
      2. 9.2. Using JavaMail
      3. 9.3. Using Other JavaMail Providers
    12. 10. Using EJBs
      1. 10.1. Getting Started
        1. 10.1.1. EJB Types
        2. 10.1.2. Building EJBs
        3. 10.1.3. EJBGen
          1. 10.1.3.1. Using EJBGen
          2. 10.1.3.2. Tag inheritance
          3. 10.1.3.3. Templates
          4. 10.1.3.4. Reverse engineering
        4. 10.1.4. Packaging EJBs
        5. 10.1.5. XML Deployment Descriptors
        6. 10.1.6. Compiling Your EJBs
          1. 10.1.6.1. The ejbc tool
          2. 10.1.6.2. The appc tool
          3. 10.1.6.3. Generating an EJB client JAR
        7. 10.1.7. Referencing J2EE Resources
          1. 10.1.7.1. Referencing application-scoped EJBs
        8. 10.1.8. Deploying EJB Components
      2. 10.2. Development Guidelines
        1. 10.2.1. Collocation
        2. 10.2.2. Network Latency
        3. 10.2.3. Using EJB Homes
        4. 10.2.4. Conserving Transactions
        5. 10.2.5. Message-Driven Beans
          1. 10.2.5.1. Using foreign JMS providers
      3. 10.3. Managing WebLogic's EJB Container
        1. 10.3.1. Pool of Stateless Session EJB Instances
        2. 10.3.2. Cache of Stateful Session Bean Instances
      4. 10.4. Configuring Entity Beans
        1. 10.4.1. Altering the Store Behavior
        2. 10.4.2. EJB Concurrency
          1. 10.4.2.1. Read-only multicast invalidation
          2. 10.4.2.2. Read-mostly pattern
        3. 10.4.3. Entity Bean Caching
          1. 10.4.3.1. Caching between transactions
          2. 10.4.3.2. Application-level cache
      5. 10.5. EJBs and Transactions
        1. 10.5.1. Distributed transactions
          1. 10.5.1.1. Transaction isolation levels
      6. 10.6. EJBs and Clustering
        1. 10.6.1. Failover and Replication
          1. 10.6.1.1. Stateless session beans
          2. 10.6.1.2. Stateful session beans
          3. 10.6.1.3. Entity beans
        2. 10.6.2. Load Balancing
    13. 11. Using CMP and EJB QL
      1. 11.1. Building CMP Entity Beans
        1. 11.1.1. A Simple EJB
        2. 11.1.2. Associated Java Files
        3. 11.1.3. EJB Deployment Descriptor
        4. 11.1.4. Creating the EJB JAR
      2. 11.2. Features of WebLogic's CMP
        1. 11.2.1. Automatic Primary Key Generation
          1. 11.2.1.1. DBMS-generated primary keys
          2. 11.2.1.2. Sequence tables
        2. 11.2.2. Automatic Table Creation and Validation
        3. 11.2.3. Mapping CMP Fields Across Multiple DBMS Tables
        4. 11.2.4. Adjusting the Insert Behavior
        5. 11.2.5. Batch Operations
        6. 11.2.6. Delayed Existence Checking
        7. 11.2.7. Optimistic Concurrency
        8. 11.2.8. Field Groups and Finder Optimizations
      3. 11.3. Container-Managed Relationships
        1. 11.3.1. One-to-One Association
        2. 11.3.2. One-to-Many Association
        3. 11.3.3. Many-to-Many Association
        4. 11.3.4. Cascade Delete
          1. 11.3.4.1. Avoiding deadlocks
        5. 11.3.5. Caching EJB Relationships
      4. 11.4. EJB QL
        1. 11.4.1. Using WebLogic Extensions to EJB QL
        2. 11.4.2. Returning a ResultSet
        3. 11.4.3. Executing Dynamic Queries
        4. 11.4.4. WebLogic's EJB QL Extensions
        5. 11.4.5. Reporting EJB-QL Compilation Errors
    14. 12. Packaging and Deployment
      1. 12.1. Packaging
        1. 12.1.1. Deployment Descriptors
          1. 12.1.1.1. Editing deployment descriptors
        2. 12.1.2. Web Applications
        3. 12.1.3. EJB Components
        4. 12.1.4. Resource Adapters
        5. 12.1.5. Enterprise Applications
        6. 12.1.6. Client Applications
      2. 12.2. Deployment Tools
        1. 12.2.1. Administration Console
        2. 12.2.2. WebLogic's Deployer Tool
      3. 12.3. Application Deployment
        1. 12.3.1. Application Staging
          1. 12.3.1.1. Staging
          2. 12.3.1.2. External staging
          3. 12.3.1.3. No staging
        2. 12.3.2. Configuring the Staging Mode
        3. 12.3.3. Auto-Deployment
        4. 12.3.4. Alternative Descriptors
        5. 12.3.5. Deployment Order
      4. 12.4. WebLogic's Classloading Framework
        1. 12.4.1. The Need for Custom Classloaders
        2. 12.4.2. WebLogic's Classloaders
          1. 12.4.2.1. Overriding the parent delegation model
          2. 12.4.2.2. EJB redeployment
          3. 12.4.2.3. Deploying EJB modules and web applications as separate applications
          4. 12.4.2.4. Customizing the classloader hierarchy
      5. 12.5. Deployment Considerations
        1. 12.5.1. Single-Server Deployment
        2. 12.5.2. Multiserver Deployment
        3. 12.5.3. Cluster Deployment
        4. 12.5.4. Web Applications
          1. 12.5.4.1. Using auto-deployment
          2. 12.5.4.2. Using production mode
        5. 12.5.5. EJB Modules
        6. 12.5.6. Utility Classes
        7. 12.5.7. Resource Adapters
        8. 12.5.8. Startup and Shutdown Classes
        9. 12.5.9. Application Deployment Life Cycle Listeners
      6. 12.6. Split Directory Development
        1. 12.6.1. Directory Layout
        2. 12.6.2. Building an Application
        3. 12.6.3. Deploying an Application
        4. 12.6.4. Packaging an Application
        5. 12.6.5. Generating the Build File
    15. 13. Managing Domains
      1. 13.1. Structure of a Domain
      2. 13.2. Designing a Domain
      3. 13.3. Creating Domains
        1. 13.3.1. Directory Layout
        2. 13.3.2. The Configuration Wizard
          1. 13.3.2.1. Starting the Configuration Wizard
          2. 13.3.2.2. Typical configurations
          3. 13.3.2.3. Single server
          4. 13.3.2.4. Domain with Managed Servers
          5. 13.3.2.5. Domain with clustered Managed Servers
          6. 13.3.2.6. Using the Configuration Wizard in WebLogic 8.1
          7. 13.3.2.7. Using the Configuration Wizard in WebLogic 7.0
        3. 13.3.3. Using weblogic.Server
        4. 13.3.4. Starting the Servers
      4. 13.4. Domain Backups
        1. 13.4.1. Configuration Data
        2. 13.4.2. Security Data
          1. 13.4.2.1. The LDAP repository
          2. 13.4.2.2. The serialized security datafile
          3. 13.4.2.3. Certificates
          4. 13.4.2.4. Security configuration data in WebLogic 7.0
      5. 13.5. Handling System Failure
        1. 13.5.1. Restarting the Administration Server
        2. 13.5.2. Restarting Managed Servers
          1. 13.5.2.1. Managed Server Independence mode
      6. 13.6. Domain Network Configuration
        1. 13.6.1. The Default Network Channel
          1. 13.6.1.1. General settings
          2. 13.6.1.2. Protocols
          3. 13.6.1.3. Tuning
          4. 13.6.1.4. Tunneling
        2. 13.6.2. The Administration Channel
          1. 13.6.2.1. Consequences on domain configuration
          2. 13.6.2.2. Configuration changes
        3. 13.6.3. Custom Network Channels in WebLogic 8.1
          1. 13.6.3.1. Creating network channels
          2. 13.6.3.2. Enabling interserver communication
        4. 13.6.4. Network Channels and Access Points in WebLogic 7.0
          1. 13.6.4.1. Getting a summary
          2. 13.6.4.2. Viewing network configurations
          3. 13.6.4.3. Channel priority for outgoing connections
        5. 13.6.5. Best Practices for Configuring Networks
          1. 13.6.5.1. Segmenting network traffic by port number
          2. 13.6.5.2. Physically segmenting network traffic
          3. 13.6.5.3. Separating internal and external traffic
      7. 13.7. Node Manager
        1. 13.7.1. Configuring the Node Manager for a Physical Machine
          1. 13.7.1.1. Trusted hosts
          2. 13.7.1.2. SSL configuration
          3. 13.7.1.3. SSL for WebLogic 7.0
          4. 13.7.1.4. Additional configuration properties
          5. 13.7.1.5. Starting a Node Manager
        2. 13.7.2. Configuring a Machine to Use a Node Manager
        3. 13.7.3. Configuring the Node Manager for a Managed Server
        4. 13.7.4. Configuring Node Manager Behavior
        5. 13.7.5. Default Operation of the Node Manager
          1. 13.7.5.1. Starting managed servers
          2. 13.7.5.2. Suspending and stopping managed servers
          3. 13.7.5.3. Health monitoring
        6. 13.7.6. Node Manager Logs
          1. 13.7.6.1. Node Manager client logs
          2. 13.7.6.2. Managed Server logs
      8. 13.8. The Server Life Cycle
        1. 13.8.1. Graceful Shutdown
        2. 13.8.2. Starting a Server
        3. 13.8.3. Standby Mode
        4. 13.8.4. Shutting Down
        5. 13.8.5. Node Manager
      9. 13.9. Monitoring a WebLogic Domain
    16. 14. Clustering
      1. 14.1. An Overview of Clustering
        1. 14.1.1. Domains, Machines, and Clusters
        2. 14.1.2. Tiers
        3. 14.1.3. Load Balancing
        4. 14.1.4. Failover
      2. 14.2. A Closer Look at the Frontend Tier
        1. 14.2.1. Working with Clusters
          1. 14.2.1.1. Addressing a cluster
          2. 14.2.1.2. Creating a cluster
          3. 14.2.1.3. Starting and monitoring the domain
          4. 14.2.1.4. Deploying to a cluster
        2. 14.2.2. Servlets and JSPs in a Cluster
        3. 14.2.3. Configuring a Load Balancer
        4. 14.2.4. Using the Front Tier
        5. 14.2.5. Other Frontend Architectures
      3. 14.3. Load-Balancing Schemes
        1. 14.3.1. Server-to-Server Routing
          1. 14.3.1.1. Round-robin
          2. 14.3.1.2. Weight-based
          3. 14.3.1.3. Random
          4. 14.3.1.4. Parameter-based
        2. 14.3.2. Client-Server Routing
          1. 14.3.2.1. Server affinity for JNDI contexts
        3. 14.3.3. Scenarios in Which Load Balancing Is Avoided
      4. 14.4. Using J2EE Services on the Object Tier
        1. 14.4.1. Interacting with the Object Tier
        2. 14.4.2. Clustering EJB and RMI
          1. 14.4.2.1. Load balancing and failover
          2. 14.4.2.2. EJB load balancing
          3. 14.4.2.3. Failover for EJB and RMI objects
          4. 14.4.2.4. Pinned objects and migration
        3. 14.4.3. Using JDBC Resources in a Cluster
        4. 14.4.4. Clustering JMS
          1. 14.4.4.1. JMS servers and destinations
          2. 14.4.4.2. Connection factories
          3. 14.4.4.3. Distributed destinations
        5. 14.4.5. Maintaining State in a Cluster
      5. 14.5. Combined-Tier Architecture
      6. 14.6. Securing a Clustered Solution
        1. 14.6.1. Firewall Placement and Address Translation
        2. 14.6.2. Firewalls and Load Balancers
        3. 14.6.3. Databases
      7. 14.7. Machines, Replication Groups, and Failover
        1. 14.7.1. Machine Names
        2. 14.7.2. Replication Groups
      8. 14.8. Network Configuration
        1. 14.8.1. Multicast Communication
          1. 14.8.1.1. Multicast setup
        2. 14.8.2. Peer-to-Peer Communication
        3. 14.8.3. Administration Server Considerations
      9. 14.9. Monitoring Clusters
    17. 15. Performance, Monitoring, and Tuning
      1. 15.1. Tuning WebLogic Applications
        1. 15.1.1. Managing Sessions
          1. 15.1.1.1. Monitoring servlets and sessions
        2. 15.1.2. Optimizing JDBC Pools
          1. 15.1.2.1. Monitoring the connection pool and transactions
        3. 15.1.3. Tuning the JMS Server
          1. 15.1.3.1. Optimizing paging and flow control
          2. 15.1.3.2. Optimizing persistence
          3. 15.1.3.3. Monitoring the JMS servers
        4. 15.1.4. EJB Tuning
          1. 15.1.4.1. Optimizing the EJB pool size
          2. 15.1.4.2. Optimizing the EJB cache size
          3. 15.1.4.3. EJB concurrency
          4. 15.1.4.4. Transaction isolation levels
          5. 15.1.4.5. Optimizing CMP
          6. 15.1.4.6. Monitoring EJBs
        5. 15.1.5. Monitoring with JMX
      2. 15.2. Tuning the Application Server
        1. 15.2.1. Execute Queues
          1. 15.2.1.1. Creating an execute queue
          2. 15.2.1.2. Assigning execute queues to J2EE applications
          3. 15.2.1.3. Monitoring active queues
        2. 15.2.2. Server Threads
          1. 15.2.2.1. Configuring the thread count
          2. 15.2.2.2. Threads as socket readers
          3. 15.2.2.3. Queue overflow conditions
          4. 15.2.2.4. Detecting stuck threads
          5. 15.2.2.5. Monitoring active server threads
        3. 15.2.3. Socket Connections
          1. 15.2.3.1. Optimizing the pure-Java socket implementation
          2. 15.2.3.2. Client socket readers
          3. 15.2.3.3. Managing TCP connections
        4. 15.2.4. Tuning a Clustered Setup
          1. 15.2.4.1. Multi-CPU machines
      3. 15.3. Tuning the JVM
        1. 15.3.1. Choosing a JVM
        2. 15.3.2. Heap Size and Garbage Collection
          1. 15.3.2.1. Configuring the heap size
          2. 15.3.2.2. Generational garbage collection
          3. 15.3.2.3. Automatically logging low memory conditions
          4. 15.3.2.4. Explicit request for garbage collection
        3. 15.3.3. Green Versus Native Threads
        4. 15.3.4. Monitoring the JVM's Performance
    18. 16. SSL
      1. 16.1. An Overview of SSL
        1. 16.1.1. Encryption
        2. 16.1.2. Message Digests
        3. 16.1.3. Certificates
        4. 16.1.4. Certificate Authorities
        5. 16.1.5. Cipher Suites
        6. 16.1.6. Keystores
      2. 16.2. Configuring WebLogic's SSL
        1. 16.2.1. Obtaining Keys and Certificates
          1. 16.2.1.1. Demonstration keys and certificates
          2. 16.2.1.2. The CertGen utility
          3. 16.2.1.3. The Certificate Request Generator tool
        2. 16.2.2. Storing Private Keys and Certificates
        3. 16.2.3. Configuring SSL for WebLogic 8.1
          1. 16.2.3.1. Configuring the identity and trust keystores
          2. 16.2.3.2. Setting up the server identity
          3. 16.2.3.3. Enabling SSL
        4. 16.2.4. Configuring SSL for WebLogic 7.0
          1. 16.2.4.1. Configuring a Keystore Provider
          2. 16.2.4.2. Setting up the server identity
          3. 16.2.4.3. Using plain files for the private key and trusted CA certificates
          4. 16.2.4.4. Enabling SSL
        5. 16.2.5. Other SSL Configuration Issues
          1. 16.2.5.1. Two-way SSL
          2. 16.2.5.2. Hostname verification
          3. 16.2.5.3. Certificate validation options
          4. 16.2.5.4. SSL debugging
          5. 16.2.5.5. Export key lifespan and SSL login timeout
          6. 16.2.5.6. Using SSL in a cluster
        6. 16.2.6. SSL Configuration Scenarios
          1. 16.2.6.1. One-way SSL
          2. 16.2.6.2. Two-way SSL
      3. 16.3. Programmatic SSL
        1. 16.3.1. URL Connections
        2. 16.3.2. SSL Sockets
          1. 16.3.2.1. Using SSLSocket
          2. 16.3.2.2. Using a custom hostname verifier
          3. 16.3.2.3. Using a custom trust manager
          4. 16.3.2.4. Setting up the client's identity
          5. 16.3.2.5. Using an SSL handshake listener
        3. 16.3.3. JNDI Clients
        4. 16.3.4. JCE
      4. 16.4. Mapping Certificates to WebLogic Users
        1. 16.4.1. Two-Way SSL Authentication for Web Applications
    19. 17. Security
      1. 17.1. The Java Security Manager
        1. 17.1.1. Configuring the Security Manager
        2. 17.1.2. Global Security Policies
        3. 17.1.3. Application-Specific Security Policies
        4. 17.1.4. Tracing the Security Manager
      2. 17.2. Connection Filtering
        1. 17.2.1. The Default Connection Filter
      3. 17.3. The Security Provider Architecture
        1. 17.3.1. Overview
        2. 17.3.2. Users and Groups
        3. 17.3.3. Protecting User Accounts
        4. 17.3.4. Roles
        5. 17.3.5. Global Roles
        6. 17.3.6. Scoped Roles
          1. 17.3.6.1. Connection pools and multipools
          2. 17.3.6.2. JNDI branches
          3. 17.3.6.3. Web applications
          4. 17.3.6.4. Web services
          5. 17.3.6.5. EJBs
          6. 17.3.6.6. JMS destinations
          7. 17.3.6.7. Using the deployment descriptors
        7. 17.3.7. The externally-defined Element
        8. 17.3.8. Policies
          1. 17.3.8.1. Using the Administration Console
          2. 17.3.8.2. Enabling user-defined policies
          3. 17.3.8.3. Using the deployment descriptors
          4. 17.3.8.4. Default policies
        9. 17.3.9. Ignoring the Deployment Descriptors
        10. 17.3.10. Summary
      4. 17.4. The Providers
        1. 17.4.1. Authentication Providers
          1. 17.4.1.1. Principal Validation Providers
          2. 17.4.1.2. Identity Assertion Providers
        2. 17.4.2. The Default Authentication Providers
          1. 17.4.2.1. The Default Authenticator
          2. 17.4.2.2. Configuring an LDAP authenticator
          3. 17.4.2.3. The Default Identity Asserter
        3. 17.4.3. Authorization Providers
          1. 17.4.3.1. The Default Authorization Provider
        4. 17.4.4. Role Mapping Providers
          1. 17.4.4.1. The Default Role Mapper
        5. 17.4.5. Adjudication Providers
          1. 17.4.5.1. The Default Adjudicator
        6. 17.4.6. Credential Mapping Providers
          1. 17.4.6.1. The Default Credential Mapper
        7. 17.4.7. Auditing Providers
          1. 17.4.7.1. The Default Auditor
        8. 17.4.8. The Embedded LDAP Server
          1. 17.4.8.1. External access to the LDAP server
      5. 17.5. Configuring Trust Between Two Domains
      6. 17.6. JAAS Authentication in a Client
        1. 17.6.1. Anatomy of a JAAS Client
        2. 17.6.2. A Sample JAAS Client
      7. 17.7. Creating a Custom Authentication Provider
        1. 17.7.1. MBeans
        2. 17.7.2. Authentication Provider
        3. 17.7.3. Login Module
        4. 17.7.4. Deploying the Provider
      8. 17.8. Creating an Identity Assertion Provider
    20. 18. XML
      1. 18.1. JAXP
        1. 18.1.1. SAX
        2. 18.1.2. DOM
        3. 18.1.3. XSL Transformers
        4. 18.1.4. External Entity Resolution
      2. 18.2. Built-in Processors
        1. 18.2.1. WebLogic's FastParser
        2. 18.2.2. Using JAXP-Compliant Parsers
      3. 18.3. The XML Registry
        1. 18.3.1. Creating an XML Registry
        2. 18.3.2. Configuring Document-Specific Parsers
        3. 18.3.3. Configuring External Entity Resolution
        4. 18.3.4. Caching Entities
      4. 18.4. XML Application Scoping
        1. 18.4.1. Configuring Factories
        2. 18.4.2. Configuring Entity Resolution
      5. 18.5. WebLogic's Streaming API
        1. 18.5.1. Creating a Stream
        2. 18.5.2. Events
        3. 18.5.3. Filtering a Stream
        4. 18.5.4. Custom Filters
        5. 18.5.5. Positioning the Stream
        6. 18.5.6. Substreams
        7. 18.5.7. Buffered Streams
        8. 18.5.8. Creating Output Streams
        9. 18.5.9. Writing to the Stream
      6. 18.6. WebLogic's XPath API
        1. 18.6.1. Using the API with a DOM
        2. 18.6.2. Using the API with a Stream
      7. 18.7. Miscellaneous Extensions
        1. 18.7.1. Parsing XML in a Servlet
        2. 18.7.2. Using the JSP Tag Library for XSL Transformations
          1. 18.7.2.1. Using an interceptor
          2. 18.7.2.2. Using the XSLT tag
    21. 19. Web Services
      1. 19.1. Using the Web Services Framework
        1. 19.1.1. Web Services Architecture
          1. 19.1.1.1. Typical behavior of a web service
          2. 19.1.1.2. Web service operations without a backend
        2. 19.1.2. Building Your First Web Service
          1. 19.1.2.1. Using the Administration Console
          2. 19.1.2.2. Mapping your web service to an alternative URL
        3. 19.1.3. Using the WSDL to Create a Web Service
          1. 19.1.3.1. Publishing a static WSDL file
        4. 19.1.4. Using Ant Tasks to Build Web Services
      2. 19.2. Web Service Design Considerations
        1. 19.2.1. RPC-Oriented Versus Document-Oriented Web Services
        2. 19.2.2. Synchronous Versus Asynchronous Operations
        3. 19.2.3. Datatypes
        4. 19.2.4. Stateful Web Services
          1. 19.2.4.1. Creating an HttpSession for a web service
        5. 19.2.5. JMS Transport
      3. 19.3. Implementing the Backend Components
        1. 19.3.1. Java Class Backends
        2. 19.3.2. Stateless Session EJB Backends
        3. 19.3.3. JMS Backends
          1. 19.3.3.1. Designing a JMS backend
          2. 19.3.3.2. Building a web service over a JMS backend
          3. 19.3.3.3. Configuring the web-services.xml descriptor
        4. 19.3.4. Raising a SOAPFaultException
      4. 19.4. Datatypes
        1. 19.4.1. Built-in Types
        2. 19.4.2. Custom Types
        3. 19.4.3. Generating Support Files for a Custom Java Class
          1. 19.4.3.1. Using the servicegen Ant task
        4. 19.4.4. Autotyping
          1. 19.4.4.1. Using an XML Schema
          2. 19.4.4.2. Round-tripping
        5. 19.4.5. Manually Creating the Support Classes for a Custom Type
          1. 19.4.5.1. Creating the XML Schema and Java class for a datatype
          2. 19.4.5.2. Creating the serialization class
          3. 19.4.5.3. Including type information in the web-services.xml descriptor
          4. 19.4.5.4. Using the servicegen task
        6. 19.4.6. Implementing Multiple Return Values
          1. 19.4.6.1. Creating holder classes
        7. 19.4.7. SOAP Attachments
      5. 19.5. Implementing Clients
        1. 19.5.1. Client-Side Libraries
        2. 19.5.2. Building a Client JAR for Static Clients
        3. 19.5.3. Static Clients
        4. 19.5.4. Asynchronous Clients
        5. 19.5.5. Dynamic Clients
          1. 19.5.5.1. Introspecting the WSDL
          2. 19.5.5.2. Registering datatype mapping information
        6. 19.5.6. SOAP 1.2
        7. 19.5.7. J2ME Clients
        8. 19.5.8. Client Portability
        9. 19.5.9. Client System Properties
      6. 19.6. Reliable SOAP Messaging
        1. 19.6.1. Architecture
        2. 19.6.2. Implementing Reliable Web Service Backends
          1. 19.6.2.1. Building the sender and receiver
          2. 19.6.2.2. Configuring the servers
          3. 19.6.2.3. Writing the receiver
      7. 19.7. SOAP Message Handlers
        1. 19.7.1. Life Cycle of a SOAP Handler
        2. 19.7.2. Configuring a Handler Chain
        3. 19.7.3. Creating and Registering SOAP Handlers
          1. 19.7.3.1. Using only SOAP handlers to implement an operation
      8. 19.8. Security
        1. 19.8.1. Access Control
          1. 19.8.1.1. Assigning a security policy to the web service
          2. 19.8.1.2. Securing the web service URL
          3. 19.8.1.3. Securing a stateless session EJB and its methods
          4. 19.8.1.4. Removing access to the home page and WSDL
          5. 19.8.1.5. Authenticating client access to a protected web service
        2. 19.8.2. Using SSL
          1. 19.8.2.1. Client access using WebLogic's SSL
          2. 19.8.2.2. Using a proxy server
          3. 19.8.2.3. Configuring SSL programmatically
          4. 19.8.2.4. Using two-way SSL
          5. 19.8.2.5. Rolling your own SSL implementation
        3. 19.8.3. SOAP Message Security
          1. 19.8.3.1. Architecture
          2. 19.8.3.2. Configuring SOAP message security
          3. 19.8.3.3. Creating the certificates
          4. 19.8.3.4. Setting up the Identity Assertion Provider
          5. 19.8.3.5. Writing the client
          6. 19.8.3.6. Running the client
          7. 19.8.3.7. Encrypting passwords
      9. 19.9. UDDI
        1. 19.9.1. The UDDI Registry
        2. 19.9.2. The UDDI Directory Explorer
          1. 19.9.2.1. Public registries
          2. 19.9.2.2. Private registries
        3. 19.9.3. The Client API
      10. 19.10. Internationalization and Character Sets
        1. 19.10.1. Configuring Web Services
        2. 19.10.2. Configuring Client Applications
    22. 20. JMX
      1. 20.1. The MBean Architecture
        1. 20.1.1. Configuration MBeans
        2. 20.1.2. Runtime MBeans
        3. 20.1.3. Security MBeans
      2. 20.2. Accessing MBean Servers
        1. 20.2.1. Local and Administration Home Interfaces
        2. 20.2.2. Retrieving the Home Interface
      3. 20.3. Accessing MBeans
        1. 20.3.1. Naming of MBeans
          1. 20.3.1.1. Determining MBean type
          2. 20.3.1.2. Determining parent-child relationships
        2. 20.3.2. Using the Administration Tool
        3. 20.3.3. Using WLShell
        4. 20.3.4. Standard MBean Access
        5. 20.3.5. WebLogic MBean Access
      4. 20.4. Examples
        1. 20.4.1. Runtime MBeans
        2. 20.4.2. Administration MBeans
        3. 20.4.3. Security MBeans
      5. 20.5. MBean Notifications
        1. 20.5.1. Creating a Notification Listener
        2. 20.5.2. Registering a Listener
      6. 20.6. Monitor MBeans
        1. 20.6.1. Types of Monitors
        2. 20.6.2. An Example Monitor
      7. 20.7. Timer MBeans
    23. 21. Logging and Internationalization
      1. 21.1. The Logging Architecture
        1. 21.1.1. Under the Hood
        2. 21.1.2. Viewing Log Files
        3. 21.1.3. Anatomy of a Log Message
        4. 21.1.4. Managing the Domain Log
        5. 21.1.5. Managing the Local Log
        6. 21.1.6. Creating a Domain Log Filter
        7. 21.1.7. WebLogic Message Catalogs
      2. 21.2. Listening for Log Messages
        1. 21.2.1. JMX Listeners
        2. 21.2.2. JDK Logging
      3. 21.3. Generating Log Messages
        1. 21.3.1. Log Message Catalogs
          1. 21.3.1.1. Creating log message catalogs
          2. 21.3.1.2. Generating log messages
        2. 21.3.2. Noncatalog Logging
        3. 21.3.3. Servlet Logging
        4. 21.3.4. Client Application Logging
    24. 22. SNMP
      1. 22.1. WebLogic's SNMP Infrastructure
      2. 22.2. Using the SNMP Agent
        1. 22.2.1. The Management Information Base
        2. 22.2.2. Community Names
      3. 22.3. Traps
        1. 22.3.1. Trap Destinations
        2. 22.3.2. Attribute Change Traps
        3. 22.3.3. Log Message Traps
        4. 22.3.4. Monitor Traps
      4. 22.4. SNMP Proxies
    25. About the Authors
    26. Colophon
    27. SPECIAL OFFER: Upgrade this ebook with O’Reilly