The document summarizes the experience of building a J2EE-based management server using WebLogic Server 6.1sp1. Key points include: things that worked well included stateless session beans, JMS messaging, and WebLogic Server itself; things that worked somewhat included silent installation/uninstallation and debugging tools; things that did not work well included full garbage collection behavior, network I/O predictability, entity beans, and application-spawned threads.
1. 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
2. Experience of Building a 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 – 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
8. 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
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: 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
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