Keeping E-Business Open for Business™




                     BEA Users Group
                           January 16, 2003

    Embedding WLS Server –
     Experience of Building a
    J2EE-based Management
             Server

                Sanjeev Kumar
           skumar@resonate.com
    Management Server Team
         Resonate Inc.




    www.resonate.com
1   Resonate_presentation title
Experience of Building a J2EE-based
       Management Server

 • Basic Control Flows & Characteristics
 • Development Issues
 • Installation & Packaging Issues
 • Operational & Performance Issues




Resonate_presentation title
Commander Solutions – “Moving Parts”

                       Test Engine              Management   Watchdog               Configured Backup
                                                  Server                            Management Server
                                                                                          Node


                                                    PTA




                                 Pass-through
            WLS Server                                                   Backup Pass-
                                    Agent                               through Agent

                                          AA
                                                                               AA

               cm_wls
                                     cm_solaris


       signifies a node (machine) boundary
       signifies “ping” or heartbeat traffic
       signifies configured (primary) connections
       signifies configured backup connections



   Resonate_presentation title
Management Server – Code Layers
                GUI
                                       SLO Manager

                   Servlets             Rules Engine
                                         Scheduler

   Stateless Session Beans     JMS    Failover Manager

                                       Tests & Actions
   Singletons (Entity Beans)
                                     Statistics & Events

                                      Data Subscription
              DB Interface
                                         Discovery

         Weblogic Server             Communication Hub




Resonate_presentation title
Management Server: Characteristics
 • J2EE Technologies Used
     – Servlets, JSP’s, Struts Framework
     – Session Beans, and (partially) Entity Beans
     – BMP, JDBC, and DB Connection Pool
     – (In-memory) JMS
     – XML Parsers

 • WLS HTTP Listener
 • WLS Startup/Shutdown Hooks
 • Different from an In-house, Traditional Application
     – Packaging & Installation
     – Resource planning for varying scales of deployment




  Resonate_presentation title
Management Server: Characteristics
  • Design Patterns Used
         – Singletons: key functional components
         – Value Objects: persistent data
         – Session Bean per Singleton
         – Publish & Subscribe (JMS) for Asynchronous Communication

  • Rules Engine
         – Events combined with AND’s and OR’s
         – Event correlation w.r.t. time and occurrences

  • Agent Communication
         – Persistent and non-persistent message channel
         – Thread pool created and managed by the server



 Resonate_presentation title
Development – Servlet Container
            Servlet Container
                  – Application level authorization filter
                  – Use of JSP’s, servlets, struts framework, and bean shell
                  – Management of HTTP sessions for server failback


HTTP Request                                      Stateless                       JDBC
                    Java            Auth.         Session          Singleton/
 GET/POST          Servlets                        Beans          Value Objects


HTTP Response        Java
                    Server
                     Page
                                               Stateless Session Beans
                                                                              JDBC
                                             (Service Object Model)
            Web Container



                                            Enterprise Java Beans Container



      Resonate_presentation title
Development – EJB Container
• Session Beans
   – <session-type> - stateless; <transaction-type> - bean
   – <isolation_level> - TRANSACTION_READ_COMMITTED, for all methods

• Entity Beans
   – Persistence: <db-is-shared> - true; use of is_modified as “dirty” bit
   – Entity-cache: <concurrency-strategy> - database
   – db_is_shared = false; Caused transaction timeouts
   – db_is_shared = true; Excessive ejbLoad()’s and ejbStore()’s
   – Seen intermittent reentrancy exceptions; possible bug in WLS61sp1

 Moved functionality from entity beans to singletons
 and value objects


 Resonate_presentation title
Development – “Backend”
• Blocking vs. Non-blocking Operations
  – Use of request queues for op’s with high latency (e.g. writes to DB)
  – Decoupling of components via JMS server thread-pool

• Error Handling
  – Logging of application level errors, with varying levels of severity
  – Map most WLS and DB errors to user-consumable errors

• Debugging
  – Synchronization of entries across log files in the control flow chain

• Throughput
  – Data intensive, DB and disk I/O bound
  – Parallelization of disk I/O across as many disks as possible



  Resonate_presentation title
Installation & Packaging
    • Usage
          – Silent Install of WLS
          – Install of WLS as a service
          – Embedded WLS (ISV) License

    • Issues Discovered (“Nits”)
          – WLS uninstall is not silent
          – WLS uninstall is not "cumulative", i.e. uninstall of
            WLS61sp1 requires uninstall of WLS61
          – Uninstall does not remove BEA directory completely




0   Resonate_presentation title
Operational Issues: Config. & Startup
         • Server Startup & Shutdown
               – Startup and shutdown class hooks via config.xml
               – Ordered startup of server state
               – Orderly shutdown in the case of failback to primary

         • Management Server (App Level) Config File
               – Setting singleton and thread states at startup time
               – User-visible vs. hidden parameters

         • Log Generation
               – Application level log file
               – Cyclical set of log files




1     Resonate_presentation title
Operational Issues: Performance Related
     • Thread-pool Sizes
          – Strict control of application-spawned threads & execute queue
          – Lack of control of JMS server thread pool size (WLS6.1)

     • Java Heap Sizing
          – Guidelines to specify typical and max on heap size
          – Min & Max for heap and new-space set equal at startup
          – Experimentation required for survivor-ratio and min/max of heap-
            free ratios

     • Database Throughput
          – Control over database and disk I/O throughput
          – Indirectly impacts GC performance



2    Resonate_presentation title
Summary-I
     • Things that worked
            – EJB Container: Stateless session beans
            – In-memory JMS message propagation (pub/sub)
            – Weblogic Server, Rel 6.1sp1, in general
            – Online docs (edocs.bea.com)
            – BEA’s consulting services

     • Things that “kind of” worked
            – Silent install, uninstall & release upgrades of WLS
            – Use of debuggers to step through application code




3   Resonate_presentation title
Summary-II

    • Things that did not work
          – Full GC & network connections

          – Predictability (and outcome) of full GC

          – Network I/O (as supported in JDK 1.3.1)
          – Entity beans & application spawned threads




4   Resonate_presentation title
Questions?

                                     Q&A




5   Resonate_presentation title

BUG - BEA Users\' Group, Jan16 2003

  • 1.
    Keeping E-Business Openfor Business™ BEA Users Group January 16, 2003 Embedding WLS Server – Experience of Building a J2EE-based Management Server Sanjeev Kumar skumar@resonate.com Management Server Team Resonate Inc. www.resonate.com 1 Resonate_presentation title
  • 2.
    Experience of Buildinga J2EE-based Management Server • Basic Control Flows & Characteristics • Development Issues • Installation & Packaging Issues • Operational & Performance Issues Resonate_presentation title
  • 3.
    Commander Solutions –“Moving Parts” Test Engine Management Watchdog Configured Backup Server Management Server Node PTA Pass-through WLS Server Backup Pass- Agent through Agent AA AA cm_wls cm_solaris signifies a node (machine) boundary signifies “ping” or heartbeat traffic signifies configured (primary) connections signifies configured backup connections Resonate_presentation title
  • 4.
    Management Server –Code Layers GUI SLO Manager Servlets Rules Engine Scheduler Stateless Session Beans JMS Failover Manager Tests & Actions Singletons (Entity Beans) Statistics & Events Data Subscription DB Interface Discovery Weblogic Server Communication Hub Resonate_presentation title
  • 5.
    Management Server: Characteristics • J2EE Technologies Used – Servlets, JSP’s, Struts Framework – Session Beans, and (partially) Entity Beans – BMP, JDBC, and DB Connection Pool – (In-memory) JMS – XML Parsers • WLS HTTP Listener • WLS Startup/Shutdown Hooks • Different from an In-house, Traditional Application – Packaging & Installation – Resource planning for varying scales of deployment Resonate_presentation title
  • 6.
    Management Server: Characteristics • Design Patterns Used – Singletons: key functional components – Value Objects: persistent data – Session Bean per Singleton – Publish & Subscribe (JMS) for Asynchronous Communication • Rules Engine – Events combined with AND’s and OR’s – Event correlation w.r.t. time and occurrences • Agent Communication – Persistent and non-persistent message channel – Thread pool created and managed by the server Resonate_presentation title
  • 7.
    Development – ServletContainer Servlet Container – Application level authorization filter – Use of JSP’s, servlets, struts framework, and bean shell – Management of HTTP sessions for server failback HTTP Request Stateless JDBC Java Auth. Session Singleton/ GET/POST Servlets Beans Value Objects HTTP Response Java Server Page Stateless Session Beans JDBC (Service Object Model) Web Container Enterprise Java Beans Container Resonate_presentation title
  • 8.
    Development – EJBContainer • Session Beans – <session-type> - stateless; <transaction-type> - bean – <isolation_level> - TRANSACTION_READ_COMMITTED, for all methods • Entity Beans – Persistence: <db-is-shared> - true; use of is_modified as “dirty” bit – Entity-cache: <concurrency-strategy> - database – db_is_shared = false; Caused transaction timeouts – db_is_shared = true; Excessive ejbLoad()’s and ejbStore()’s – Seen intermittent reentrancy exceptions; possible bug in WLS61sp1 Moved functionality from entity beans to singletons and value objects Resonate_presentation title
  • 9.
    Development – “Backend” •Blocking vs. Non-blocking Operations – Use of request queues for op’s with high latency (e.g. writes to DB) – Decoupling of components via JMS server thread-pool • Error Handling – Logging of application level errors, with varying levels of severity – Map most WLS and DB errors to user-consumable errors • Debugging – Synchronization of entries across log files in the control flow chain • Throughput – Data intensive, DB and disk I/O bound – Parallelization of disk I/O across as many disks as possible Resonate_presentation title
  • 10.
    Installation & Packaging • Usage – Silent Install of WLS – Install of WLS as a service – Embedded WLS (ISV) License • Issues Discovered (“Nits”) – WLS uninstall is not silent – WLS uninstall is not "cumulative", i.e. uninstall of WLS61sp1 requires uninstall of WLS61 – Uninstall does not remove BEA directory completely 0 Resonate_presentation title
  • 11.
    Operational Issues: Config.& Startup • Server Startup & Shutdown – Startup and shutdown class hooks via config.xml – Ordered startup of server state – Orderly shutdown in the case of failback to primary • Management Server (App Level) Config File – Setting singleton and thread states at startup time – User-visible vs. hidden parameters • Log Generation – Application level log file – Cyclical set of log files 1 Resonate_presentation title
  • 12.
    Operational Issues: PerformanceRelated • Thread-pool Sizes – Strict control of application-spawned threads & execute queue – Lack of control of JMS server thread pool size (WLS6.1) • Java Heap Sizing – Guidelines to specify typical and max on heap size – Min & Max for heap and new-space set equal at startup – Experimentation required for survivor-ratio and min/max of heap- free ratios • Database Throughput – Control over database and disk I/O throughput – Indirectly impacts GC performance 2 Resonate_presentation title
  • 13.
    Summary-I • Things that worked – EJB Container: Stateless session beans – In-memory JMS message propagation (pub/sub) – Weblogic Server, Rel 6.1sp1, in general – Online docs (edocs.bea.com) – BEA’s consulting services • Things that “kind of” worked – Silent install, uninstall & release upgrades of WLS – Use of debuggers to step through application code 3 Resonate_presentation title
  • 14.
    Summary-II • Things that did not work – Full GC & network connections – Predictability (and outcome) of full GC – Network I/O (as supported in JDK 1.3.1) – Entity beans & application spawned threads 4 Resonate_presentation title
  • 15.
    Questions? Q&A 5 Resonate_presentation title