SlideShare a Scribd company logo
WEBLOGIC CONSOLE
CUSTOMIZATION
An introduction to customizing and extending the Weblogic Console
1
• 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
• 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
• 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
• 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
• Extensions are safe!

• Can be enabled/disabled anytime

– Preferences > Extensions 

• Are merged with console.app in-memory
6
WEBLOGIC CONSOLE
– Open Preferences

– Tab extensions

– Select Show
Definition Labels
SHOW UI CONTROL LABELS
7
EXTENSION POINTS
– Open Preferences

– Tab extensions

– Select Show
Definition Labels
SHOW UI CONTROL LABELS
7
EXTENSION POINTS
– Open Preferences

– Tab extensions

– Select Show
Definition Labels
SHOW UI CONTROL LABELS
7
EXTENSION POINTS
– Open Preferences

– Tab extensions

– Select Show
Definition Labels
SHOW UI CONTROL LABELS
7
EXTENSION POINTS
8
UI CONTROL HIERARCHY
8
UI CONTROL HIERARCHY
DESKTOP
– top level UI hierarchy
DESKTOP
8
UI CONTROL HIERARCHY
DESKTOP
– top level UI hierarchy
DESKTOP
LOOK AND FEEL
– images

– CSS

– XML files
LOOK AND FEEL
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
8
UI CONTROL HIERARCHY
DESKTOP
LOOK AND FEEL BOOK
PAGE
– layout

– portlets

– books
PAGE
8
UI CONTROL HIERARCHY
DESKTOP
LOOK AND FEEL BOOK
PAGE
– layout

– portlets

– books
PAGE
LAYOUT
– placeholders

LAYOUT
8
UI CONTROL HIERARCHY
DESKTOP
LOOK AND FEEL BOOK
PAGE
– layout

– portlets

– books
PAGE
LAYOUT
– placeholders

LAYOUT
PLACEHOLDER
– portlets

– books
PLACEHOLDER
8
UI CONTROL HIERARCHY
DESKTOP
LOOK AND FEEL BOOK
PAGE
LAYOUT
PLACEHOLDER
PORTLET
– Content

PORTLET
• 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
• 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>
• 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>
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
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
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
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
• Setup Weblogic Domain

• Configure Netbeans

• Setup Look And Feel Project

• Customize Look And Feel

• Deploy and Test customization
16
LAB 1
• 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
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
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
• 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
• 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
• WL Server contains MBeans to

configure, monitor and manage

Weblogic Server resources

• Attributes

– Set / Read values

• Operations

– Execute actions
21
MBEANS AND JMX
• 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
• Registered in an MBean server

– Domain Runtime MBean Server

•Domain-wide services

– Runtime MBean Server

•Service instance
23
MBEANS AND JMX
• 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
• Webserver

• JSONP format
MESSAGE SOURCE
• jQuery vTicker

• AngularJS
EXTENSION
25
LAB 4
CALLBACK([
{“MSG”:”Some customers in domain OBIEE_1 ….”}
]};
LAB
• Broadcasting

messages to admins
BEEHIVE PAGE FLOW
STRUTS ACTION
26
ADDING PORTLETS
NETUIX-EXTENSION.XML



SOME.PORTLET
JAVA SERVER PAGE (JSP)
• Extends
console.portal

• Adds Portlet to
desktop 

• (sub)Tab to
ContentBook
Defines data to load Adds business and
navigation logic
<page-extension>
<page-location>
<parent-label-location
label="page"/>
<page-insertion-point
layout-location="1"
placeholder-position="0"/>
</page-location>
<portlet-content
content-uri=“demo.portlet"
title="Demo title"
orientation="top" default-
minimized="false"
instance-label="demo-
portlet"/>
</page-extension>
27
ADDING PORTLETS TO THE DESKTOP
NETUIX-EXTENSION.XML
<page-extension>
<page-location>
<parent-label-location
label="page"/>
<page-insertion-point
layout-location="1"
placeholder-position="0"/>
</page-location>
<portlet-content
content-uri=“demo.portlet"
title="Demo title"
orientation="top" default-
minimized="false"
instance-label="demo-
portlet"/>
</page-extension>
27
ADDING PORTLETS TO THE DESKTOP
NETUIX-EXTENSION.XML
LAYOUT
LOCATION
0
<page-extension>
<page-location>
<parent-label-location
label="page"/>
<page-insertion-point
layout-location="1"
placeholder-position="0"/>
</page-location>
<portlet-content
content-uri=“demo.portlet"
title="Demo title"
orientation="top" default-
minimized="false"
instance-label="demo-
portlet"/>
</page-extension>
27
ADDING PORTLETS TO THE DESKTOP
NETUIX-EXTENSION.XML
LAYOUT
LOCATION
0
LAYOUT
LOCATION
1
<page-extension>
<page-location>
<parent-label-location
label="page"/>
<page-insertion-point
layout-location="1"
placeholder-position="0"/>
</page-location>
<portlet-content
content-uri=“demo.portlet"
title="Demo title"
orientation="top" default-
minimized="false"
instance-label="demo-
portlet"/>
</page-extension>
27
ADDING PORTLETS TO THE DESKTOP
NETUIX-EXTENSION.XML
LAYOUT
LOCATION
0
LAYOUT
LOCATION
1
<page-extension>
<page-location>
<parent-label-location
label="page"/>
<page-insertion-point
layout-location="1"
placeholder-position="0"/>
</page-location>
<portlet-content
content-uri=“demo.portlet"
title="Demo title"
orientation="top" default-
minimized="false"
instance-label="demo-
portlet"/>
</page-extension>
27
ADDING PORTLETS TO THE DESKTOP
NETUIX-EXTENSION.XML
LAYOUT
LOCATION
0
LAYOUT
LOCATION
1
PLACEHOLDER
POSITION 0
<page-extension>
<page-location>
<parent-label-location
label="page"/>
<page-insertion-point
layout-location="1"
placeholder-position="0"/>
</page-location>
<portlet-content
content-uri=“demo.portlet"
title="Demo title"
orientation="top" default-
minimized="false"
instance-label="demo-
portlet"/>
</page-extension>
27
ADDING PORTLETS TO THE DESKTOP
NETUIX-EXTENSION.XML
LAYOUT
LOCATION
0
LAYOUT
LOCATION
1
PLACEHOLDER
POSITION 0
PLACEHOLDER
POSITION 1
<page-extension>
<page-location>
<parent-label-location
label="page"/>
<page-insertion-point
layout-location="1"
placeholder-position="0"/>
</page-location>
<portlet-content
content-uri=“demo.portlet"
title="Demo title"
orientation="top" default-
minimized="false"
instance-label="demo-
portlet"/>
</page-extension>
27
ADDING PORTLETS TO THE DESKTOP
NETUIX-EXTENSION.XML
LAYOUT
LOCATION
0
LAYOUT
LOCATION
1
PLACEHOLDER
POSITION 0
PLACEHOLDER
POSITION 1
PLACEHOLDER
POSITION 2
<page-extension>
<page-location>
<parent-label-location
label="page"/>
<page-insertion-point
layout-location="1"
placeholder-position="0"/>
</page-location>
<portlet-content
content-uri=“demo.portlet"
title="Demo title"
orientation="top" default-
minimized="false"
instance-label="demo-
portlet"/>
</page-extension>
27
ADDING PORTLETS TO THE DESKTOP
NETUIX-EXTENSION.XML
LAYOUT
LOCATION
0
LAYOUT
LOCATION
1
27
ADDING PORTLETS TO THE DESKTOP
NETUIX-EXTENSION.XML
LAYOUT
LOCATION
0
LAYOUT
LOCATION
1
<page-extension>
<page-location>
<parent-label-location
label="page"/>
<page-insertion-point
layout-location="0"
placeholder-position="0"/>
</page-location>
<portlet-content
content-uri=“demo.portlet"
title="Demo title"
orientation="top" default-
minimized="false"
instance-label="demo-
portlet"/>
</page-extension>
DEMO.PORTLET
<netuix:portlet
definitionLabel=“DemoPortlet”
title=“DemoPortlet"
presentationClass="">
<netuix:titlebar/>
<netuix:content>
<netuix:jspContent
contentUri="/jspext/demo.jsp"/>
</netuix:content>
</netuix:portlet>
28
PORTLET STYLES
DEMO.PORTLET
<netuix:portlet
definitionLabel=“DemoPortlet”
title=“DemoPortlet"
presentationClass="">
<netuix:titlebar/>
<netuix:content>
<netuix:jspContent
contentUri="/jspext/demo.jsp"/>
</netuix:content>
</netuix:portlet>
28
PORTLET STYLES
DEMO.PORTLET
28
PORTLET STYLES
<netuix:portlet
definitionLabel=“DemoPortlet”
title=“DemoPortlet"
presentationClass="wlsc-frame">
<netuix:titlebar/>
<netuix:content>
<netuix:jspContent
contentUri="/jspext/demo.jsp"/>
</netuix:content>
</netuix:portlet>
DEMO.PORTLET
28
PORTLET STYLES
<netuix:portlet
definitionLabel=“DemoPortlet”
title=“DemoPortlet"
presentationClass="wlsc-layout-cell">
<netuix:titlebar/>
<netuix:content>
<netuix:jspContent
contentUri="/jspext/demo.jsp"/>
</netuix:content>
</netuix:portlet>
DEMO.PORTLET
28
PORTLET STYLES
<netuix:portlet
definitionLabel=“DemoPortlet”
title=“DemoPortlet"
presentationClass="wlsc-frame">
<!— <netuix:titlebar/> —>
<netuix:content>
<netuix:jspContent
contentUri="/jspext/demo.jsp"/>
</netuix:content>
</netuix:portlet>
DEMO.PORTLET
28
PORTLET STYLES
<netuix:portlet
definitionLabel=“DemoPortlet”
title=“DemoPortlet"
presentationClass="wlsc-frame">
<netuix:titlebar>
<netuix:minimize/>
<netuix:maximize/>
</netuix:titlebar>
<netuix:content>
<netuix:jspContent
<book-extension>
<book-location>
<parent-label-location
label="CoreDomainConfigGenera
lBook"/>
<book-insertion-point 

action="append"/>
</book-location>
<book-content content-uri=“/
controls/demo.book”/>
</book-extension>
29
ADDING PORTLETS AS A TAB OF CONTENTBOOK
NETUIX-EXTENSION.XML
<book-extension>
<book-location>
<parent-label-location
label="CoreDomainConfigGenera
lBook"/>
<book-insertion-point 

action="append"/>
</book-location>
<book-content content-uri=“/
controls/demo.book”/>
</book-extension>
29
ADDING PORTLETS AS A TAB OF CONTENTBOOK
NETUIX-EXTENSION.XML
<book-extension>
<book-location>
<parent-label-location
label="CoreDomainConfigGenera
lBook"/>
<book-insertion-point 

action="append"/>
</book-location>
<book-content content-uri=“/
controls/demo.book”/>
</book-extension>
29
ADDING PORTLETS AS A TAB OF CONTENTBOOK
NETUIX-EXTENSION.XML
<book-extension>
<book-location>
<parent-label-location
label="CoreDomainConfigGenera
lBook"/>
<book-insertion-point 

action="append"/>
</book-location>
<book-content content-uri=“/
controls/demo.book”/>
</book-extension>
29
ADDING PORTLETS AS A TAB OF CONTENTBOOK
NETUIX-EXTENSION.XML
30
ADDING TAB WITHOUT SUBTABS
<netuix:page markupName="page"
markupType="Page"
definitionLabel="DomainDemoPage1"
title="Demo Tab 1"
presentationClass="page-content">
<netuix:meta
name="skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:portletInstance
markupType=“Portlet"
instanceLabel="demoportlet"
contentUri="/portlets/demo.portlet"/>
</netuix:content>
</netuix:page>
DEMO.BOOK
– definitionLabel

– instanceLabel
UNIQUENESS
30
ADDING TAB WITHOUT SUBTABS
<netuix:page markupName="page"
markupType="Page"
definitionLabel="DomainDemoPage1"
title="Demo Tab 1"
presentationClass="page-content">
<netuix:meta
name="skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:portletInstance
markupType=“Portlet"
instanceLabel="demoportlet"
contentUri="/portlets/demo.portlet"/>
</netuix:content>
</netuix:page>
DEMO.BOOK
– definitionLabel

– instanceLabel
UNIQUENESS
30
ADDING TAB WITHOUT SUBTABS
<netuix:page markupName="page"
markupType="Page"
definitionLabel="DomainDemoPage1"
title="Demo Tab 1"
presentationClass="page-content">
<netuix:meta
name="skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:portletInstance
markupType=“Portlet"
instanceLabel="demoportlet"
contentUri="/portlets/demo.portlet"/>
</netuix:content>
</netuix:page>
DEMO.BOOK
– definitionLabel

– instanceLabel
UNIQUENESS
30
ADDING TAB WITHOUT SUBTABS
<netuix:page markupName="page"
markupType="Page"
definitionLabel="DomainDemoPage1"
title="Demo Tab 1"
presentationClass="page-content">
<netuix:meta
name="skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:portletInstance
markupType=“Portlet"
instanceLabel="demoportlet"
contentUri="/portlets/demo.portlet"/>
</netuix:content>
</netuix:page>
DEMO.BOOK
– definitionLabel

– instanceLabel
UNIQUENESS
30
ADDING TAB WITHOUT SUBTABS
<netuix:page markupName="page"
markupType="Page"
definitionLabel="DomainDemoPage1"
title="Demo Tab 1"
presentationClass="page-content">
<netuix:meta
name="skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:portletInstance
markupType=“Portlet"
instanceLabel="demoportlet"
contentUri="/portlets/demo.portlet"/>
</netuix:content>
</netuix:page>
DEMO.BOOK
– definitionLabel

– instanceLabel
UNIQUENESS
30
ADDING TAB WITHOUT SUBTABS
<netuix:page markupName="page"
markupType="Page"
definitionLabel="DomainDemoPage1"
title="Demo Tab 1"
presentationClass="page-content">
<netuix:meta
name="skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:portletInstance
markupType=“Portlet"
instanceLabel="demoportlet"
contentUri="/portlets/demo.portlet"/>
</netuix:content>
</netuix:page>
DEMO.BOOK
– definitionLabel

– instanceLabel
UNIQUENESS
31
ADDING PORTLETS AS (SUB-)TABS
<netuix:book
markupName=“book"
markupType=“Book”
definitionLabel=“domainDemoSubTabs"
title="Demo Tab 2">
<netuix:singleLevelMenu
markupType=“Menu”
markupName=“singleLevelMenu"
presentationClass=“multi-level1”/>
<netuix:meta
name=“skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:page markupName=“page"
….
</netuix:page>
<netuix:page markupName=“page"
….
</netuix:page>
</netuix:content>
</netuix:book>
DEMO.BOOK
31
ADDING PORTLETS AS (SUB-)TABS
<netuix:book
markupName=“book"
markupType=“Book”
definitionLabel=“domainDemoSubTabs"
title="Demo Tab 2">
<netuix:singleLevelMenu
markupType=“Menu”
markupName=“singleLevelMenu"
presentationClass=“multi-level1”/>
<netuix:meta
name=“skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:page markupName=“page"
….
</netuix:page>
<netuix:page markupName=“page"
….
</netuix:page>
</netuix:content>
</netuix:book>
DEMO.BOOK
31
ADDING PORTLETS AS (SUB-)TABS
<netuix:book
markupName=“book"
markupType=“Book”
definitionLabel=“domainDemoSubTabs"
title="Demo Tab 2">
<netuix:singleLevelMenu
markupType=“Menu”
markupName=“singleLevelMenu"
presentationClass=“multi-level1”/>
<netuix:meta
name=“skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:page markupName=“page"
….
</netuix:page>
<netuix:page markupName=“page"
….
</netuix:page>
</netuix:content>
</netuix:book>
DEMO.BOOK
31
ADDING PORTLETS AS (SUB-)TABS
<netuix:book
markupName=“book"
markupType=“Book”
definitionLabel=“domainDemoSubTabs"
title="Demo Tab 2">
<netuix:singleLevelMenu
markupType=“Menu”
markupName=“singleLevelMenu"
presentationClass=“multi-level1”/>
<netuix:meta
name=“skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:page markupName=“page"
….
</netuix:page>
<netuix:page markupName=“page"
….
</netuix:page>
</netuix:content>
</netuix:book>
DEMO.BOOK
31
ADDING PORTLETS AS (SUB-)TABS
<netuix:book
markupName=“book"
markupType=“Book”
definitionLabel=“domainDemoSubTabs"
title="Demo Tab 2">
<netuix:singleLevelMenu
markupType=“Menu”
markupName=“singleLevelMenu"
presentationClass=“multi-level1”/>
<netuix:meta
name=“skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:page markupName=“page"
….
</netuix:page>
<netuix:page markupName=“page"
….
</netuix:page>
</netuix:content>
</netuix:book>
DEMO.BOOK
THIS IS A BOOK !
31
ADDING PORTLETS AS (SUB-)TABS
<netuix:book
markupName=“book"
markupType=“Book”
definitionLabel=“domainDemoSubTabs"
title="Demo Tab 2">
<netuix:singleLevelMenu
markupType=“Menu”
markupName=“singleLevelMenu"
presentationClass=“multi-level1”/>
<netuix:meta
name=“skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:page markupName=“page"
….
</netuix:page>
<netuix:page markupName=“page"
….
</netuix:page>
</netuix:content>
</netuix:book>
DEMO.BOOK
31
ADDING PORTLETS AS (SUB-)TABS
<netuix:book
markupName=“book"
markupType=“Book”
definitionLabel=“domainDemoSubTabs"
title="Demo Tab 2">
<netuix:singleLevelMenu
markupType=“Menu”
markupName=“singleLevelMenu"
presentationClass=“multi-level1”/>
<netuix:meta
name=“skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:page markupName=“page"
….
</netuix:page>
<netuix:page markupName=“page"
….
</netuix:page>
</netuix:content>
</netuix:book>
DEMO.BOOK
‘ SKELETONURI=“SINGLELEVELMENU_CHILDREN.JSP" ‘ IS DEPRECATED.

USE PRESENTATIONCLASS ATTRIBUTE WITH VALUE MULTI-LEVEL1
31
ADDING PORTLETS AS (SUB-)TABS
<netuix:book
markupName=“book"
markupType=“Book”
definitionLabel=“domainDemoSubTabs"
title="Demo Tab 2">
<netuix:singleLevelMenu
markupType=“Menu”
markupName=“singleLevelMenu"
presentationClass=“multi-level1”/>
<netuix:meta
name=“skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:page markupName=“page"
….
</netuix:page>
<netuix:page markupName=“page"
….
</netuix:page>
</netuix:content>
</netuix:book>
DEMO.BOOK
31
ADDING PORTLETS AS (SUB-)TABS
DEMO.BOOK
<netuix:book
…
<netuix:content>
<netuix:page markupName=“page"
markupType=“Page"
definitionLabel=“domainDemoSubPage2_1"
title="Demo Sub Tab 1”
presentationClass="page-content">
<netuix:meta
name=“skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:portletInstance
markupType=“Portlet”
instanceLabel=“demoportlet2_1"
contentUri="/portlets/demo.portlet"/>
</netuix:content>
</netuix:page>
<netuix:page markupName="page"
markupType=“Page"
definitionLabel=“domainDemoSubPage2_2"
title="Demo Sub Tab 2”
…
</netuix:page>
</netuix:content>
</netuix:book>
31
ADDING PORTLETS AS (SUB-)TABS
DEMO.BOOK
<netuix:book
…
<netuix:content>
<netuix:page markupName=“page"
markupType=“Page"
definitionLabel=“domainDemoSubPage2_1"
title="Demo Sub Tab 1”
presentationClass="page-content">
<netuix:meta
name=“skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:portletInstance
markupType=“Portlet”
instanceLabel=“demoportlet2_1"
contentUri="/portlets/demo.portlet"/>
</netuix:content>
</netuix:page>
<netuix:page markupName="page"
markupType=“Page"
definitionLabel=“domainDemoSubPage2_2"
title="Demo Sub Tab 2”
…
</netuix:page>
</netuix:content>
</netuix:book>
31
ADDING PORTLETS AS (SUB-)TABS
DEMO.BOOK
<netuix:book
…
<netuix:content>
<netuix:page markupName=“page"
markupType=“Page"
definitionLabel=“domainDemoSubPage2_1"
title="Demo Sub Tab 1”
presentationClass="page-content">
<netuix:meta
name=“skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:portletInstance
markupType=“Portlet”
instanceLabel=“demoportlet2_1"
contentUri="/portlets/demo.portlet"/>
</netuix:content>
</netuix:page>
<netuix:page markupName="page"
markupType=“Page"
definitionLabel=“domainDemoSubPage2_2"
title="Demo Sub Tab 2”
…
</netuix:page>
</netuix:content>
</netuix:book>
31
ADDING PORTLETS AS (SUB-)TABS
DEMO.BOOK
<netuix:book
…
<netuix:content>
<netuix:page markupName=“page"
markupType=“Page"
definitionLabel=“domainDemoSubPage2_1"
title="Demo Sub Tab 1”
presentationClass="page-content">
<netuix:meta
name=“skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:portletInstance
markupType=“Portlet”
instanceLabel=“demoportlet2_1"
contentUri="/portlets/demo.portlet"/>
</netuix:content>
</netuix:page>
<netuix:page markupName="page"
markupType=“Page"
definitionLabel=“domainDemoSubPage2_2"
title="Demo Sub Tab 2”
…
</netuix:page>
</netuix:content>
</netuix:book>
31
ADDING PORTLETS AS (SUB-)TABS
DEMO.BOOK
<netuix:book
…
<netuix:content>
<netuix:page markupName=“page"
markupType=“Page"
definitionLabel=“domainDemoSubPage2_1"
title="Demo Sub Tab 1”
presentationClass="page-content">
<netuix:meta
name=“skeleton-resource-bundle"
content="Bundle"/>
<netuix:content>
<netuix:portletInstance
markupType=“Portlet”
instanceLabel=“demoportlet2_1"
contentUri="/portlets/demo.portlet"/>
</netuix:content>
</netuix:page>
<netuix:page markupName="page"
markupType=“Page"
definitionLabel=“domainDemoSubPage2_2"
title="Demo Sub Tab 2”
…
</netuix:page>
</netuix:content>
</netuix:book>
LAYOUTS
32
PAGE LAYOUTS
onecolumnflow
LAYOUTS
32
PAGE LAYOUTS
singlecolumnLayout
onecolumnflow
LAYOUTS
32
PAGE LAYOUTS
singlecolumnLayout
twoColumnLayout
onecolumnflow
LAYOUTS
32
PAGE LAYOUTS
singlecolumnLayout
threeColumnLayout
twoColumnLayout
onecolumnflow
LAYOUTS
32
PAGE LAYOUTS
singlecolumnLayout
threeColumnLayout
fourColumnLayout
twoColumnLayout
<netuix:gridLayout columns="2"
markupType="Layout"
markupName="twoColumnLayout">
<netuix:placeholder
flow="vertical"
usingFlow="true"
width=“30%"
markupType="Placeholder"
markupName="twoColumn_left">
<netuix:portletInstance markupType=“Portlet"
instanceLabel="demoportlet"
contentUri="/portlets/demo.portlet"/>
</netuix:placeholder>
<netuix:placeholder …

…
</netuix:placeholder>
</netuix:gridLayout>
33
PAGE LAYOUTS gridlayout

markupname
columns
placeholder

markupnames
oneColumnFlowLayout n/a oneColumnFlow_center
singleColumnLayout 1 singleColumn_columnOne
twoColumnLayout 2 twoColumn_left,twoColumn_right
threeColumnLayout 3
threeColumn_left,threeColumn_center,

threeColumn_right
fourColumnLayout 4
fourColumn_left, fourColumn_leftCenter,

fourColumn_rightCenter, fourColumn_right
Example layouts;

{weblogic.home}/lib/consoleapp/webapp/framework/markup/layout
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




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&amp;_pageLabel=DomainDemoPage1
NavTreePortlet




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&amp;_pageLabel=DomainDemoPage1
NavTreePortlet




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&amp;_pageLabel=DomainDemoPage1
NavTreePortlet




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&amp;_pageLabel=DomainDemoPage1
NavTreePortlet
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
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
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
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
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
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);
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
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
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
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
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
• 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
40
LAB6
LAB
• Add a tab

• Add a node to
Domain Structure
• 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
• 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
• Data collection

– MXBean SysStats

• SimpleType Attributes

– NumCPUs

– Architecture

– CPULoadAverage

• ArrayType Attributes

– AvgCPULoadHistory

– LoadedClassesHistory

– HeapUsageHistory
42
MORE ADVANCED EXTENSION
43
MORE ADVANCED EXTENSION
SysStats
ATTRIBUTES
OPERATIONS
CPULoadAverage
AvgCPULoadHistory
takeAvgCPULoadHistorySample
AvgCPULoadHistory
Time Value
124232 1.4
124292 1.1
43
MORE ADVANCED EXTENSION
SysStats
ATTRIBUTES
OPERATIONS
CPULoadAverage
AvgCPULoadHistory
takeAvgCPULoadHistorySample
1.2
AvgCPULoadHistory
Time Value
124232 1.4
124292 1.1
43
MORE ADVANCED EXTENSION
SysStats
ATTRIBUTES
OPERATIONS
CPULoadAverage
AvgCPULoadHistory
takeAvgCPULoadHistorySample
1.2
AvgCPULoadHistory
Time Value
124232 1.4
124292 1.1
43
MORE ADVANCED EXTENSION
SysStats
ATTRIBUTES
OPERATIONS
CPULoadAverage
AvgCPULoadHistory
takeAvgCPULoadHistorySample
1.2
AvgCPULoadHistory-
Time Value
124232 1.4
124292 1.1
124352 1.2
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
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
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
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
45
LAB7A
LAB
• Deploy SysStats.ear

• Explore the SystStats
MXBean
• 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
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
48
MORE ADVANCED EXTENSION
MEMORY POOL
48
MORE ADVANCED EXTENSION
MEMORY POOL
HEAP
48
MORE ADVANCED EXTENSION
MEMORY POOL
HEAP NON-HEAP
48
MORE ADVANCED EXTENSION
MEMORY POOL
HEAP NON-HEAP
EDEN SPACE
48
MORE ADVANCED EXTENSION
MEMORY POOL
HEAP NON-HEAP
EDEN SPACE
SURVIVOR
SPACE
48
MORE ADVANCED EXTENSION
MEMORY POOL
HEAP NON-HEAP
EDEN SPACE
SURVIVOR
SPACE
TENURED
48
MORE ADVANCED EXTENSION
MEMORY POOL
HEAP NON-HEAP
EDEN SPACE
SURVIVOR
SPACE
TENURED
PERM GEN
48
MORE ADVANCED EXTENSION
MEMORY POOL
HEAP NON-HEAP
EDEN SPACE
SURVIVOR
SPACE
TENURED
PERM GEN
CODE CACHE
49
MORE ADVANCED EXTENSION
MEMORY POOL
49
MORE ADVANCED EXTENSION
MEMORY POOL
HEAP
49
MORE ADVANCED EXTENSION
MEMORY POOL
HEAP NON-HEAP
49
MORE ADVANCED EXTENSION
MEMORY POOL
HEAP NON-HEAP
EDEN SPACEMemory Pool
49
MORE ADVANCED EXTENSION
MEMORY POOL
HEAP NON-HEAP
EDEN SPACE
SURVIVOR
SPACEMemory Pool
Memory Pool
49
MORE ADVANCED EXTENSION
MEMORY POOL
HEAP NON-HEAP
EDEN SPACE
SURVIVOR
SPACE
PERM GENMemory Pool
Memory Pool
Memory Pool
50
MORE ADVANCED EXTENSION
Memory Pool
Maximum
Init
Used
Committed
50
MORE ADVANCED EXTENSION
Memory Pool
Maximum
Init
Used
Committed
HEAP
51
MORE ADVANCED EXTENSION
Memory Pool
Maximum
Init
Used
Committed
Maximum
Init
Used
Committed
Maximum
Init
Used
Committed
Memory Pool
Memory Pool
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
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
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
52
MORE ADVANCED EXTENSION
• Experimental view

•Free %, not allocated
heap

•Committed not used,
committed - used

•Used,

used heap

HEAPSIZE ALLOCATION
53
MORE ADVANCED EXTENSION
• Classes are loaded in
permanent generation

LOADED CLASSES
54
MORE ADVANCED EXTENSION
HTTP://…/JChartJSONObjects?chartType=cpuLoadRadarChart
web.xml
<servlet>
<servlet-name>JChartJSONObjects</servlet-name>
<servlet-class>com.reddipped.controller.json.JChartJSONObjects</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JChartJSONObjects</servlet-name>
<url-pattern>/JChartJSONObjects</url-pattern>
</servlet-mapping>
SysStats
JChartJSONHelper
JChartJSONObjects
54
MORE ADVANCED EXTENSION
HTTP://…/JChartJSONObjects?chartType=cpuLoadRadarChart
web.xml
<servlet>
<servlet-name>JChartJSONObjects</servlet-name>
<servlet-class>com.reddipped.controller.json.JChartJSONObjects</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JChartJSONObjects</servlet-name>
<url-pattern>/JChartJSONObjects</url-pattern>
</servlet-mapping>
SysStats
JChartJSONHelper
JChartJSONObjects
54
MORE ADVANCED EXTENSION
HTTP://…/JChartJSONObjects?chartType=cpuLoadRadarChart
web.xml
<servlet>
<servlet-name>JChartJSONObjects</servlet-name>
<servlet-class>com.reddipped.controller.json.JChartJSONObjects</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JChartJSONObjects</servlet-name>
<url-pattern>/JChartJSONObjects</url-pattern>
</servlet-mapping>
SysStats
JChartJSONHelper
JChartJSONObjects
54
MORE ADVANCED EXTENSION
HTTP://…/JChartJSONObjects?chartType=cpuLoadRadarChart
web.xml
<servlet>
<servlet-name>JChartJSONObjects</servlet-name>
<servlet-class>com.reddipped.controller.json.JChartJSONObjects</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JChartJSONObjects</servlet-name>
<url-pattern>/JChartJSONObjects</url-pattern>
</servlet-mapping>
SysStats
MBean Server Connection
JChartJSONHelper
JChartJSONObjects
54
MORE ADVANCED EXTENSION
HTTP://…/JChartJSONObjects?chartType=cpuLoadRadarChart
web.xml
<servlet>
<servlet-name>JChartJSONObjects</servlet-name>
<servlet-class>com.reddipped.controller.json.JChartJSONObjects</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JChartJSONObjects</servlet-name>
<url-pattern>/JChartJSONObjects</url-pattern>
</servlet-mapping>
SysStats
MBean Server Connection
JChartJSONHelper
JChartJSONObjects
JSON
54
MORE ADVANCED EXTENSION
HTTP://…/JChartJSONObjects?chartType=cpuLoadRadarChart
{“labels":
["10:08","10:09","10:10","10:11","10:12","10:13","10:14","10:15","10:16","10:
17","10:18","10:19","10:20","10:21","10:22","10:23"],
“datasets”:[
{"label":"myserver2",
“fillColor":"rgba(165,222,11,0.2)",
“strokeColor":"rgba(165,222,11,1)",
“pointColor":"rgba(165,222,11,1)",
“pointStrokeColor":"#fff",
“pointHighlightFill":"#fff",
“pointHighlightStroke":"rgba(165,222,11,1)",
“data":
[0.06,0.18000000000000005,0.030000000000000027,0.020000000000000018,0.77,0.
19999999999999998,0.56,0.6200000000000001,1.2000000000000002,0.48,0.69,0.05
0000000000000044,0.06,0.13999999999999999,0.68,0.9]},
{"label":"myserver3","fillColor":"rgba(199,193,1,0.2)","strokeColor":"rgba(
199,193,1,1)","pointColor":"rgba(199,193,1,1)","pointStrokeColor":"#fff","p
ointHighlightFill":"#fff","pointHighlightStroke":"rgba(199,193,1,1)","data"
:
[0.35,0.35000000000000003,0.27,0.45000000000000007,0.47000000000000003,0.76
,0.34,0.1399999999999999,0.8200000000000001,0.38,0.07999999999999996,0.4300
0000000000005,0.5900000000000001,0.31,0.18,0.05000000000000002]},
{“label":"myserver",
“fillColor":"rgba(227,158,3,0.2)",
“strokeColor":"rgba(227,158,3,1)",
“pointColor":"rgba(227,158,3,1)",
“pointStrokeColor":"#fff",
“pointHighlightFill":"#fff",
SysStats
MBean Server Connection
JChartJSONHelper
JChartJSONObjects
JSON
55
MORE ADVANCED EXTENSION
55
MORE ADVANCED EXTENSION
56
LAB7B
LAB
• Add Java Classes

• JChartJSONObjects

• JChartJSONHelper

• Create WLC Ext.

• Add Book

• Add JSP
TUTORIALSPOINT JAVA SERVER PAGES
57
USEFULL WEBSITES
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
DRIVE

HOME 

SAFELY

www.reddipped.com
58
@petervannes

More Related Content

What's hot

Laravel 5.4
Laravel 5.4 Laravel 5.4
Laravel 5.4
Nisha Patel
 
Laravel ppt
Laravel pptLaravel ppt
Laravel ppt
Mayank Panchal
 
Getting started with laravel
Getting started with laravelGetting started with laravel
Getting started with laravel
Advance Idea Infotech
 
Installing OpenCart 3 module
Installing OpenCart 3 moduleInstalling OpenCart 3 module
Installing OpenCart 3 module
Self
 
Spring In Alfresco Ecm
Spring In Alfresco EcmSpring In Alfresco Ecm
Spring In Alfresco Ecm
Piergiorgio Lucidi
 
MVCL pattern, web flow, code flow, request and response in OpenCart
MVCL pattern, web flow, code flow, request and response in OpenCartMVCL pattern, web flow, code flow, request and response in OpenCart
MVCL pattern, web flow, code flow, request and response in OpenCart
Self
 
Database table schema explained of Opencart
Database table schema explained of OpencartDatabase table schema explained of Opencart
Database table schema explained of Opencart
Self
 
Social Connections 12 - IBM Connections Adminblast
Social Connections 12 - IBM Connections AdminblastSocial Connections 12 - IBM Connections Adminblast
Social Connections 12 - IBM Connections Adminblast
Nico Meisenzahl
 
What Is Hobo ?
What Is Hobo ?What Is Hobo ?
What Is Hobo ?
Evarist Lobo
 
Unleashing the Power: A Lap Around PowerShell 3.0
Unleashing the Power: A Lap Around PowerShell 3.0Unleashing the Power: A Lap Around PowerShell 3.0
Unleashing the Power: A Lap Around PowerShell 3.0
Sarah Dutkiewicz
 
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
Kathy Brown
 
Laravel development (Laravel History, Environment Setup & Laravel Installatio...
Laravel development (Laravel History, Environment Setup & Laravel Installatio...Laravel development (Laravel History, Environment Setup & Laravel Installatio...
Laravel development (Laravel History, Environment Setup & Laravel Installatio...
Dilouar Hossain
 
NLOUG 2017- Oracle WebCenter Portal 12c Performance
NLOUG 2017- Oracle WebCenter Portal 12c PerformanceNLOUG 2017- Oracle WebCenter Portal 12c Performance
NLOUG 2017- Oracle WebCenter Portal 12c Performance
Daniel Merchán García
 
Laravel Introduction
Laravel IntroductionLaravel Introduction
Laravel Introduction
Ahmad Shah Hafizan Hamidin
 
Yes, It's Number One it's TOTP!
Yes, It's Number One it's TOTP!Yes, It's Number One it's TOTP!
Yes, It's Number One it's TOTP!
Keith Brooks
 
ColdFusion Fw1 (FrameWork1) introduction
ColdFusion Fw1 (FrameWork1) introductionColdFusion Fw1 (FrameWork1) introduction
ColdFusion Fw1 (FrameWork1) introduction
SaravanaMuthu Jayaraj
 
Laravel presentation
Laravel presentationLaravel presentation
Laravel presentation
Toufiq Mahmud
 
Pabug Presentation Final
Pabug Presentation   FinalPabug Presentation   Final
Pabug Presentation FinalMelissa Miller
 

What's hot (20)

Laravel 5.4
Laravel 5.4 Laravel 5.4
Laravel 5.4
 
Laravel ppt
Laravel pptLaravel ppt
Laravel ppt
 
Getting started with laravel
Getting started with laravelGetting started with laravel
Getting started with laravel
 
Installing OpenCart 3 module
Installing OpenCart 3 moduleInstalling OpenCart 3 module
Installing OpenCart 3 module
 
Spring In Alfresco Ecm
Spring In Alfresco EcmSpring In Alfresco Ecm
Spring In Alfresco Ecm
 
MVCL pattern, web flow, code flow, request and response in OpenCart
MVCL pattern, web flow, code flow, request and response in OpenCartMVCL pattern, web flow, code flow, request and response in OpenCart
MVCL pattern, web flow, code flow, request and response in OpenCart
 
Database table schema explained of Opencart
Database table schema explained of OpencartDatabase table schema explained of Opencart
Database table schema explained of Opencart
 
Social Connections 12 - IBM Connections Adminblast
Social Connections 12 - IBM Connections AdminblastSocial Connections 12 - IBM Connections Adminblast
Social Connections 12 - IBM Connections Adminblast
 
What Is Hobo ?
What Is Hobo ?What Is Hobo ?
What Is Hobo ?
 
Unleashing the Power: A Lap Around PowerShell 3.0
Unleashing the Power: A Lap Around PowerShell 3.0Unleashing the Power: A Lap Around PowerShell 3.0
Unleashing the Power: A Lap Around PowerShell 3.0
 
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
 
Laravel development (Laravel History, Environment Setup & Laravel Installatio...
Laravel development (Laravel History, Environment Setup & Laravel Installatio...Laravel development (Laravel History, Environment Setup & Laravel Installatio...
Laravel development (Laravel History, Environment Setup & Laravel Installatio...
 
NLOUG 2017- Oracle WebCenter Portal 12c Performance
NLOUG 2017- Oracle WebCenter Portal 12c PerformanceNLOUG 2017- Oracle WebCenter Portal 12c Performance
NLOUG 2017- Oracle WebCenter Portal 12c Performance
 
Cfml features modern_coding
Cfml features modern_codingCfml features modern_coding
Cfml features modern_coding
 
Laravel Introduction
Laravel IntroductionLaravel Introduction
Laravel Introduction
 
Yes, It's Number One it's TOTP!
Yes, It's Number One it's TOTP!Yes, It's Number One it's TOTP!
Yes, It's Number One it's TOTP!
 
ColdFusion Fw1 (FrameWork1) introduction
ColdFusion Fw1 (FrameWork1) introductionColdFusion Fw1 (FrameWork1) introduction
ColdFusion Fw1 (FrameWork1) introduction
 
Laravel presentation
Laravel presentationLaravel presentation
Laravel presentation
 
CHANGELOG.txt
CHANGELOG.txtCHANGELOG.txt
CHANGELOG.txt
 
Pabug Presentation Final
Pabug Presentation   FinalPabug Presentation   Final
Pabug Presentation Final
 

Similar to Weblogic Console Customization

One daytalk hbraun_oct2011
One daytalk hbraun_oct2011One daytalk hbraun_oct2011
One daytalk hbraun_oct2011hbraun
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUlrich Krause
 
ITB2017 - Keynote
ITB2017 - KeynoteITB2017 - Keynote
ITB2017 - Keynote
Ortus Solutions, Corp
 
Grails patterns and practices
Grails patterns and practicesGrails patterns and practices
Grails patterns and practices
paulbowler
 
WebObjects Developer Tools
WebObjects Developer ToolsWebObjects Developer Tools
WebObjects Developer ToolsWO Community
 
WebLogic Scripting Tool Overview
WebLogic Scripting Tool OverviewWebLogic Scripting Tool Overview
WebLogic Scripting Tool Overview
James Bayer
 
Developing Portlets
Developing PortletsDeveloping Portlets
Developing Portletssydeburn
 
Drupal case study: Behind the scenes of website of University of Tartu
Drupal case study: Behind the scenes of website of University of TartuDrupal case study: Behind the scenes of website of University of Tartu
Drupal case study: Behind the scenes of website of University of Tartu
René Lasseron
 
Weblogic server-overview-weblogic-scripting-tool0-1228252752844434-9
Weblogic server-overview-weblogic-scripting-tool0-1228252752844434-9Weblogic server-overview-weblogic-scripting-tool0-1228252752844434-9
Weblogic server-overview-weblogic-scripting-tool0-1228252752844434-9Bhaskar Naik
 
DotNet MVC and webpack + Babel + react
DotNet MVC and webpack + Babel + reactDotNet MVC and webpack + Babel + react
DotNet MVC and webpack + Babel + react
Chen-Tien Tsai
 
Upgrading to Alfresco 6
Upgrading to Alfresco 6Upgrading to Alfresco 6
Upgrading to Alfresco 6
Angel Borroy López
 
Why Drupal?
Why Drupal?Why Drupal?
Why Drupal?
Grossum
 
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UKStorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS
 
PowerShellForDBDevelopers
PowerShellForDBDevelopersPowerShellForDBDevelopers
PowerShellForDBDevelopersBryan Cafferky
 
Connect 2014 JMP101: Java for XPages Development
Connect 2014 JMP101: Java for XPages DevelopmentConnect 2014 JMP101: Java for XPages Development
Connect 2014 JMP101: Java for XPages Development
panagenda
 
symfony_from_scratch
symfony_from_scratchsymfony_from_scratch
symfony_from_scratchtutorialsruby
 
symfony_from_scratch
symfony_from_scratchsymfony_from_scratch
symfony_from_scratchtutorialsruby
 
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Arun Gupta
 
No Docker? No Problem: Automating installation and config with Ansible
No Docker? No Problem: Automating installation and config with AnsibleNo Docker? No Problem: Automating installation and config with Ansible
No Docker? No Problem: Automating installation and config with Ansible
Jeff Potts
 
BP-9 Share Customization Best Practices
BP-9 Share Customization Best PracticesBP-9 Share Customization Best Practices
BP-9 Share Customization Best Practices
Alfresco Software
 

Similar to Weblogic Console Customization (20)

One daytalk hbraun_oct2011
One daytalk hbraun_oct2011One daytalk hbraun_oct2011
One daytalk hbraun_oct2011
 
UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basics
 
ITB2017 - Keynote
ITB2017 - KeynoteITB2017 - Keynote
ITB2017 - Keynote
 
Grails patterns and practices
Grails patterns and practicesGrails patterns and practices
Grails patterns and practices
 
WebObjects Developer Tools
WebObjects Developer ToolsWebObjects Developer Tools
WebObjects Developer Tools
 
WebLogic Scripting Tool Overview
WebLogic Scripting Tool OverviewWebLogic Scripting Tool Overview
WebLogic Scripting Tool Overview
 
Developing Portlets
Developing PortletsDeveloping Portlets
Developing Portlets
 
Drupal case study: Behind the scenes of website of University of Tartu
Drupal case study: Behind the scenes of website of University of TartuDrupal case study: Behind the scenes of website of University of Tartu
Drupal case study: Behind the scenes of website of University of Tartu
 
Weblogic server-overview-weblogic-scripting-tool0-1228252752844434-9
Weblogic server-overview-weblogic-scripting-tool0-1228252752844434-9Weblogic server-overview-weblogic-scripting-tool0-1228252752844434-9
Weblogic server-overview-weblogic-scripting-tool0-1228252752844434-9
 
DotNet MVC and webpack + Babel + react
DotNet MVC and webpack + Babel + reactDotNet MVC and webpack + Babel + react
DotNet MVC and webpack + Babel + react
 
Upgrading to Alfresco 6
Upgrading to Alfresco 6Upgrading to Alfresco 6
Upgrading to Alfresco 6
 
Why Drupal?
Why Drupal?Why Drupal?
Why Drupal?
 
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UKStorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
 
PowerShellForDBDevelopers
PowerShellForDBDevelopersPowerShellForDBDevelopers
PowerShellForDBDevelopers
 
Connect 2014 JMP101: Java for XPages Development
Connect 2014 JMP101: Java for XPages DevelopmentConnect 2014 JMP101: Java for XPages Development
Connect 2014 JMP101: Java for XPages Development
 
symfony_from_scratch
symfony_from_scratchsymfony_from_scratch
symfony_from_scratch
 
symfony_from_scratch
symfony_from_scratchsymfony_from_scratch
symfony_from_scratch
 
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
 
No Docker? No Problem: Automating installation and config with Ansible
No Docker? No Problem: Automating installation and config with AnsibleNo Docker? No Problem: Automating installation and config with Ansible
No Docker? No Problem: Automating installation and config with Ansible
 
BP-9 Share Customization Best Practices
BP-9 Share Customization Best PracticesBP-9 Share Customization Best Practices
BP-9 Share Customization Best Practices
 

Recently uploaded

Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 

Recently uploaded (20)

Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 

Weblogic Console Customization