Skip to content

cheatsheetz/weblogic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

WebLogic Server Enterprise Platform Cheat Sheet

Comprehensive guide for Oracle WebLogic Server administration, deployment, clustering, monitoring, and security in enterprise environments.


Table of Contents


Domain Administration

Domain Creation & Management

# Create domain using config wizard
$ORACLE_HOME/oracle_common/common/bin/config.sh

# Create domain using WLST (offline)
$ORACLE_HOME/oracle_common/common/bin/wlst.sh

# WLST script for domain creation
wls:/offline> readTemplate('/u01/oracle/wlserver/common/templates/wls/wls.jar')
wls:/offline/base_domain> cd('Servers/AdminServer')
wls:/offline/base_domain/Server/AdminServer> set('ListenAddress','')
wls:/offline/base_domain/Server/AdminServer> set('ListenPort',7001)
wls:/offline/base_domain/Server/AdminServer> cd('/')
wls:/offline/base_domain> cd('Security/base_domain/User/weblogic')
wls:/offline/base_domain/Security/base_domain/User/weblogic> cmo.setPassword('Welcome123')
wls:/offline/base_domain/Security/base_domain/User/weblogic> cd('/')
wls:/offline/base_domain> setOption('DomainName','production_domain')
wls:/offline/base_domain> setOption('JavaHome','/usr/java/jdk1.8.0_271')
wls:/offline/base_domain> setOption('ServerStartMode','prod')
wls:/offline/base_domain> writeDomain('/u01/oracle/user_projects/domains/production_domain')
wls:/offline/base_domain> closeTemplate()
exit()

# Start Admin Server
$DOMAIN_HOME/startWebLogic.sh

# Stop Admin Server
$DOMAIN_HOME/bin/stopWebLogic.sh

WLST (WebLogic Scripting Tool)

Command Description Example
connect() Connect to server connect('weblogic','Welcome123','t3://localhost:7001')
edit() Start edit session edit()
startEdit() Begin configuration changes startEdit()
save() Save changes save()
activate() Activate changes activate()
serverConfig() Switch to ServerConfig MBean tree serverConfig()
domainConfig() Switch to DomainConfig MBean tree domainConfig()

Basic WLST Administration

# Connect to Admin Server
connect('weblogic','Welcome123','t3://localhost:7001')

# Navigate to domain configuration
domainConfig()

# List all servers
cd('/Servers')
ls()

# Get server information
cd('/Servers/AdminServer')
ls()
get('ListenAddress')
get('ListenPort')

# Create managed server
edit()
startEdit()
cd('/')
cmo.createServer('ManagedServer1')
cd('/Servers/ManagedServer1')
cmo.setListenAddress('server1.company.com')
cmo.setListenPort(8001)
save()
activate()

# Start managed server
start('ManagedServer1','Server')

# Stop managed server
shutdown('ManagedServer1','Server')

Server Configuration

Server Startup Configuration

# startWebLogic.sh environment variables
export USER_MEM_ARGS="-Xms2048m -Xmx4096m -XX:+UseG1GC"
export JAVA_OPTIONS="-Dweblogic.Stdout=$DOMAIN_HOME/servers/AdminServer/logs/AdminServer.out"
export JAVA_OPTIONS="$JAVA_OPTIONS -Dweblogic.Stderr=$DOMAIN_HOME/servers/AdminServer/logs/AdminServer_err.out"
export JAVA_OPTIONS="$JAVA_OPTIONS -Dweblogic.management.username=weblogic"
export JAVA_OPTIONS="$JAVA_OPTIONS -Dweblogic.management.password=Welcome123"

# Custom JVM arguments
export JAVA_OPTIONS="$JAVA_OPTIONS -XX:+PrintGCDetails -XX:+PrintGCTimeStamps"
export JAVA_OPTIONS="$JAVA_OPTIONS -Xloggc:$DOMAIN_HOME/servers/AdminServer/logs/gc.log"
export JAVA_OPTIONS="$JAVA_OPTIONS -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10"
export JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.management.jmxremote"
export JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.management.jmxremote.port=9999"
export JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.management.jmxremote.authenticate=false"
export JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.management.jmxremote.ssl=false"

Node Manager Configuration

# Configure Node Manager via WLST
connect('weblogic','Welcome123','t3://localhost:7001')
edit()
startEdit()

# Create machine
cd('/')
cmo.createMachine('Machine1')
cd('/Machines/Machine1')
cmo.setName('Machine1')

# Create Node Manager
cmo.createNodeManager('Machine1')
cd('/Machines/Machine1/NodeManager/Machine1')
cmo.setNMType('SSL')
cmo.setListenAddress('server1.company.com')
cmo.setListenPort(5556)

# Assign server to machine
cd('/Servers/ManagedServer1')
cmo.setMachine(getMBean('/Machines/Machine1'))

save()
activate()

# Start Node Manager
$DOMAIN_HOME/bin/startNodeManager.sh

# Enroll Node Manager
nmConnect('weblogic','Welcome123','server1.company.com','5556','base_domain','/u01/oracle/user_projects/domains/base_domain','SSL')
nmEnroll('/u01/oracle/user_projects/domains/base_domain')

Application Deployment

Console Deployment

# Deploy application using WLST
connect('weblogic','Welcome123','t3://localhost:7001')

# Deploy to AdminServer
deploy('MyApp','/u01/applications/myapp.war','AdminServer')

# Deploy to cluster
deploy('MyApp','/u01/applications/myapp.war','MyCluster')

# Deploy with staging mode
deploy('MyApp','/u01/applications/myapp.war',targets='MyCluster',stageMode='nostage',planPath='/u01/applications/myapp-plan.xml')

# Update application
update('MyApp','/u01/applications/myapp-v2.war',targets='MyCluster')

# Undeploy application
undeploy('MyApp','MyCluster')

# Start application
startApplication('MyApp','MyCluster')

# Stop application
stopApplication('MyApp','MyCluster')

Deployment Descriptors

<!-- weblogic.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
    xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app
    http://xmlns.oracle.com/weblogic/weblogic-web-app/1.9/weblogic-web-app.xsd">
    
    <wls:weblogic-version>12.2.1</wls:weblogic-version>
    <wls:context-root>/myapp</wls:context-root>
    
    <!-- Resource references -->
    <wls:resource-description>
        <wls:res-ref-name>jdbc/MyDataSource</wls:res-ref-name>
        <wls:jndi-name>MyDataSource</wls:jndi-name>
    </wls:resource-description>
    
    <!-- Session descriptor -->
    <wls:session-descriptor>
        <wls:session-param>
            <wls:param-name>TimeoutSecs</wls:param-name>
            <wls:param-value>3600</wls:param-value>
        </wls:session-param>
        <wls:session-param>
            <wls:param-name>InvalidationIntervalSecs</wls:param-name>
            <wls:param-value>60</wls:param-value>
        </wls:session-param>
        <wls:persistent-store-type>replicated</wls:persistent-store-type>
    </wls:session-descriptor>
    
    <!-- Container descriptor -->
    <wls:container-descriptor>
        <wls:show-archived-real-path-enabled>true</wls:show-archived-real-path-enabled>
        <wls:servlet-reload-check-secs>1</wls:servlet-reload-check-secs>
    </wls:container-descriptor>
</wls:weblogic-web-app>

<!-- weblogic-ejb-jar.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-ejb-jar
    xmlns="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar
    http://xmlns.oracle.com/weblogic/weblogic-ejb-jar/1.9/weblogic-ejb-jar.xsd">
    
    <weblogic-enterprise-bean>
        <ejb-name>OrderService</ejb-name>
        <jndi-name>OrderServiceRemote</jndi-name>
        
        <resource-description>
            <res-ref-name>jdbc/OrderDB</res-ref-name>
            <jndi-name>OrderDataSource</jndi-name>
        </resource-description>
        
        <transaction-descriptor>
            <trans-timeout-seconds>300</trans-timeout-seconds>
        </transaction-descriptor>
    </weblogic-enterprise-bean>
</weblogic-ejb-jar>

Clustering & Load Balancing

Cluster Configuration

# Create cluster using WLST
connect('weblogic','Welcome123','t3://localhost:7001')
edit()
startEdit()

# Create cluster
cd('/')
cmo.createCluster('ProductionCluster')
cd('/Clusters/ProductionCluster')
cmo.setClusterMessagingMode('unicast')
cmo.setWeblogicPluginEnabled(true)
cmo.setFrontendHost('loadbalancer.company.com')
cmo.setFrontendHTTPPort(80)
cmo.setFrontendHTTPSPort(443)

# Add servers to cluster
cd('/Servers/ManagedServer1')
cmo.setCluster(getMBean('/Clusters/ProductionCluster'))
cd('/Servers/ManagedServer2')
cmo.setCluster(getMBean('/Clusters/ProductionCluster'))

# Configure cluster addresses for unicast
cd('/Clusters/ProductionCluster')
cmo.setClusterAddress('server1.company.com:7100,server2.company.com:7100')

save()
activate()

HTTP Session Replication

# Configure session replication
connect('weblogic','Welcome123','t3://localhost:7001')
edit()
startEdit()

cd('/Clusters/ProductionCluster')
cmo.setReplicationChannel('ProductionCluster-repl')

# Create replication channel
cd('/')
cmo.createNetworkChannel('ProductionCluster-repl')
cd('/NetworkChannels/ProductionCluster-repl')
cmo.setListenAddress('')
cmo.setListenPort(7100)
cmo.setProtocol('cluster-broadcast')

save()
activate()

Load Balancer Configuration (Apache HTTP Server)

# mod_wl_ohs.conf
LoadModule weblogic_module modules/mod_wl_ohs.so

<IfModule mod_weblogic.c>
    WebLogicCluster server1.company.com:8001,server2.company.com:8001
    MatchExpression /myapp
    
    # Connection parameters
    ConnectTimeoutSecs 10
    ConnectRetrySecs 2
    WLSocketTimeoutSecs 2
    
    # Debug and logging
    Debug ON
    WLLogFile /u01/apache/logs/wlproxy.log
    
    # SSL configuration
    WebLogicSSLPassThrough ON
    RequireSSLHostMatch OFF
</IfModule>

<Location /myapp>
    SetHandler weblogic-handler
    WebLogicCluster server1.company.com:8001,server2.company.com:8001
    DynamicServerList ON
    WLCookieName JSESSIONID
    PathTrim /myapp
</Location>

<Location /console>
    SetHandler weblogic-handler
    WebLogicHost adminserver.company.com
    WebLogicPort 7001
</Location>

Security Configuration

Security Realm Configuration

# Configure security realm
connect('weblogic','Welcome123','t3://localhost:7001')
edit()
startEdit()

# Access default security realm
cd('/SecurityConfiguration/base_domain/Realms/myrealm')

# Configure authentication providers
# LDAP Authentication Provider
cmo.createAuthenticationProvider('MyLDAPProvider','weblogic.security.providers.authentication.LDAPAuthenticator')
cd('/SecurityConfiguration/base_domain/Realms/myrealm/AuthenticationProviders/MyLDAPProvider')
cmo.setControlFlag('SUFFICIENT')
cmo.setHost('ldap.company.com')
cmo.setPort(389)
cmo.setPrincipal('cn=weblogic,ou=people,dc=company,dc=com')
cmo.setCredential('password')
cmo.setUserBaseDN('ou=people,dc=company,dc=com')
cmo.setUserFromNameFilter('(&(cn=%u)(objectclass=person))')
cmo.setUserNameAttribute('cn')
cmo.setGroupBaseDN('ou=groups,dc=company,dc=com')
cmo.setGroupFromNameFilter('(&(cn=%g)(objectclass=groupofnames))')
cmo.setGroupMembershipSearching('limited')

save()
activate()

SSL Configuration

# Configure SSL
connect('weblogic','Welcome123','t3://localhost:7001')
edit()
startEdit()

# Create key store
cd('/Servers/AdminServer')
create('AdminServer','SSL')
cd('/Servers/AdminServer/SSL/AdminServer')
cmo.setEnabled(true)
cmo.setListenPort(7002)
cmo.setKeystores('CustomIdentityAndCustomTrust')
cmo.setCustomIdentityKeyStoreFileName('/u01/ssl/identity.jks')
cmo.setCustomIdentityKeyStorePassPhrase('changeit')
cmo.setCustomIdentityKeyStoreType('JKS')
cmo.setCustomTrustKeyStoreFileName('/u01/ssl/trust.jks')
cmo.setCustomTrustKeyStorePassPhrase('changeit')
cmo.setCustomTrustKeyStoreType('JKS')
cmo.setServerPrivateKeyAlias('weblogic')
cmo.setServerPrivateKeyPassPhrase('changeit')

save()
activate()

# Restart server to apply SSL configuration

Role-Based Security

<!-- web.xml security configuration -->
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Admin Area</web-resource-name>
        <url-pattern>/admin/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>Administrators</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
        <form-login-page>/login.jsp</form-login-page>
        <form-error-page>/login-error.jsp</form-error-page>
    </form-login-config>
</login-config>

<security-role>
    <role-name>Administrators</role-name>
</security-role>

Database Connectivity

Data Source Configuration

# Create data source using WLST
connect('weblogic','Welcome123','t3://localhost:7001')
edit()
startEdit()

# Create data source
cd('/')
cmo.createJDBCSystemResource('MyDataSource')
cd('/JDBCSystemResources/MyDataSource/JDBCResource/MyDataSource')
cmo.setName('MyDataSource')

# Configure data source properties
cd('/JDBCSystemResources/MyDataSource/JDBCResource/MyDataSource/JDBCDataSourceParams/MyDataSource')
cmo.setJNDINames(jarray.array([String('jdbc/MyDataSource')], String))
cmo.setGlobalTransactionsProtocol('TwoPhaseCommit')

cd('/JDBCSystemResources/MyDataSource/JDBCResource/MyDataSource/JDBCDriverParams/MyDataSource')
cmo.setUrl('jdbc:oracle:thin:@dbserver.company.com:1521:XE')
cmo.setDriverName('oracle.jdbc.OracleDriver')
cmo.setPassword('password')

cd('/JDBCSystemResources/MyDataSource/JDBCResource/MyDataSource/JDBCDriverParams/MyDataSource/Properties/MyDataSource')
cmo.createProperty('user')
cd('/JDBCSystemResources/MyDataSource/JDBCResource/MyDataSource/JDBCDriverParams/MyDataSource/Properties/MyDataSource/Properties/user')
cmo.setValue('dbuser')

# Configure connection pool
cd('/JDBCSystemResources/MyDataSource/JDBCResource/MyDataSource/JDBCConnectionPoolParams/MyDataSource')
cmo.setInitialCapacity(5)
cmo.setMaxCapacity(50)
cmo.setMinCapacity(5)
cmo.setConnectionCreationRetryFrequencySeconds(10)
cmo.setTestConnectionsOnReserve(true)
cmo.setTestTableName('SQL SELECT 1 FROM DUAL')

# Target data source to cluster
cd('/JDBCSystemResources/MyDataSource')
set('Targets',jarray.array([ObjectName('com.bea:Name=ProductionCluster,Type=Cluster')], ObjectName))

save()
activate()

Multi Data Source (RAC Configuration)

# Configure Multi Data Source for Oracle RAC
connect('weblogic','Welcome123','t3://localhost:7001')
edit()
startEdit()

# Create individual data sources for RAC instances
cd('/')
cmo.createJDBCSystemResource('RACDataSource1')
cd('/JDBCSystemResources/RACDataSource1/JDBCResource/RACDataSource1')

cd('/JDBCSystemResources/RACDataSource1/JDBCResource/RACDataSource1/JDBCDataSourceParams/RACDataSource1')
cmo.setJNDINames(jarray.array([String('jdbc/RACDataSource1')], String))

cd('/JDBCSystemResources/RACDataSource1/JDBCResource/RACDataSource1/JDBCDriverParams/RACDataSource1')
cmo.setUrl('jdbc:oracle:thin:@racnode1.company.com:1521:RACDB')
cmo.setDriverName('oracle.jdbc.OracleDriver')

# Create Multi Data Source
cmo.createJDBCSystemResource('MultiDataSource')
cd('/JDBCSystemResources/MultiDataSource/JDBCResource/MultiDataSource')

cd('/JDBCSystemResources/MultiDataSource/JDBCResource/MultiDataSource/JDBCDataSourceParams/MultiDataSource')
cmo.setJNDINames(jarray.array([String('jdbc/MultiDataSource')], String))
cmo.setDataSourceList(jarray.array([String('RACDataSource1'), String('RACDataSource2')], String))
cmo.setFailoverRequestIfBusy(true)
cmo.setAlgorithmType('Load-Balancing')

save()
activate()

JMS Configuration

JMS Server and Modules

# Create JMS Server
connect('weblogic','Welcome123','t3://localhost:7001')
edit()
startEdit()

# Create persistent store
cd('/')
cmo.createFileStore('MyFileStore')
cd('/FileStores/MyFileStore')
cmo.setDirectory('/u01/jmsstore')
set('Targets',jarray.array([ObjectName('com.bea:Name=AdminServer,Type=Server')], ObjectName))

# Create JMS Server
cd('/')
cmo.createJMSServer('MyJMSServer')
cd('/JMSServers/MyJMSServer')
cmo.setPersistentStore(getMBean('/FileStores/MyFileStore'))
set('Targets',jarray.array([ObjectName('com.bea:Name=AdminServer,Type=Server')], ObjectName))

# Create JMS Module
cd('/')
cmo.createJMSSystemResource('MyJMSModule')
cd('/JMSSystemResources/MyJMSModule')
set('Targets',jarray.array([ObjectName('com.bea:Name=AdminServer,Type=Server')], ObjectName))

# Create Connection Factory
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule')
cmo.createConnectionFactory('MyConnectionFactory')
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/ConnectionFactories/MyConnectionFactory')
cmo.setJNDIName('jms/MyConnectionFactory')
cmo.setDefaultTargetingEnabled(true)

# Create Queue
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule')
cmo.createQueue('MyQueue')
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/Queues/MyQueue')
cmo.setJNDIName('jms/MyQueue')
cmo.setSubDeploymentName('MySubDeployment')

# Create Sub Deployment
cd('/JMSSystemResources/MyJMSModule')
cmo.createSubDeployment('MySubDeployment')
cd('/JMSSystemResources/MyJMSModule/SubDeployments/MySubDeployment')
set('Targets',jarray.array([ObjectName('com.bea:Name=MyJMSServer,Type=JMSServer')], ObjectName))

save()
activate()

JMS Clustering

# Configure JMS clustering
connect('weblogic','Welcome123','t3://localhost:7001')
edit()
startEdit()

# Create distributed queue
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule')
cmo.createUniformDistributedQueue('MyDistributedQueue')
cd('/JMSSystemResources/MyJMSModule/JMSResource/MyJMSModule/UniformDistributedQueues/MyDistributedQueue')
cmo.setJNDIName('jms/MyDistributedQueue')
cmo.setDefaultTargetingEnabled(true)
cmo.setLoadBalancingPolicy('Round-Robin')
cmo.setForwardDelay(-1)

save()
activate()

Performance Tuning

JVM Optimization

# Set JVM parameters for production
export USER_MEM_ARGS="-Xms4096m -Xmx8192m"
export USER_MEM_ARGS="$USER_MEM_ARGS -XX:NewRatio=3"
export USER_MEM_ARGS="$USER_MEM_ARGS -XX:+UseG1GC"
export USER_MEM_ARGS="$USER_MEM_ARGS -XX:MaxGCPauseMillis=200"
export USER_MEM_ARGS="$USER_MEM_ARGS -XX:+UseStringDeduplication"
export USER_MEM_ARGS="$USER_MEM_ARGS -XX:+PrintGC"
export USER_MEM_ARGS="$USER_MEM_ARGS -XX:+PrintGCDetails"
export USER_MEM_ARGS="$USER_MEM_ARGS -XX:+PrintGCTimeStamps"
export USER_MEM_ARGS="$USER_MEM_ARGS -Xloggc:$DOMAIN_HOME/servers/AdminServer/logs/gc.log"

# WebLogic-specific tuning
export JAVA_OPTIONS="$JAVA_OPTIONS -Dweblogic.threadpool.MinPoolSize=25"
export JAVA_OPTIONS="$JAVA_OPTIONS -Dweblogic.threadpool.MaxPoolSize=400"
export JAVA_OPTIONS="$JAVA_OPTIONS -Dweblogic.kernel.default.ExecuteThreadCount=400"

Work Manager Configuration

# Configure Work Managers
connect('weblogic','Welcome123','t3://localhost:7001')
edit()
startEdit()

# Create Work Manager constraints
cd('/')
cmo.createMinThreadsConstraint('MinThreadsConstraint-0')
cd('/MinThreadsConstraints/MinThreadsConstraint-0')
cmo.setName('MinThreadsConstraint-0')
cmo.setCount(5)
set('Targets',jarray.array([ObjectName('com.bea:Name=ProductionCluster,Type=Cluster')], ObjectName))

cd('/')
cmo.createMaxThreadsConstraint('MaxThreadsConstraint-0')
cd('/MaxThreadsConstraints/MaxThreadsConstraint-0')
cmo.setName('MaxThreadsConstraint-0')
cmo.setCount(20)
set('Targets',jarray.array([ObjectName('com.bea:Name=ProductionCluster,Type=Cluster')], ObjectName))

# Create Work Manager
cd('/')
cmo.createWorkManager('CriticalWorkManager')
cd('/WorkManagers/CriticalWorkManager')
cmo.setName('CriticalWorkManager')
cmo.setMinThreadsConstraint(getMBean('/MinThreadsConstraints/MinThreadsConstraint-0'))
cmo.setMaxThreadsConstraint(getMBean('/MaxThreadsConstraints/MaxThreadsConstraint-0'))
set('Targets',jarray.array([ObjectName('com.bea:Name=ProductionCluster,Type=Cluster')], ObjectName))

save()
activate()

Monitoring & Diagnostics

JMX Monitoring

# Enable JMX monitoring via WLST
connect('weblogic','Welcome123','t3://localhost:7001')

# Get server runtime information
serverRuntime()
cd('/ServerRuntimes/AdminServer')
ls()

# Get JVM runtime statistics
cd('/ServerRuntimes/AdminServer/JVMRuntime/AdminServer')
print 'Heap Size Current: ' + str(get('HeapSizeCurrent'))
print 'Heap Free Current: ' + str(get('HeapFreeCurrent'))
print 'Heap Size Max: ' + str(get('HeapSizeMax'))

# Get thread pool statistics
cd('/ServerRuntimes/AdminServer/ThreadPoolRuntime/ThreadPoolRuntime')
print 'Execute Thread Total Count: ' + str(get('ExecuteThreadTotalCount'))
print 'Execute Thread Idle Count: ' + str(get('ExecuteThreadIdleCount'))
print 'Standby Thread Count: ' + str(get('StandbyThreadCount'))

# Get application runtime information
cd('/ServerRuntimes/AdminServer/ApplicationRuntimes')
ls()

WLDF (WebLogic Diagnostic Framework)

# Configure WLDF
connect('weblogic','Welcome123','t3://localhost:7001')
edit()
startEdit()

# Create WLDF system resource
cd('/')
cmo.createWLDFSystemResource('MyDiagnosticModule')
cd('/WLDFSystemResources/MyDiagnosticModule')
set('Targets',jarray.array([ObjectName('com.bea:Name=ProductionCluster,Type=Cluster')], ObjectName))

# Configure harvester
cd('/WLDFSystemResources/MyDiagnosticModule/WLDFResource/MyDiagnosticModule')
cmo.createHarvester('MyHarvester')
cd('/WLDFSystemResources/MyDiagnosticModule/WLDFResource/MyDiagnosticModule/Harvester/MyHarvester')
cmo.setEnabled(true)
cmo.setSamplePeriod(300000)  # 5 minutes

# Add harvested types
cmo.createHarvestedType('weblogic.management.runtime.JVMRuntimeMBean')
cd('/WLDFSystemResources/MyDiagnosticModule/WLDFResource/MyDiagnosticModule/Harvester/MyHarvester/HarvestedTypes/weblogic.management.runtime.JVMRuntimeMBean')
cmo.setEnabled(true)
cmo.setHarvestedAttributes(jarray.array(['HeapSizeCurrent', 'HeapFreeCurrent'], String))

save()
activate()

Log Configuration

# Configure logging
connect('weblogic','Welcome123','t3://localhost:7001')
edit()
startEdit()

cd('/Servers/AdminServer/Log/AdminServer')
cmo.setFileName('/u01/logs/AdminServer.log')
cmo.setRotationType('byTime')
cmo.setFileTimeSpan(24)
cmo.setFileTimeSpanFactor(3600000)  # 1 hour in milliseconds
cmo.setNumberOfFilesLimited(true)
cmo.setFileCount(7)
cmo.setLogFileSeverity('Info')
cmo.setStdoutSeverity('Error')

save()
activate()

Troubleshooting

Common Issues & Solutions

Issue Symptoms Solution
OutOfMemoryError Server crashes, heap dumps Increase heap size, analyze memory leaks
Cannot connect to AdminServer Connection refused Check server status, firewall, listen address
Application deployment fails ClassNotFoundException Verify classpath, library references
DataSource connection errors Database connectivity issues Check connection pool settings, database availability
Cluster communication failure Session replication issues Verify multicast settings, network connectivity

Memory Analysis

# Generate heap dump
kill -3 <weblogic_pid>

# Configure automatic heap dump
export JAVA_OPTIONS="$JAVA_OPTIONS -XX:+HeapDumpOnOutOfMemoryError"
export JAVA_OPTIONS="$JAVA_OPTIONS -XX:HeapDumpPath=$DOMAIN_HOME/servers/AdminServer/logs/"

# Analyze memory usage via WLST
wlst.sh
connect('weblogic','Welcome123','t3://localhost:7001')
serverRuntime()
cd('/ServerRuntimes/AdminServer/JVMRuntime/AdminServer')
print 'Memory usage: ' + str((get('HeapSizeCurrent') - get('HeapFreeCurrent')) * 100 / get('HeapSizeCurrent')) + '%'

Thread Analysis

# Analyze thread dumps via WLST
connect('weblogic','Welcome123','t3://localhost:7001')
serverRuntime()

# Get thread dump
cd('/ServerRuntimes/AdminServer/ThreadPoolRuntime/ThreadPoolRuntime')
threadDump = get('ThreadStackDump')
print threadDump

# Monitor execute threads
print 'Total threads: ' + str(get('ExecuteThreadTotalCount'))
print 'Idle threads: ' + str(get('ExecuteThreadIdleCount'))
print 'Hogging threads: ' + str(get('HoggingThreadCount'))

Network Diagnostics

# Check WebLogic ports
netstat -tlnp | grep java
ss -tlnp | grep java

# Test connectivity
telnet localhost 7001
curl -I http://localhost:7001/console/

# Check cluster communication (multicast)
java weblogic.cluster.MulticastTest -N <mcast_addr> -P <mcast_port>

Performance Monitoring

# Performance monitoring script
connect('weblogic','Welcome123','t3://localhost:7001')
serverRuntime()

while True:
    # JVM stats
    cd('/ServerRuntimes/AdminServer/JVMRuntime/AdminServer')
    heapUsed = (get('HeapSizeCurrent') - get('HeapFreeCurrent')) / 1024 / 1024
    heapMax = get('HeapSizeMax') / 1024 / 1024
    heapPct = (heapUsed * 100) / heapMax
    
    # Thread stats
    cd('/ServerRuntimes/AdminServer/ThreadPoolRuntime/ThreadPoolRuntime')
    totalThreads = get('ExecuteThreadTotalCount')
    idleThreads = get('ExecuteThreadIdleCount')
    activeThreads = totalThreads - idleThreads
    
    print 'Heap: %d MB (%.1f%%), Active Threads: %d' % (heapUsed, heapPct, activeThreads)
    
    java.lang.Thread.sleep(5000)  # Wait 5 seconds

Resources


Enterprise WebLogic Server cheat sheet compiled for production environments. Contributions welcome!

About

Repo for weblogic

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published