2. • The Future Group
–TFG is a strong ICT entrepreneurs collective,
consisting of several partnerships. The largest
network of exclusively linked independent experts in
the Netherlands. Consists of 9 different collectives
each with its own specific knowledge area.
• Peter van Nes
– Partner within TFG and focussed on Oracle
technologies. Main expertise on Oracle middleware
(SOA, IDM, Weblogic, FMW) and Java.
2
ABOUT
3. • Rebrand
– Match Weblogic Console to the Corporate Identity
• Differentiate
– Dynamically adjust Look And Feel (LAF) to
environment (DTAP)
– Adjust Look And Feel to WL Role
• Extending with new functionality
3
REASONS TO CUSTOMIZE
4. • Extension point
–Location in Admin Console where content can be
replaced or added
• UI Control
–Has a unique label
–Each labeled UI Control is an Extension point
4
EXTENSION POINTS
5. • Provided by WebLogic Portal framework
– Supports (limited) extension of Weblogic Console
– No support for
• personalization (although we will see otherwise)
• interaction management
• content management
• etc.
5
WEBLOGIC CONSOLE
6. • Extensions are safe!
• Can be enabled/disabled anytime
– Preferences > Extensions
• Are merged with console.app in-memory
6
WEBLOGIC CONSOLE
7. – Open Preferences
– Tab extensions
– Select Show
Definition Labels
SHOW UI CONTROL LABELS
7
EXTENSION POINTS
8. – Open Preferences
– Tab extensions
– Select Show
Definition Labels
SHOW UI CONTROL LABELS
7
EXTENSION POINTS
9. – Open Preferences
– Tab extensions
– Select Show
Definition Labels
SHOW UI CONTROL LABELS
7
EXTENSION POINTS
10. – Open Preferences
– Tab extensions
– Select Show
Definition Labels
SHOW UI CONTROL LABELS
7
EXTENSION POINTS
14. 8
UI CONTROL HIERARCHY
DESKTOP
– top level UI hierarchy
DESKTOP
LOOK AND FEEL
– images
– CSS
– XML files
LOOK AND FEEL
BOOK
– pages
– books
– menu control
BOOK
19. • Start with laftemplate.zip
– located at
${wl.home}/server/lib/console-ext/templates/
– Specific for a Weblogic version
– Initial set of Look and Feel files
– Extract to working directory
• Create netuix-extension.xml
– Copy to WEB-INF folder
– Modify netuix-extension.xml
– Oracle published version is incorrect!
9
BUILDING A NEW LOOK AND FEEL
.
├── css
├── errors
├── framework
├── images
├── javascript
├── layouts
├── login
└── WEB-INF
LAFTEMPLATE
20. • netuix-extension.xml
• Modify provider-info elements
• title
• version
• description
• author
• support-url
• All optional, not influencing functionality
10
BUILDING A NEW LOOK AND FEEL
<provider-info>
<title>Reddipped 11g LAF</title>
<version>1.0</version>
<description>A customized look and feel for WLS 11g Weblogic Console</description>
<author>Peter van Nes</author>
<support-url>http://www.reddipped.com/</support-url>
</provider-info>
21. • netuix-extension.xml
• Modify desktop-extension elements
• attribute title, skin and attribute
• value same as extension name and war-file
• attribute definitionLabel and markupName
• Any value, not used
11
BUILDING A NEW LOOK AND FEEL
<desktop-extension>
<look-and-feel-content title="MyFirstLAF"
definitionLabel="MyFirstLAF"
markupName="myLookAndFeel"
skin="MyFirstLAF"
skin-path="framework/skins"
skeleton="MyFirstLAF"
skeleton-path="framework/skeletons"
default-window-icon="window-icon.gif"
default-window-icon-path="images/"/>
</desktop-extension>
22. 12
BUILDING A NEW LOOK AND FEEL
• Compile jsp files
• Create tmp folder
• Copy from ${wl_home}/server/lib/consoleapp/
webapp
• .jar, .tld, .jsp files and web.xml
• Keep directory structure from laf working
directory!
• Copy from working directory
• .jsp files and .java classes (optional)
.
├── errors
├── framework
│ ├── features
│ └── skeletons
│ ├── default
│ │ └── wlsworkspace
│ └── MyFirstLAF
├── layouts
├── login
└── WEB-INF
└── lib
JSP COMPILE DIR
23. 13
BUILDING A NEW LOOK AND FEEL
• Setup classpath, all jars in
• ${wl.home}/server/lib
• ${wl.home}/server/lib/consoleapp/APP-INF/lib
• ${wl.home}/server/lib/consoleapp/webapp/WEB-
INF/lib
.
├── errors
├── framework
│ ├── features
│ └── skeletons
│ ├── default
│ │ └── wlsworkspace
│ └── MyFirstLAF
├── layouts
├── login
└── WEB-INF
└── lib
JSP COMPILE DIR
24. 14
BUILDING A NEW LOOK AND FEEL
• Compile jsp files
• Execute wlappc
• wlappc source="{tmpdir}"
keepgenerated="true" classPath=“{classpath}”
• Copy compiled classes to laf working directory
• Create Look And Feel WAR
• jar -cf {laf name} {laf working dir}
.
├── errors
├── framework
│ ├── features
│ └── skeletons
├── layouts
├── login
└── WEB-INF
├── classes
│ └── jsp_ext
└── lib
JSP COMPILE DIR
.
├── css
├── errors
├── framework
├── images
├── javascript
├── layouts
├── login
└── WEB-INF
└── classes
└── jsp_ext
LAF WORKING DIR
25. 15
BUILDING A NEW LOOK AND FEEL
• build.laf.xml
• Ant build file to build look and feel war-file
• Contains all necessary targets to build and compile
• targets
• laf.project.initialize
• laf.build
• laf.deploy
• other supporting targets
.
├── errors
├── framework
│ ├── features
│ └── skeletons
├── layouts
├── login
└── WEB-INF
├── classes
│ └── jsp_ext
└── lib
JSP COMPILE DIR
.
├── css
├── errors
├── framework
├── images
├── javascript
├── layouts
├── login
└── WEB-INF
└── classes
└── jsp_ext
LAF WORKING DIR
26. • Setup Weblogic Domain
• Configure Netbeans
• Setup Look And Feel Project
• Customize Look And Feel
• Deploy and Test customization
16
LAB 1
27. • Learn from the code
• Dynamic HTML
– Java Server Pages (JSP)
– Java Standard Tag Library (JSTL)
– Javascript
• JD-GUI is your friend!
17
MORE COMPLEX CUSTOMIZATIONS
28. 18
MORE COMPLEX CUSTOMIZATIONS
• Goal: Dynamic LAF based on environment
• Recognize environment based on domain name
• Dynamic color LAF login page border
• Dynamic toolbar color
29. 18
MORE COMPLEX CUSTOMIZATIONS
• Goal: Dynamic LAF based on environment
• Recognize environment based on domain name
• Dynamic color LAF login page border
• Dynamic toolbar color
30. • How to get the domain name ?
• Explore MBeanUtils
– Imported with import attribute in page directive of
LoginForm.jsp
– Find jar with ‘grep -Ri “com/bea/console/utils/
MBeanUtils” *’.
19
MORE COMPLEX CUSTOMIZATIONS
31. • Use JD GUI to decompile console.jar
• Expand MBeanUtils class to show all methods
• getDomainName
• Returns String containing domain name
• getDomainRuntimeMBeanServerConnection
• Returns MBeanServerConnection
• Enables you to access Runtime MBeans
• MBean Reference
• Weblogic Server MBean Reference
20
MORE COMPLEX CUSTOMIZATIONS
32. • WL Server contains MBeans to
configure, monitor and manage
Weblogic Server resources
• Attributes
– Set / Read values
• Operations
– Execute actions
21
MBEANS AND JMX
33. • Organized into
– Runtime MBeans
•Info about runtime state of server and resource
•Non persistent, volatile
– Configuration Means
• Representation of config xml files
• Accessed through JMX (Java Management Extension)
22
MBEANS AND JMX
34. • Registered in an MBean server
– Domain Runtime MBean Server
•Domain-wide services
– Runtime MBean Server
•Service instance
23
MBEANS AND JMX
35. • Lab 2
– Retrieve domain name
– Make login page border color dependent on
domain name
– Domain name convention [DTAP]_{domain name}
•Test domain : T_MyDomain
•Production domain : P_MyDomain
– Make toolbar color depend on domain name
• Lab 3
– Using MBeans
– List Managed Servers and state on login page
24
LAB 2 & 3
82. 34
ADDING NODES TO DOMAINSTRUCTURE
• Add backingFile attribute
•Java backing class name
•Added to Book or Page
• Create backing Class
•Initialized by backingFile
attribute
•Passes pagebacking
context and page URL
STEPS
83.
BOOK FILE
<netuix:page markupName="page" markupType=“Page"
definitionLabel="DomainDemoPage1"
title="Demo Tab 1"
presentationClass=“page-content"
backingFile=“com.reddipped.DemoNavTreeExtension">
<netuix:meta name="skeleton-resource-bundle"
content=“Bundle"/>
<netuix:content>
…
35
ADDING NODES TO DOMAINSTRUCTURE
com.reddipped.DemoNavTreeExtension
public NavTreeExtensionEvent getTreeExtension(PageBackingContext ppCtx, String extensionUrl
PageBackingContext
markupName
markupType
title
definitionLabel
String
http://localhost:7002/console/console.portal?_nfpb=true&_pageLabel=DomainDemoPage1
NavTreePortlet
84.
BOOK FILE
<netuix:page markupName="page" markupType=“Page"
definitionLabel="DomainDemoPage1"
title="Demo Tab 1"
presentationClass=“page-content"
backingFile=“com.reddipped.DemoNavTreeExtension">
<netuix:meta name="skeleton-resource-bundle"
content=“Bundle"/>
<netuix:content>
…
35
ADDING NODES TO DOMAINSTRUCTURE
com.reddipped.DemoNavTreeExtension
public NavTreeExtensionEvent getTreeExtension(PageBackingContext ppCtx, String extensionUrl
PageBackingContext
markupName
markupType
title
definitionLabel
String
http://localhost:7002/console/console.portal?_nfpb=true&_pageLabel=DomainDemoPage1
NavTreePortlet
85.
BOOK FILE
<netuix:page markupName="page" markupType=“Page"
definitionLabel="DomainDemoPage1"
title="Demo Tab 1"
presentationClass=“page-content"
backingFile=“com.reddipped.DemoNavTreeExtension">
<netuix:meta name="skeleton-resource-bundle"
content=“Bundle"/>
<netuix:content>
…
35
ADDING NODES TO DOMAINSTRUCTURE
com.reddipped.DemoNavTreeExtension
public NavTreeExtensionEvent getTreeExtension(PageBackingContext ppCtx, String extensionUrl
PageBackingContext
markupName
markupType
title
definitionLabel
String
http://localhost:7002/console/console.portal?_nfpb=true&_pageLabel=DomainDemoPage1
NavTreePortlet
86.
BOOK FILE
<netuix:page markupName="page" markupType=“Page"
definitionLabel="DomainDemoPage1"
title="Demo Tab 1"
presentationClass=“page-content"
backingFile=“com.reddipped.DemoNavTreeExtension">
<netuix:meta name="skeleton-resource-bundle"
content=“Bundle"/>
<netuix:content>
…
35
ADDING NODES TO DOMAINSTRUCTURE
com.reddipped.DemoNavTreeExtension
public NavTreeExtensionEvent getTreeExtension(PageBackingContext ppCtx, String extensionUrl
PageBackingContext
markupName
markupType
title
definitionLabel
String
http://localhost:7002/console/console.portal?_nfpb=true&_pageLabel=DomainDemoPage1
NavTreePortlet
87. public class DemoNavTreeExtension extends NavTreeExtensionBacking {
public NavTreeExtensionEvent getTreeExtension(PageBackingContext ppCtx,
String extensionUrl){
// Construct the first TreeNode
TreeNode firstLevelNode = new TreeNode("myFirstLevelNode","Demo","") ;
// Add the Page as a child node to the first node
// based on backing context
TreeNode secondLevelNode1 = new TreeNode(ppCtx.getDefinitionLabel(),
ppCtx.getTitle(),extensionUrl,firstLevelNode);
// Add TreeExtension to root of DomainStructure
NavTreeExtensionEvent evt =
new NavTreeExtensionEvent(“/",firstLevelNode,
NavTreeExtensionEvent.APPEND_ACTION);
36
ADDING NODES TO DOMAINSTRUCTURE
88. public class DemoNavTreeExtension extends NavTreeExtensionBacking {
public NavTreeExtensionEvent getTreeExtension(PageBackingContext ppCtx,
String extensionUrl){
// Construct the first TreeNode
TreeNode firstLevelNode = new TreeNode("myFirstLevelNode","Demo","") ;
// Add the Page as a child node to the first node
// based on backing context
TreeNode secondLevelNode1 = new TreeNode(ppCtx.getDefinitionLabel(),
ppCtx.getTitle(),extensionUrl,firstLevelNode);
// Add TreeExtension to root of DomainStructure
NavTreeExtensionEvent evt =
new NavTreeExtensionEvent(“/",firstLevelNode,
NavTreeExtensionEvent.APPEND_ACTION);
36
ADDING NODES TO DOMAINSTRUCTURE
89. public class DemoNavTreeExtension extends NavTreeExtensionBacking {
public NavTreeExtensionEvent getTreeExtension(PageBackingContext ppCtx,
String extensionUrl){
// Construct the first TreeNode
TreeNode firstLevelNode = new TreeNode("myFirstLevelNode","Demo","") ;
// Add the Page as a child node to the first node
// based on backing context
TreeNode secondLevelNode1 = new TreeNode(ppCtx.getDefinitionLabel(),
ppCtx.getTitle(),extensionUrl,firstLevelNode);
// Add TreeExtension to root of DomainStructure
NavTreeExtensionEvent evt =
new NavTreeExtensionEvent(“/",firstLevelNode,
NavTreeExtensionEvent.APPEND_ACTION);
36
ADDING NODES TO DOMAINSTRUCTURE
90. public class DemoNavTreeExtension extends NavTreeExtensionBacking {
public NavTreeExtensionEvent getTreeExtension(PageBackingContext ppCtx,
String extensionUrl){
// Construct the first TreeNode
TreeNode firstLevelNode = new TreeNode("myFirstLevelNode","Demo","") ;
// Add the Page as a child node to the first node
// based on backing context
TreeNode secondLevelNode1 = new TreeNode(ppCtx.getDefinitionLabel(),
ppCtx.getTitle(),extensionUrl,firstLevelNode);
// Add TreeExtension to root of DomainStructure
NavTreeExtensionEvent evt =
new NavTreeExtensionEvent(“/",firstLevelNode,
NavTreeExtensionEvent.APPEND_ACTION);
36
ADDING NODES TO DOMAINSTRUCTURE
91. public class DemoNavTreeExtension extends NavTreeExtensionBacking {
public NavTreeExtensionEvent getTreeExtension(PageBackingContext ppCtx,
String extensionUrl){
// Construct the first TreeNode
TreeNode firstLevelNode = new TreeNode("myFirstLevelNode","Demo","") ;
// Add the Page as a child node to the first node
// based on backing context
TreeNode secondLevelNode1 = new TreeNode(ppCtx.getDefinitionLabel(),
ppCtx.getTitle(),extensionUrl,firstLevelNode);
// Add TreeExtension to root of DomainStructure
NavTreeExtensionEvent evt =
new NavTreeExtensionEvent(“/",firstLevelNode,
NavTreeExtensionEvent.APPEND_ACTION);
36
ADDING NODES TO DOMAINSTRUCTURE
92. 36
ADDING NODES TO DOMAINSTRUCTURE
public class DemoNavTreeExtension extends NavTreeExtensionBacking {
public NavTreeExtensionEvent getTreeExtension(PageBackingContext ppCtx,
String extensionUrl){
// Construct the first TreeNode
TreeNode firstLevelNode = new TreeNode("myFirstLevelNode","Demo","") ;
// Add the Page as a child node to the first node
// based on backing context
TreeNode secondLevelNode1 = new TreeNode(ppCtx.getDefinitionLabel(),
ppCtx.getTitle(),extensionUrl,firstLevelNode);
// Add TreeExtension to root of DomainStructure
NavTreeExtensionEvent evt =
new NavTreeExtensionEvent(“/Environment",firstLevelNode,
NavTreeExtensionEvent.APPEND_ACTION);
93. public class DemoNavTreeExtension extends NavTreeExtensionBacking {
public NavTreeExtensionEvent getTreeExtension(PageBackingContext ppCtx,
String extensionUrl){
// Construct the first TreeNode
TreeNode firstLevelNode = new TreeNode("myFirstLevelNode","Demo","") ;
// Add the Page as a child node to the first node
// based on backing context
TreeNode secondLevelNode1 = new TreeNode(ppCtx.getDefinitionLabel(),
ppCtx.getTitle(),extensionUrl,firstLevelNode);
// Add additional pages using a hardcoded definitionLabel, title and url
TreeNode secondLevelNode2 = new TreeNode(“domainDemoSubPage2_1",
"Demo Sub Tab 1","/console/console.portal?
_nfpb=true&_pageLabel=domainDemoSubPage2_1",firstLevelNode);
TreeNode secondLevelNode3 = new TreeNode("domainDemoSubPage2_2",
"Demo Sub Tab 2”,"/console/console.portal?
_nfpb=true&_pageLabel=domainDemoSubPage2_2",firstLevelNode
37
ADDING NODES TO DOMAINSTRUCTURE
94. public class DemoNavTreeExtension extends NavTreeExtensionBacking {
public NavTreeExtensionEvent getTreeExtension(PageBackingContext ppCtx,
String extensionUrl){
// Construct the first TreeNode
TreeNode firstLevelNode = new TreeNode("myFirstLevelNode","Demo","") ;
// Add the Page as a child node to the first node
// based on backing context
TreeNode secondLevelNode1 = new TreeNode(ppCtx.getDefinitionLabel(),
ppCtx.getTitle(),extensionUrl,firstLevelNode);
// Add additional pages using a hardcoded definitionLabel, title and url
TreeNode secondLevelNode2 = new TreeNode(“domainDemoSubPage2_1",
"Demo Sub Tab 1","/console/console.portal?
_nfpb=true&_pageLabel=domainDemoSubPage2_1",firstLevelNode);
TreeNode secondLevelNode3 = new TreeNode("domainDemoSubPage2_2",
"Demo Sub Tab 2”,"/console/console.portal?
_nfpb=true&_pageLabel=domainDemoSubPage2_2",firstLevelNode
37
ADDING NODES TO DOMAINSTRUCTURE
95. NavTreeExtensionEvent evt = new NavTreeExtensionEvent(“/Environment”,
firstLevelNode,
NavTreeExtensionEvent.INSERT_ACTION);
NavTreeExtensionEvent evt = new NavTreeExtensionEvent(“/Environmet”,
firstLevelNode,
NavTreeExtensionEvent.APPEND_ACTION);
NavTreeExtensionEvent evt = new NavTreeExtensionEvent(“/Environment”,
firstLevelNode,
NavTreeExtensionEvent.REPLACE_ACTION);
38
ADDING NODES TO DOMAINSTRUCTURE
96. NavTreeExtensionEvent evt = new NavTreeExtensionEvent(“/Environment”,
firstLevelNode,
NavTreeExtensionEvent.INSERT_ACTION);
NavTreeExtensionEvent evt = new NavTreeExtensionEvent(“/Environmet”,
firstLevelNode,
NavTreeExtensionEvent.APPEND_ACTION);
NavTreeExtensionEvent evt = new NavTreeExtensionEvent(“/Environment”,
firstLevelNode,
NavTreeExtensionEvent.REPLACE_ACTION);
38
ADDING NODES TO DOMAINSTRUCTURE
97. NavTreeExtensionEvent evt = new NavTreeExtensionEvent(“/Environment”,
firstLevelNode,
NavTreeExtensionEvent.INSERT_ACTION);
NavTreeExtensionEvent evt = new NavTreeExtensionEvent(“/Environmet”,
firstLevelNode,
NavTreeExtensionEvent.APPEND_ACTION);
NavTreeExtensionEvent evt = new NavTreeExtensionEvent(“/Environment”,
firstLevelNode,
NavTreeExtensionEvent.REPLACE_ACTION);
38
ADDING NODES TO DOMAINSTRUCTURE
98. • Webserver
• JSONP format
MESSAGE SOURCE
• jQuery vTicker
• AngularJS
EXTENSION
39
LAB5
JSON_CALLBACK({
"P_MyDomain":{
"Description":"Development domain for Oracle FMW Technical team",
LAB
• Adding support info
pages based on
domain name
100. • System Statistics Graphs
• Show real-time system information in WL Console
• Historical view over last 15 minutes
• CPU load/#CPU
• Heapsize allocation
• Loaded classes
• All Managed Servers in one view
41
MORE ADVANCED EXTENSION
101. • System Statistics Graphs
• Show real-time system information in WL Console
• Historical view over last 15 minutes
• CPU load/#CPU
• Heapsize allocation
• Loaded classes
• All Managed Servers in one view
41
MORE ADVANCED EXTENSION
107. SysStats.ear
SysStats.war
44
MORE ADVANCED EXTENSION
SysStats
<listener-class>SystemInfoCollectorExecutor</listener-class>
web.xml
public class SystemInfoCollectorExecutor {
public void contextInitialized(ServletContextEvent sce) {
systemInfoCollectorHandle = scheduler.scheduleAtFixedRate(new
SystemInfoCollector(), 1, 1, TimeUnit.MINUTES);
public class SystemInfoCollector implements Runnable {
OperationsAttributes
SysStats.ear has Java
EE Module
SystStats.war
SysStats.war includes
listener class
Class executed by
scheduler invokes Take
operations on SysStats
MXBean.
Listener class initiates
scheduler on context
initalization
108. SysStats.ear
SysStats.war
44
MORE ADVANCED EXTENSION
SysStats
<listener-class>SystemInfoCollectorExecutor</listener-class>
web.xml
public class SystemInfoCollectorExecutor {
public void contextInitialized(ServletContextEvent sce) {
systemInfoCollectorHandle = scheduler.scheduleAtFixedRate(new
SystemInfoCollector(), 1, 1, TimeUnit.MINUTES);
public class SystemInfoCollector implements Runnable {
OperationsAttributes
SysStats.ear has Java
EE Module
SystStats.war
SysStats.war includes
listener class
Class executed by
scheduler invokes Take
operations on SysStats
MXBean.
Listener class initiates
scheduler on context
initalization
109. SysStats.ear
SysStats.war
44
MORE ADVANCED EXTENSION
SysStats
<listener-class>SystemInfoCollectorExecutor</listener-class>
web.xml
public class SystemInfoCollectorExecutor {
public void contextInitialized(ServletContextEvent sce) {
systemInfoCollectorHandle = scheduler.scheduleAtFixedRate(new
SystemInfoCollector(), 1, 1, TimeUnit.MINUTES);
public class SystemInfoCollector implements Runnable {
OperationsAttributes
SysStats.ear has Java
EE Module
SystStats.war
SysStats.war includes
listener class
Class executed by
scheduler invokes Take
operations on SysStats
MXBean.
Listener class initiates
scheduler on context
initalization
110. SysStats.ear
SysStats.war
44
MORE ADVANCED EXTENSION
SysStats
<listener-class>SystemInfoCollectorExecutor</listener-class>
web.xml
public class SystemInfoCollectorExecutor {
public void contextInitialized(ServletContextEvent sce) {
systemInfoCollectorHandle = scheduler.scheduleAtFixedRate(new
SystemInfoCollector(), 1, 1, TimeUnit.MINUTES);
public class SystemInfoCollector implements Runnable {
OperationsAttributes
SysStats.ear has Java
EE Module
SystStats.war
SysStats.war includes
listener class
Class executed by
scheduler invokes Take
operations on SysStats
MXBean.
Listener class initiates
scheduler on context
initalization
112. • Data presentation
•Chart.js for graphs
•HTML 5 based
•Require JSON datastructure
•BXSlider for sliding multiple graphs
• 3 different graphs
• CPU load/#CPU
• Heapsize allocation
• Loaded classes
46
MORE ADVANCED EXTENSION
113. 47
MORE ADVANCED EXTENSION
• CPU Load
•#Processes running or
runnable
•Differs from CPU
Utilization
•Better indication user wait
time
• Graph
•CPU Load/CPUs
•Load per CPU
•15 min. timeframe
•One layer per Server
•Consolidate view
•Easy to detect anomalies
CPU LOAD/#CPU
130. HEAP
51
MORE ADVANCED EXTENSION
Memory Pool
Maximum
Init
Used
Committed
Maximum
Init
Used
Committed
Maximum
Init
Used
Committed
Memory Pool
Memory Pool
131. HEAP
51
MORE ADVANCED EXTENSION
Memory Pool
Maximum
Init
Used
Committed
Maximum
Init
Used
Committed
Maximum
Init
Used
Committed
Memory Pool
Memory Pool
USED
COMMITTED - USED
132. HEAP
51
MORE ADVANCED EXTENSION
Memory Pool
Maximum
Init
Used
Committed
Maximum
Init
Used
Committed
Maximum
Init
Used
Committed
Memory Pool
Memory Pool
USED
COMMITTED - USED
USED
COMMITTED - USED
133. HEAP
51
MORE ADVANCED EXTENSION
Memory Pool
Maximum
Init
Used
Committed
Maximum
Init
Used
Committed
Maximum
Init
Used
Committed
Memory Pool
Memory Pool
USED
COMMITTED - USED
USED
COMMITTED - USED
USED
COMMITTED - USED
134. 52
MORE ADVANCED EXTENSION
• Experimental view
•Free %, not allocated
heap
•Committed not used,
committed - used
•Used,
used heap
HEAPSIZE ALLOCATION
146. DEVELOPING ENTERPRISE JAVABEANS, VERSION 2.1, FOR ORACLE
EXTENDING THE ADMINISTRATION CONSOLE FOR ORACLE WEBLOGIC SERVER
WEBLOGIC SERVER MBEAN REFERENCE
W3SCHOOLS ANGULARJS
CODESCHOOL SHAPING UP WITH ANGULARJS
BXSLIDER THE RESPONSIVE JQUERY CONTENT SLIDER
CHART.JS
TYPOGRAPHY
TUTORIALSPOINT JAVA SERVER PAGES
57
USEFULL WEBSITES