Oracle WebLogic Server: এন্টারপ্রাইজ Middleware-এ দক্ষতা
Oracle WebLogic Server হলো সেই নীরব কর্মবীর যা অসংখ্য mission-critical Java EE অ্যাপ্লিকেশনের পেছনে চলে — ব্যাংকিং প্ল্যাটফর্ম, ERP সিস্টেম, টেলিকম বিলিং, বিমা দাবি, হেলথকেয়ার রেকর্ড। একাধিক ইন্ডাস্ট্রিতে version 10g থেকে 14c পর্যন্ত WebLogic পরিবেশ deploy ও পরিচালনার পর আমি বলতে পারি, যে WebLogic নীরবে গুনগুন করে চলে আর যেটি রাত ২টায় আপনাকে জাগিয়ে তোলে — এ দুইয়ের পার্থক্য প্রায় সবসময়ই install-এর সময় নেওয়া আর্কিটেকচার সিদ্ধান্তে নিহিত। এই বিস্তৃত গাইড WebLogic-কে ভিত্তি থেকে প্রোডাকশন দক্ষতা পর্যন্ত কভার করে।
১. Oracle WebLogic Server কী?
Oracle WebLogic Server হলো একটি এন্টারপ্রাইজ-গ্রেড Java EE (এখন Jakarta EE) অ্যাপ্লিকেশন সার্ভার যা Java অ্যাপ্লিকেশন host ও পরিচালনা করে। এটি servlet, JSP, EJB, JMS messaging, JDBC pooling, web service, REST API এবং জটিল transactional অ্যাপ্লিকেশনের জন্য runtime পরিবেশ দেয়। WebLogic হলো আপনার শেষ ব্যবহারকারী (ব্রাউজার, মোবাইল অ্যাপ) ও আপনার backend database (সাধারণত Oracle)-এর মধ্যেকার অ্যাপ্লিকেশন স্তর।
এটি ব্যাপকভাবে ব্যবহৃত হয়:
- Oracle E-Business Suite, Oracle Fusion Middleware, SOA Suite, BPM Suite
- ব্যাংকিং অ্যাপ (core banking, internet banking, payment gateway)
- টেলিকম OSS/BSS প্ল্যাটফর্ম
- বিমা দাবি ও পলিসি ব্যবস্থাপনা সিস্টেম
- নিয়ন্ত্রিত ইন্ডাস্ট্রিতে কাস্টম Java EE অ্যাপ্লিকেশন
২. প্রোডাকশনে WebLogic সংস্করণ (২০২৬)
- WebLogic 12.2.1.4 — এখনও ব্যাপকভাবে deploy করা। Premier support বর্ধিত।
- WebLogic 14.1.1 — Java SE 8 ও 11, Java EE 8 সমর্থন
- WebLogic 14.1.2 — Java SE 17 ও 21, Jakarta EE 10 — নতুন deployment-এর জন্য বর্তমানে পছন্দসই
৩. WebLogic আর্কিটেকচার: মূল উপাদান
৩.১ Domain
একটি WebLogic Domain হলো logical ব্যবস্থাপনা সীমানা — একটি একক প্রশাসনিক একক। একটি domain-এর ভেতরে আপনার থাকে:
- একটি Administration Server
- শূন্য বা একাধিক Managed Server
- ঐচ্ছিক Cluster যা managed server-গুলোকে দলবদ্ধ করে
- কনফিগারেশন: data source, JMS, security realm, অ্যাপ্লিকেশন
৩.২ Administration Server (AdminServer)
কেন্দ্রীয় নিয়ন্ত্রণ তল। WebLogic Console (port 7001-এ web UI), WLST (scripting) host করে এবং কনফিগারেশন পরিচালনা করে। কখনও AdminServer-এ প্রোডাকশন অ্যাপ্লিকেশন deploy করবেন না — এটি হালকা, নিরাপদ এবং কেবল প্রশাসনের জন্য নিবেদিত থাকা উচিত।
৩.৩ Managed Server
যেখানে আপনার অ্যাপ্লিকেশন আসলে চলে। প্রতিটি managed server একটি আলাদা JVM process যা নিজের port-এ শোনে। প্রোডাকশন domain-এ সাধারণত একাধিক managed server থাকে, প্রায়ই cluster-এ।
৩.৪ Node Manager
OS-স্তরের daemon (প্রতি physical/virtual সার্ভারে একটি) যা managed server শুরু, বন্ধ, restart ও মনিটর করে। HA-এর জন্য গুরুত্বপূর্ণ — একটি managed server মারা গেলে Node Manager স্বয়ংক্রিয়ভাবে তা restart করতে পারে। দুই ধরন:
- Plain Node Manager (সুপারিশকৃত): SSL credential দিয়ে authenticate করে
- Domain-Scoped Node Manager: প্রতি-domain কনফিগারেশন
৩.৫ Cluster
একগুচ্ছ managed server (এক বা একাধিক machine জুড়ে) যা একসঙ্গে কাজ করে দেয়:
- Load balancing — আগত request cluster সদস্যদের মধ্যে বণ্টন
- Failover — session replicate করা; একটি সদস্য মারা গেলে অন্যটি তুলে নেয়
- Scalability — বেশি লোড সামলাতে আরও সদস্য যোগ করা
৪. স্ট্যান্ডার্ড WebLogic Topology
একটি সাধারণ প্রোডাকশন deployment:
- ২টি physical সার্ভার (বা availability zone জুড়ে ২টি VM)
- machine 1-এ (বা pillar host) ১টি AdminServer
- প্রতি machine-এ ২টি Managed Server (মোট ৪টি), সবই এক cluster-এ
- প্রতিটি machine-এ Node Manager
- সামনে ট্রাফিক route করা Load Balancer / OHS (Oracle HTTP Server)
- অ্যাপ্লিকেশন ডেটার জন্য পেছনে Oracle Database
৫. একটি WebLogic Domain তৈরি করা
Configuration Wizard বা WLST ব্যবহার করুন। WLST দিয়ে দ্রুত উদাহরণ:
# Run from $MW_HOME/oracle_common/common/bin/wlst.sh
readTemplate('/u01/app/oracle/wls14/wlserver/common/templates/wls/wls.jar')
cd('/Servers/AdminServer')
set('ListenAddress', 'adminhost.company.com')
set('ListenPort', 7001)
cd('/Security/base_domain/User/weblogic')
cmo.setPassword('Welcome1#')
setOption('OverwriteDomain', 'true')
writeDomain('/u01/app/oracle/wls14/user_projects/domains/prod_domain')
closeTemplate()
exit()
৬. JDBC Data Source — ডেটাবেজের জীবনরেখা
WebLogic পারফরম্যান্স সমস্যার ৮০% জন্ম নেয় JDBC connection pool-এ। সেরা চর্চা:
৬.১ Standalone DB-এর জন্য Generic Data Source, RAC-এর জন্য GridLink
Oracle RAC backend-এর জন্য Active GridLink Data Source অপরিহার্য — এরা Oracle Notification Service (ONS) বোঝে, FAN event সামলায় এবং RAC লোড অনুযায়ী connection route করে। RAC-এর জন্য আর multi-pool data source ব্যবহার করবেন না।
৬.২ Connection Pool সাইজিং
- Initial Capacity: 5-10 (0 এড়িয়ে চলুন — প্রথম request connection খরচ বহন করে)
- Maximum Capacity: অ্যাপের চাহিদা অনুযায়ী, সাধারণত প্রতি managed server-এ 50-200
- Statement Cache Size: প্রতি connection-এ 30-50 cached prepared statement
৬.৩ গুরুত্বপূর্ণ সেটিং
- Test Connections On Reserve: প্রোডাকশনের জন্য ON
- Test Frequency: 60 সেকেন্ড (idle connection test)
- Inactive Connection Timeout: 60 সেকেন্ড
- Connection Reserve Timeout: 10 সেকেন্ড
- Test Table Name: SQL ISVALID (Oracle) বা সরল
SELECT 1 FROM DUAL
৭. অ্যাপ্লিকেশন Deploy করা
তিনটি ফরম্যাট:
- WAR — Web Application Archive (servlet, JSP)
- EAR — Enterprise Application Archive (web + EJB module)
- Exploded directory — ডেভেলপমেন্টের জন্য উপযোগী
Console, WLST বা script-এর মাধ্যমে deploy করুন:
connect('weblogic','password','t3://adminhost:7001')
deploy(appName='myapp',
path='/deploy/myapp.ear',
targets='Cluster_Prod',
upload='true',
stageMode='stage')
Production redeployment — zero-downtime অ্যাপ্লিকেশন আপডেটের জন্য side-by-side বা partial redeployment ব্যবহার করুন।
৮. JMS ও Messaging
WebLogic JMS একটি সম্পূর্ণ-বৈশিষ্ট্যযুক্ত messaging সিস্টেম। উপাদান:
- একটি managed server-এ targeted JMS Server
- Persistent Store — JDBC store (RAC-safe) বা file store
- Destination — Queue (point-to-point) বা Topic (publish-subscribe)
- দূরবর্তী JMS server-এ store-and-forward-এর জন্য SAF Agent
- cluster-wide messaging-এর জন্য Distributed Destination
৯. Performance Tuning — আসল নব
৯.১ JVM Tuning
# Production JVM args for managed server (16GB heap)
-Xms16g -Xmx16g
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+ParallelRefProcEnabled
-XX:+DisableExplicitGC
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/u01/dumps
-Xlog:gc*:file=/u01/logs/gc-%t.log:time,uptime,level,tags:filecount=10,filesize=20M
-Djava.net.preferIPv4Stack=true
৯.২ WebLogic-নির্দিষ্ট Tuning
- Self-Tuning Thread Pool: WebLogic-কে thread পরিচালনা করতে দিন — নির্দিষ্ট প্রমাণ না থাকলে আগেভাগে tune করবেন না
- Work Manager priority: কম-অগ্রাধিকারের background কাজ সীমিত করুন
- Native IO Enabled
- Stuck Thread Detection: ডিফল্ট 600s — আগাম সতর্কতার জন্য 300s সেট করুন
- Domain Log Filter: সাধারণ warning-এর কোলাহল কমান
- Production Mode: সবসময় — কখনও প্রোডাকশন dev mode-এ চালাবেন না
৯.৩ সাধারণ Bottleneck
- JDBC pool exhaustion → অ্যাপ কোডে leaked connection
- Stuck thread → ধীর external service-এ blocking call
- OutOfMemoryError → memory leak, ছোট heap, বা PermGen/Metaspace
- Full GC pause → G1GC tuning বা বড় heap-এ যাওয়া
১০. Clustering ও Session Replication
high-availability web অ্যাপ্লিকেশনের জন্য session replication কনফিগার করুন। অপশন:
- In-Memory Replication: প্রতিটি session একটি backup server-এ কপি (ডিফল্ট)। সেরা পারফরম্যান্স।
- JDBC Persistence: session database-এ সংরক্ষিত। পূর্ণ cluster restart টিকে থাকে, ধীর।
- Coherence-based: সব সদস্য জুড়ে distributed cache। সবচেয়ে scalable।
- File-based: local file, কেবল single-machine cluster।
১১. নিরাপত্তা সেরা চর্চা
- ডিফল্ট port বদলান: 7001-এ AdminServer হ্যাকারের চুম্বক — 7901 বা অনুরূপ ব্যবহার করুন
- ইন্টারনেট-মুখী instance-এ Production Console নিষ্ক্রিয় করুন
- AdminConsole ও Node Manager-এর জন্য HTTPS সক্রিয় করুন
- Custom Identity / Custom Trust SSL keystore ব্যবহার করুন
- Authorization Provider-এর মাধ্যমে Role-based access (LDAP/AD ইন্টিগ্রেশন)
- ত্রৈমাসিক Critical Patch Update (CPU) প্রয়োগ করুন — WebLogic CVE ব্যাপকভাবে exploit করা হয়
- Network segmentation: Admin network পাবলিক ট্রাফিক থেকে আলাদা
১২. WLST-এর মাধ্যমে সাধারণ Admin কাজ
# Connect
connect('weblogic','password','t3://adminhost:7001')
# Start/stop managed server
start('ms1','Server')
shutdown('ms1','Server')
# Roll cluster (one at a time)
shutdown('ms1','Server', ignoreSessions='false')
start('ms1','Server')
# Check status
domainRuntime()
cd('ServerRuntimes/ms1')
ls()
print cmo.getState()
# Thread dump
cd('/ServerRuntimes/ms1/JVMRuntime/ms1')
print cmo.getThreadStackTraces()
১৩. মনিটরিং ও ট্রাবলশুটিং
- WLDF (WebLogic Diagnostic Framework): policy + alert সহ অন্তর্নির্মিত মনিটরিং
- Enterprise Manager Cloud Control: একাধিক domain জুড়ে কেন্দ্রীভূত মনিটরিং
- যে log file জানা দরকার: AdminServer.log, ms<n>.log, nodemanager.log, access.log, GC log
- Thread dump:
kill -3 <PID>বা WLST-এর মাধ্যমে — "server hung" সমস্যায় আপনার প্রথম টুল - Heap dump: memory leak-এর জন্য Eclipse MAT দিয়ে বিশ্লেষণ করুন
১৪. WebLogic + Oracle Database = একসঙ্গে ভালো
WebLogic Oracle Database-এর সঙ্গে কথা বলার জন্য বিশেষভাবে তৈরি। মূল ইন্টিগ্রেশন:
- RAC-এর জন্য Active GridLink Data Source (FAN event, runtime LB)
- in-flight transaction failover-এর জন্য Transparent Application Continuity (TAC)
- ব্যর্থ operation replay-এর জন্য Application Continuity (AC)
- distributed caching-এর জন্য Oracle Coherence
- Oracle-এর জন্য tuned JDBC Statement Caching
১৫. WebLogic Patch করা
ত্রৈমাসিক CPU (Critical Patch Update) ও PSU (Patch Set Update)। OPatch-এর মাধ্যমে প্রয়োগ করুন:
cd $ORACLE_HOME/OPatch
./opatch lsinventory
./opatch apply /path/to/patch/12345678
./opatch lsinventory | grep 12345678
binary patch করার আগে সবসময় সব server (Admin + Managed + Node Manager) বন্ধ করুন। আগে non-prod-এ পরীক্ষা করুন।
১৬. প্রোডাকশন সেরা চর্চার সারসংক্ষেপ
- Production mode সক্রিয়। সবসময়।
- নিবেদিত host বা VM-এ AdminServer, বিচ্ছিন্ন network
- cluster-এ managed server, একাধিক machine, load balancer-এর পেছনে
- auto-restart-এর জন্য কনফিগার করা Node Manager
- RAC-এর জন্য JDBC Active GridLink
- GC log + JFR (Java Flight Recorder) সক্রিয়
- OOM-এ heap ও thread dump
- proactive alerting-এর জন্য WLDF policy
- SSL সর্বত্র — Admin Console, Node Manager, inter-server
- ত্রৈমাসিক CPU patching
- ত্রৈমাসিক DR drill
- সাধারণ পরিস্থিতির জন্য ডকুমেন্টেড runbook
শেষ কথা
Oracle WebLogic Server দুই দশকেরও বেশি সময় ধরে যথার্থ কারণেই পছন্দের এন্টারপ্রাইজ Java অ্যাপ্লিকেশন সার্ভার — এটি পরিণত, scalable, নিরাপদ এবং Oracle Database-এর সঙ্গে দৃঢ়ভাবে সংহত। হ্যাঁ, cloud-native জগৎ microservice ও Kubernetes-এর দিকে এগোচ্ছে, কিন্তু transactional, নিয়ন্ত্রিত, mission-critical Java অ্যাপ্লিকেশনের জন্য WebLogic অতুলনীয় থেকে গেছে। WebLogic ভালোভাবে আর্কিটেক্ট ও পরিচালনার দক্ষতা ক্রমেই দুর্লভ — এবং ক্রমেই মূল্যবান।
আপনার প্রতিষ্ঠান যদি WebLogic চালায় — নতুন domain setup, performance tuning, Active GridLink-এর মাধ্যমে RAC ইন্টিগ্রেশন, নিরাপত্তা hardening, সংস্করণ আপগ্রেড, বা একটি একগুঁয়ে প্রোডাকশন সমস্যার ট্রাবলশুটিং যা-ই দরকার হোক — আমি সাহায্য করতে চাই। বাংলাদেশ ও বিশ্বজুড়ে সফটওয়্যার প্রতিষ্ঠান, ব্যাংক, ফার্মা অপারেশন ও ট্রেডিং হাউসের জন্য আমি WebLogic পরিবেশ পরিচালনা করেছি এবং প্রতিটি কাজে গভীর ব্যবহারিক অভিজ্ঞতা নিয়ে আসি।
⚙️ WebLogic Setup বা Support দরকার?
Domain কনফিগারেশন, performance tuning, clustering, RAC ইন্টিগ্রেশন, নিরাপত্তা hardening। ফ্রি পরামর্শ।
তথ্যসূত্র ও আরও পড়ুন
- 📄 Oracle WebLogic Server 14.1.2 — Administration Console Documentation
- 📄 Oracle WebLogic Server Clustering Guide (14.1.2)
- 📄 Oracle WebLogic Server JDBC Data Sources — Configuration Guide
- 📄 Oracle WebLogic Server Performance and Tuning Guide
এই গাইডটি একাধিক ইন্ডাস্ট্রিতে version 10g থেকে 14c পর্যন্ত WebLogic অ্যাডমিনিস্ট্রেশন অভিজ্ঞতা এবং Oracle-এর অফিসিয়াল WebLogic ডকুমেন্টেশনের ওপর ভিত্তি করে।
