Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
n s e
lice
r a ble
n sfe
- tra
o n
Oracle WebLogic Server 12c:
an
Administration
s eฺ
II
) h a id
x u
o m e t G Guide
ฺm Activity
n
ro ฺc tud
se is S
r u z@ se th
n eฺc to u
z (re
Cru
e ne
R
D80153GC11
Edition 1.1
February 2014
D85483
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Disclaimer
This document contains proprietary information and is protected by copyright and other intellectual property laws. You may copy and
print this document solely for your own use in an Oracle training course. The document may not be modified or altered in any way.
Except where your use constitutes "fair use" under copyright law, you may not use, share, download, upload, copy, print, display,
perform, reproduce, publish, license, post, transmit, or distribute this document in whole or in part without the express authorization
of Oracle.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
The information contained in this document is subject to change without notice. If you find any problems in the document, please
report them in writing to: Oracle University, 500 Oracle Parkway, Redwood Shores, California 94065 USA. This document is not
warranted to be error-free.
If this documentation is delivered to the United States Government or anyone using the documentation on behalf of the United
States Government, the following notice is applicable:
n s e
ce
The U.S. Government’s rights to use, modify, reproduce, release, perform, display, or disclose these training materials are restricted
by the terms of the applicable Oracle license agreement and/or the applicable U.S. Government contract.
li
Trademark Notice
r a ble
n sfe
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective
owners.
- tr a
no n
a
Authors
Mark Lindros, TJ Palazzolo, Al Saganich
h a s eฺ
x ) u id
Technical Contributors and Reviewers
m G
ฺm ntRosales,
ฺ co
Bill Bell, Elio Bonazzi, Tom McGinn, Eduardo
u d e
Moranchel Will Lyons, David Cabelus,
e o
r sS t
s
Greg Stachnick, Donna Micozzi, Jon Patt, Matthew Slingsby, Bill Albert, Rich Whalen,
@ t i
Kevin Tate, Serge Moiseev, Takyiu Liu,hAngelika
z
Krupp, Viktor Tchemodanov,
u
cr Alvarez,
u e
s Alexander Ryndin
e ฺ
Diganta Choudhury, Jose
to
( r en
r u z
e C was published using: oracletutor
en
This book
R
Table of Contents
Practices for Lesson 1: Course Introduction.................................................................................................1-1
Practices for Lesson 1....................................................................................................................................1-2
Practices for Lesson 2: WebLogic Server Review ........................................................................................2-1
Practices for Lesson 2....................................................................................................................................2-2
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
n s e
Practices for Lesson 5: WebLogic Server Startup and Crash Recovery ....................................................5-1 lic
e
Practice Solution ............................................................................................................................................4-12
r a ble
fe
Practices for Lesson 5: Overview ...................................................................................................................5-2
Practice 5-1: Configuring Automatic Start and Restart of a System ...............................................................5-3
n s
- t ra
Practice Solution ............................................................................................................................................5-10
n
no
Practices for Lesson 6: WebLogic Scripting Tool (WLST) ...........................................................................6-1
a
a s eฺ
Practices for Lesson 6: Overview ...................................................................................................................6-2
h
x ) u id
Practice 6-1: Creating and Modifying a Domain with WLST ...........................................................................6-3
ฺm nt G
Practice Solution ............................................................................................................................................6-9
c o m d e
Practice 6-2: Monitoring a Domain with WLST ...............................................................................................6-10
o ฺ t u
erLayer (SSL) S...................................................................................7-1
Practice Solution ............................................................................................................................................6-16
s th i s
z@...................................................................................................................7-2
Practices for Lesson 7: Secure Sockets
r u s e
c SSL .........................................................................................................................7-3
Practices for Lesson 7: Overview
Practice 7-1: Setting ฺUp u
e n e t o
z (rLesson
Practice Solution ............................................................................................................................................7-8
r u
CPractices for Lesson 8: Overview...................................................................................................................8-2
Practices for 8: Application Staging and Deployment Plans ..........................................................8-1
n e
e Practice 8-1: Creating and Using a Deployment Plan ....................................................................................8-3
R Practice Solution ............................................................................................................................................8-14
Practices for Lesson 9: Shared Java EE Libraries ........................................................................................9-1
Practices for Lesson 9: Overview ...................................................................................................................9-2
Practice 9-1: Configuring and Deploying a Shared Library ............................................................................9-3
Practice Solution ............................................................................................................................................9-10
Practices for Lesson 10: Production Redeployment ....................................................................................10-1
Practices for Lesson 10: Overview .................................................................................................................10-2
Practice 10-1: Using Production Redeployment .............................................................................................10-3
Practice Solution ............................................................................................................................................10-11
Practices for Lesson 11: Application Work Managers ..................................................................................11-1
Practices for Lesson 11: Overview .................................................................................................................11-2
Practice 11-1: Creating and Using Work Managers .......................................................................................11-3
Practice Solution ............................................................................................................................................11-9
Practices for Lesson 12: Managing Data Sources ........................................................................................12-1
Practices for Lesson 12: Overview .................................................................................................................12-2
Practice 12-1: Controlling a Data Source .......................................................................................................12-3
Copyright © 2014. Oracle and/or its affiliates. All rights reserved.
n
Practice Solution ............................................................................................................................................14-11
s e
Practices for Lesson 15: Diagnostic Framework ..........................................................................................15-1 ce
le li
a
Practices for Lesson 15: Overview .................................................................................................................15-2
r b
sf
Practice 15-1: Using a Built-in Diagnostic Module..........................................................................................15-3
e
tr a n
Practice Solution ............................................................................................................................................15-9
n -
no
Practices for Lesson 16: WebLogic and Coherence Integration .................................................................16-1
a
Practices for Lesson 16: Overview .................................................................................................................16-2
s eฺ
h a id
Practice 16-1: Configuring Coherence*Web ..................................................................................................16-3
)
ฺm nt G x u
Practice Solution ............................................................................................................................................16-13
m e
Practice 16-2: Configuring Managed Coherence Servers ..............................................................................16-15
ฺ c o u d
o t
Practice Solution ............................................................................................................................................16-19
r sS
se.........................................................................................................17-1
i ..................................................................................17-2
Appendix A: Convenience Cheat Sheet
Using Convenience Scripts and@
u z e
Aliases in this
thCourse
e ฺ cr o us
r en t
z (
C r u
e n e
R
n s e
lice
r a ble
n sfe
- tr a
Practicesafor
n
noLesson 1:
ha sIntroduction
eฺ
Course
)
x 1 Gu i d
ฺ m
m dent
o
Chapter
r c
oฺ Stu
e
s this
z @
ฺ cru use
e to
z( ren
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
Practicesafor
n
noLesson 2:
ha s Server
eฺ Review
WebLogic
)
x 2 Gu i d
ฺ m
m dent
o
Chapter
r c
oฺ Stu
e
s this
z @
ฺ cru use
e to
z( ren
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
Practicesafor
n
noLesson 3:
ha s WebLogic
eฺ
Upgrading
)
x 3 Gu i d Server
ฺ m
m dent
o
Chapter
r c
oฺ Stu
e
s this
z @
ฺ cru use
e to
z( ren
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
Tasks
1. Connect to the host01 and host02 machines.
a. Connect via VNC to host01:
− On the main machine's desktop, double-click the VNC Viewer - host01 icon to start
VNC for host01.
er navigate S t
@ s
a. In the MAIN terminal window,
t h i s to the domain folder on host01 and host02:
z se on host01 to start the domain’s AdminServer:
cru commands
u
$ cd /u01/domains/part2/wlsadmin
b. Run thee ฺ to
nThe prompt.sh
e
following
z ( r
u
Note: script starts a new terminal window and sources the WebLogic
e Cr setWLSEnv.sh script.
R en $ prompt.sh
Important! Whenever you are instructed to execute the prompt.sh script, the
subsequent command you enter is performed in the new terminal window that opens.
For example, this step has you run the prompt.sh script, which opens a new window.
You then run the startWebLogic.sh script in the new window that was opened by
prompt.sh. Remember this for the duration of the course because the steps will not
work properly otherwise. Every practice in this course uses the prompt.sh script.
$ ./startWebLogic.sh
Note: You can set the title of each new terminal window to make it easier to
differentiate between them. Titles such as AdminServer and server1 are appropriate.
You set the title of a terminal window by clicking Terminal and selecting the Set Title
option.
c. Wait for the administration server to start.
e
New terminal window opened by prompt.sh:
n s
ce
$ cd bin
li
ble
$ ./startManagedWebLogic.sh server2 host01:7001
f. Wait for both managed servers to start.
r a
fe HTTP
n s
g. Copy the WebLogic proxy plug-in configuration for this course to the Oracle
Server (OHS) config folder on host01:
n - tra
$ cp /practices/part2/bin/mod_wl_ohs.conf o
/u01/app/fmw2/instances/webtier_1/config/OHS/ohs1
s an ฺ
h ain the MAIN
de terminal window on
host01. OHS is already configured for thisxcourse: ui
)
h. Start OHS by executing the following command
m ฺm nt G
$ ./opmnctl start roฺc
o de
$ cd /u01/app/fmw2/instances/webtier_1/bin
S tu
e ias-component=ohs1
s
@ e th i s
zhas
$ ./opmnctl startproc
ฺ r u
c status u s properly:
e
i. Ensure that OHS started
o
en in tInstance: webtier_1
r
$ ./opmnctl
(
ruz
Processes
e C ---------------+--------------------+---------+---------
e n
R ias-component | process-type |
---------------+--------------------+---------+---------
pid | status
m ฺm nt G
d. Verify that the Shopping Cart application is
ฺ co u d e
o
er i s S t
s
r u z@ se th
n e ฺc Carttoapplication.
u
(re a new tab in the web browser and run the application by using the OHS
6. Run the Shopping
z
ru networking address:
a. Open
C
R ene http://host01:7777/ShoppingCart
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) h a id
x u
G from the store to get the items
ฺm somentitems
placed into your shopping cart.com e
c. Click the Go Shopping link and purchase
r
d. Click the View ShoppingeCart tudyour shopping cart. Take note of what items
oฺlink toSview
are in your cart: @s th is
z
ru use
ฺ c
r e ne to
r uz(
C
e ne
R
$ cd PATCH_TOP
$ unzip /install/weblogicpatch/p15941858_12120_Generic.zip -d .
c. Review the README file but DO NOT execute its instructions because a rolling
upgrade is done slightly differently:
$ cd 15941858
$ gedit README.txt
e
9. Apply the patch on the host01 machine by using the rolling upgrade method.
n s
ce
a. Shut down the servers on host01 by pressing Ctrl + C in the terminal windows for
li
ble
AdminServer and server1. DO NOT CLOSE THE TERMINAL WINDOWS
BECAUSE YOU WILL REUSE THEM!
fer a
b. Use the Shopping Cart application while server1 is down to add a new item to your
a n s
- tr
cart. This simulates a user continuing to use the application while the system is
n
no
running, and causes the secondary HTTP session to become the primary HTTP
session if server1 was the primary server.
c. Execute OPatch to apply the patch and answer a ys
a
when it e ฺ if the system is ready
x ) h ui d asks
for patching:
ฺ m t G
$ opatch apply -jdk o ฺ com uden
$ . /practices/part2/practice03-01/setOPatchEnv.sh
St
er theisfollowing:
$JAVA_HOME
s th
z@Patch
Your output should resemble
cr u u s e
ฺ
Oracle Interim Installer version 13.1.0.0.0
e n
Copyrighte (c) to2012, Oracle Corporation. All rights reserved.
z (r
C r u
R ene Oracle Home : /u01/app/fmw
Central Inventory : /u01/app/oraInventory
from : /u01/app/fmw/oraInst.loc
OPatch version : 13.1.0.0.0
OUI version : 13.1.0.0.0
Log file location :
/u01/app/fmw/cfgtoollogs/opatch/15941858_Feb_13_2013_15_52_51/ap
ply2013-02-13_15-52-45PM_1.log
n s e
ce
Patch 15941858 successfully applied
li
ble
Log file location:
r a
/u01/app/fmw/cfgtoollogs/opatch/15941858_Feb_13_2013_15_52_51/ap
ply2013-02-13_15-52-45PM_1.log
n sfe
- tr a
OPatch succeeded. n
no command and wait for it
d. Start AdminServer on host01 again by repeating its
s eฺa startup
to fully start.
h a
) againubyidrepeating its startup command
e. Start the server1 managed server on host01 x
ฺm nt G
c o m d eyour WebLogic environment.
ฺ
and wait for it to fully start.
f. You are now half way done o
ermachine
with
S tu
upgrading
@ s t h i s
z
10. Apply the patch on the host02 by using the rolling upgrade method.
c ru Cart u e
ssimulates
n e ฺ
a. Use the Shopping
to
application again now that the servers on host01 and host02
e
are running. Again, this a user continuing to use the application while the
z (r isforrunning,
system and causes WebLogic to ensure that there is a secondary backup
C u
r you have not lost your session
session your shopping cart items. Be sure to click View Shopping Cart to verify that
e n e yet.
R b. Shut down the server on host02 by pressing Ctrl + C in the terminal window for
server2.
c. Execute OPatch to apply the patch and answer y when it asks if the system is ready
for patching. This command must be executed in the same terminal window where you
ran setOPatchEnv.sh.
Note: The practices folder is a shared disk that is accessible from both host01 and
host02. If you are not using a shared disk environment you would have to copy the files
manually to host02.
$ cd /practices/part2/practice03-01/PATCH_TOP/15941858
$ opatch apply -jdk $JAVA_HOME
n s e
lice
ble
OPatch detects the Middleware Home as "/u01/app/fmw"
fer a
Applying interim patch '15941858' to OH '/u01/app/fmw'
n s
n
Verifying environment and performing prerequisite
- tra checks...
All checks passed.
a no
has idout
Please shutdown Oracle instances) running eฺ of this ORACLE_HOME
ฺ m x G u
on the local system.
om uden t
ฺ c
ero is St
(Oracle Home = '/u01/app/fmw')
C ruzBacking up files...
R ene Patching component oracle.wls.core.app.server, 12.1.2.0.0...
OPatch succeeded.
d. Start the server2 managed server on host02 again by repeating its start up
command and wait for it to fully start.
x ) h u id
a. Navigate to the current practice folder on host01 and execute the following script to
clean up the practice environment:
m ฺm nt G
$ ./cleanup.sh
ฺ co u d e
o
er contents S t
s s
The script performs the following:
@ e th i
u z
− Deletes unzipped OPatch and the PATCH_TOP folder
cr o us
14. Shut down theฺenvironment.
e
( r
a. Press enCtrl + C in tall terminal windows that are running servers.
b.uzClose all terminal windows, including the MAIN entitled windows. This is to ensure that
r
C the environment is set properly for the next practice.
en e
R
Solution Tasks
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
e
$ . ./setup_solution.sh
n s
ce
Note: This script behaves differently on each host, performing what is required for each.
li
ble
5. The solution script performs the following:
a. Starts the wlsadmin domain's AdminServer and server1 servers
fer a
a n s
tr
b. Sets up the domain by setting the environment, undeploying any applications, and
deploying the Shopping Cart application
n -
a no
c. Prepares the OPatch patch by creating the PATCH_TOP folder and unzipping the patch
to it
h a s eฺ
6. Open a new terminal window on host02:
x ) uid
$ prompt.sh
m ฺm nt G
ฺ c o u d e folder.
o
er not forget
7. Change the current directory to the
8. Execute the solution script:s(Do
t
current practice
Sthe first [.].)
i s
r u z@ se th
$ . ./setup_solution.sh
9. The solution e
n ฺc performs
to u the following:
(re the wlsadmin domain's server2 server
script
z
a. Starts
rb.u Sets the environment to run OPatch
C
R ene10. Wait for servers on host01 and host02 to fully start, then return to the original terminal
window on host01 and press Enter at the prompt.
11. Perform steps 3g, 3h, and 3i to start the OHS server.
12. Continue starting at step number 5 and be sure to skip step number 8.
Note: All practices depend on this practice so the solution is required to work on other
practices. However, only steps 2, 3g, 3h, and 3i are required. Performing the rolling
upgrade is not required for other practices.
n s e
lice
r a ble
n sfe
- tr a
Practicesafor
n
noLesson 4:
h a s andeUsing
ฺ
Creating
x ) ui d Domain
ฺ m
Templatest G
ฺ c u d en4
om Chapter
sero is St
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
a s
N if referencing AuctionMemLib
x ) h uide
m G
ฺmJava nEEt applications,
o e
Some forms of the Auction application, like most are dependent on
o ฺ c tu d
ser application
various server resources. These resources include Java Database Connectivity (JDBC) data
In thisS
i s
sources and shared Java EE libraries. practice, you will create the necessary domain
infrastructure to support the@
u z e
Auction
th The schemaand package it within a domain template by
ฺ c
using the Domain Templaterthe domain
u s template as SQL scripts,
Builder tool. required by the Auction application will
C r u
e n e
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
z@ thmachines.
Tasks
r u s e
ฺcVNC ttoohost01.
u
1. Connect to the host01 and host02
a. Connectevia
n
z (re via VNC to host02.
u up the practice environment.
b. Connect
2.CrSet
R ene Note: Because you have already started the domain manually in practice03-01, the
setup script now automatically starts the servers of the domain on each machine.
a. Open a terminal window on each machine by clicking the terminal icon in the launch
panel located at the top of the screen. Set the title for each terminal window to MAIN.
b. In the terminal window on host01, navigate to the practice04-01 folder:
$ cd /practices/part2/practice04-01
c. Execute the setup.sh script to set up the initial practice environment:
$ ./setup.sh
This script performs the following:
− Ensures that no previous servers are running on both machines
− Starts the wlsadmin domain on host01
− Ensures that no applications or libraries are deployed
− Deploys the starting application used for this practice
d. Wait for the script to finish before continuing with the next step.
e ฺ cr AuctionLib
e. Verify that the
o u s shared library and AuctionWebAppSec application are
r en t
(
deployed.
r uz
C
e ne
R
4. Shut down the domain.
In order to create a template of the wlsadmin domain, it is safest if it is shut down.
a. Shut down the AdminServer, server1, and server2 servers. Press Ctrl + C in
each terminal window to quickly achieve this. DO NOT CLOSE THE TERMINAL
WINDOWS BECAUSE YOU WILL REUSE THEM!
5. Create a custom template using the existing wlsadmin domain.
a. In the MAIN terminal window on host01, execute the following commands to start the
WebLogic Template Builder tool:
$ cd /u01/app/fmw/wlserver/common/bin
$ ./config_builder.sh
b. Verify that the Create Domain Template option is selected.
c. Verify that Use Domain as a Source is selected.
Field Value
Name AuctionDomain
Version 12.1.2.0.0
Author Oracle Corporation
Category Customer-facing
Description Production domain to support auctions
n s e
lice
le
Click Next.
h. Review the information on the Applications page. Take note of the Location and
r a b
s fe called
Internal Path fields for each application. Verify that there are two applications
n
tra
AuctionLib, which is a shared library, and AuctionWebAppSec, which is its referencing
library.
o n -
i. Confirm that the two applications are selected and click n
s eฺa Next:
) h a id
x
ฺm nt G u
co m d e
o ฺ tu
s er i s S
r u z@ se th
n e ฺc to u
z (re
Cru
e ne
R j. In the right panel labeled Template, expand and select <Domain Root Directory>:
k. In the left panel labeled File System, locate and select the
/practices/part2/practice04-01/resources/bin/startServer1.sh file.
l. Click the Add button.
- /practices/part2/practice04-
01/resources/jdbc/deleteDatabase.sql
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) h a id
x
ฺm nt G u
n. Click Next.
o m e files.
6. Configure variable replacement forฺccustom template
d
o tu
r stheScontents of the
einspect
s
@ e thi
a. Launch a text editor and
r u z s
/practices/part2/practice04-01/resources/bin/wlstPrompt.sh file.
b. Notice thatฺc
the path touyour WebLogic installation is hard-coded, as in the following
e n e to
( r
example:
z/u01/app/fmw/wlserver
r u
C c. Close the file and return to the Domain Template Builder.
e n e
R
n s e
lice
r a ble
n sfe
- tr a
n
e. Select wlstPrompt.sh and click the Edit button.
f.
a no
Notice that the preceding hard-coded text has automatically been replaced with a token
a s eฺ
(@token_name). A new file is generated that contains these updates:
h
x ) uid
/practices/part2/practice04-01/resources/bin/_edit_wlstPrompt.sh
g. Click Next.
m ฺm nt G
ฺ co u d e
o
er i s S t
h. Review the template’s contents and click Create.
s
i. When finished, click Next, and then click Finish.
7.
r u z@ se th
Test the custom template by using the Configuration Wizard.
n e ฺc to u
You will create a new domain based on the template you just created. This new domain will
z( re
sit in a new folder alongside the existing wlsadmin domain.
C r u
a. Perform the following commands to launch the Configuration Wizard:
e ne $ cd /u01/app/fmw/wlserver/common/bin
R $ ./config.sh
b. Make the following selections and entries on the Configuration Type page:
Field Value
What do you Create a new domain.
want to do?
Domain /u01/domains/part2/AuctionDomain
Location
Click Next.
c. Select the Create Domain Using a Custom Template option, enter the following
template location, and click Next:
/practices/part2/practice04-01/template/AuctionTemplate.jar
d. Enter the following application location and click Next:
/u01/domains/part2/AuctionDomain/apps
e. Click Next to skip changing the administrative login credentials. They default to the
credentials that were set in the original domain that created the template.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
h. The data source will be automatically tested. Confirm that the test was successful:
i. Click Next.
j. You can optionally select any of the options to see more configuration settings for the
n s e
ce
Administration Server, Node Manager, and so on. However, it is not necessary as the
li
ble
settings are already identical to the original domain based on the template's settings.
Click Next to skip the Optional Configuration page.
fer a
k. Click Create to create your new domain.
a n s
n- tr
l. Wait for the domain creation process to complete, click Next, and Finish.
8. Perform post-creation tasks:
a no
a s eฺ
a. Create the JAR file for remote managed servers by using the pack command on
h
host01:
x ) u id
m ฺm nt G
$ cd /u01/app/fmw/wlserver/common/bin
ฺ co u d e
o t
$ ./pack.sh -domain=/u01/domains/part2/AuctionDomain -
s er i s S
template=/practices/part2/practice04-01/AuctionDomainManaged.jar
zmachines
$ cd /u01/domains/part2/AuctionDomain
$ ./startWebLogic.sh
Note: If you selected Production Mode for the domain during creation, then you must
enter the username and password when the server is starting. This is also true for both
managed servers. Remember that the login is weblogic and Welcome1. You can
also ignore any errors you encounter as long as the server displays the in RUNNING
mode message.
n s e
ice
b. In the server1 terminal window on host01, start server1 by using the following
l
ble
script:
$ cd /u01/domains/part2/AuctionDomain
fer a
$ ./startServer1.sh
a n s
n - tr
In the server2 terminal window on host02, start server2 by using the following
no
c.
a
script:
$ cd /u01/domains/part2/AuctionDomain
ha s eฺ
$ ./startServer2.sh
x ) uid
o m ฺm Server
d. Verify domain settings using the WebLogic
e n t GAdministration Console:
ro ฺc tud
e isasSthe password and Welcome1 as the password
− http://host01:7001/console
Note: Log in using s
@ name this AuctionDomain
weblogic
r u zdomains e
ฺc to u> Servers and verify that all three servers are running.
− Note that the
e n e
− (rVerify that each managed server is part of cluster1.
− Select Environment
z
Cru − Select Deployments and verify that the Auction application and library are deployed
e ne
R
(Active) and targeted to cluster1.
− Select Services > Data Sources and verify that the jdbc/AuctionDB data source is
configured and is targeted to cluster1.
10. Test the Auction application.
a. Direct your web browser to the following URL:
http://host01:7011/AuctionWebAppSec/index.jsp
n s e
ce
c. Click the Go Home link, and then click the View Auction List link to view the list of
li
ble
auctions stored in the database.
fer a
a n s
n- tr
a no
ha s eฺ
x ) uid
m ฺm nt G
ฺ co u d e
o
er i s S t
s
r u z@ se th
n e ฺc to u
z( re
r u
C If you see the list of auction items, then congratulations; you have successfully created
e ne
R 11.
and used a WebLogic domain template.
Shut down the environment.
a. Press Ctrl + C in all terminal windows that are running servers.
b. Close all terminal windows used for each server. You can leave the MAIN terminal
windows open if you are continuing on to another practice.
Solution Tasks
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
e
4. The solution script unpackages the solution domain contents to
n s
ce
/u01/domains/part2/AuctionDomain.
li
ble
5. Open a new terminal window on host02:
$ prompt.sh
fer a
6. Change the current directory to the current practice folder.
a n s
7. Execute the solution script:
n - tr
$ ./setup_solution.sh
a no
8. The solution script performs the following:
ha s eฺ
x ) u id
ฺm nt G
a. Unpackages the solution domain contents to
m
/u01/domains/part2/AuctionDomain
ฺ co u d e
o t
b. Creates Auction database artifacts
9.
ser 9. is S
Continue starting at step number
@not depend
Note: Other practiceszdo
u e th on this practice. Therefore, the solution is not required
r
ฺc to u s
e
to work on other practices.
n
z (re
C ru
R ene
n s e
lice
r a ble
n sfe
- tr a
Practicesafor
n
noLesson 5:
h a s Server
eฺ Startup and
WebLogic
)
x Recovery
ui d
ฺ m
Crash t G
ฺ c u d en5
om Chapter
sero is St
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
they crash or the machine they are running on fails. And although Node Managers automatically
restart failed servers, they do not automatically restart servers in the event of a machine failure.
This practice shows you how to configure your systems and WebLogic to automatically recover
the entire system regardless of any Node Manager, server, or machine failure.
This practice focuses on:
• Configuring WebLogic processes to automatically start or restart when the host01
machine starts
n s e
ice
Crashing the host01 machine while the Node Manager, AdminServer, and server1
l
•
ble
servers are running
• Starting the host01 machine again
fer a
a n s
tr
• Checking to see if the WebLogic Node Manager and server processes start
automatically
n-
a no
Note: This practice does not perform any related configuration on the host02 machine because
it is repetitive.
ha s eฺ
x ) uid
m ฺm nt G
ฺ co u d e
o
er i s S t
s
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
Note: This practice does not configure OHS or the database to start automatically. This
statement is for informational purposes only. Again, the diagram depicts using init.d
and Node Manager to start the entire domain, but this practice focuses only on host01.
3. When the Node Manager process starts, it is configured to restart servers as part of a
crash recovery process. The Node Manager recognizes that the servers it controls shut
down unexpectedly and automatically restarts them all, including the administration
e
server. This ensures that the entire system is ready to process client requests again.
n s
Tasks
lice
1. Connect to the host01 and host02 machines.
r a ble
a. Connect via VNC to host01.
n sfe
b. Connect via VNC to host02.
- tr a
2. Set up the practice environment.
no n
a
s eฺ
a
a. You may reuse the MAIN terminal windows from previous practices. Otherwise, open a
) h id
terminal window on each machine by clicking the terminal icon in the launch panel
x u
ฺm nt G
located at the top of the screen.
co m d e
b. Set the title of each terminal window by selecting Terminal > Set Title and entering
o ฺ tu
er i s S
MAIN as the title. This makes it easier to distinguish the purpose of each window.
s
z@ se th
c. Navigate to the practice folder:
r u
ฺcfollowing uscript to ensure that Node Manager does not automatically start
$ cd /practices/part2/practice05-01
d. Executee to
n
(re when it starts:
the
z
servers
Cru $ ./setup.sh
e ne This script removes the server state files associated with how Node Manager
R determines if it should automatically start a server.
3. Configure the Node Manager to run as an init.d service.
a. Open the init.d configuration script for Node Manager on host01:
Note: This is a script you must write manually. It is not supplied with the product.
$ gedit resources/nodemgr
b. Review the script to learn how it is configured:
1) The ### BEGIN INIT INFO section instructs the init.d system how to control
Node Manager during the different user run levels for OS start up and shut down.
It also says that the network and local file systems are required to be operational
and available before starting the Node Manager.
2) The . /etc/rc.d/init.d/functions statement sources init.d functions
that may be used in the script.
fe r a
s
SERVICE_NAME The name of this service
n
t aconditionally
A lock file used by this scriptrto
-
LOCKFILE
control when to restart then
nothere is no need to stop a
Node Manager. If the
lock file does nota
sprocesseฺthat is not running.
exist,
Node Manager
h a id by init.d to start, stop,
)functionsucalled
x
4) The next part of the script containsm
o m ฺ the
t G described in the table above
It uses thenvariables
e
ฺcsuch as,tuwhether
d the service command should be
and restart the Node Manager.
ro S
e the current
to make proper decisions;
performed, basedson
@ th i s state of the Node Manager.
c. Close the file, orzkeep it open
e for reference.
cr u u s
ฺ scripttowith init.d, make it executable, and verify its configuration.
d. Registerethe
r
$ (sue n
uz
Cr
Password: oracle
e ne $ cp resources/nodemgr /etc/init.d
R $ chmod 755 /etc/init.d/nodemgr
$ chkconfig –-add nodemgr
$ chkconfig --list nodemgr
The output for listing the service should resemble the following. The numbers represent
the run levels of the operating system, and the text specifies whether the service runs
in that run level.
nodemgr 0:off 1:off 2:off 3:on 4:on 5:on 6:off
4. Configure WebLogic servers to automatically restart after a crash (still as the root user
because it does not affect the ownership or permissions of the existing file).
a. Navigate to the Node Manager home folder, and open the properties file for editing:
$ cd /u01/nodemanager
$ gedit nodemanager.properties
b. Set the CrashRecoveryEnabled property to true.
c. Save and close the file.
$ exit
6. Review service output for automatic server start ups.
This should not happen if you performed these steps in order. However, you may notice
that some or all of the servers start automatically. This is because previously they may have
shut down unexpectedly and your Node Manager service has automatically restarted them.
If this is the case, then everything is ok. Simply continue the steps and ignore any errors or
warnings that may occur as long as your servers are all running. You can tell this by looking
at the output for your Node Manager service. If you see the following, then servers have
n s e
ce
started automatically:
li
ble
<The server '<server-name>' is running now.>
7. Start domain using Node Managers (as the oracle user).
fer a
a n s
tr
a. Perform the following commands to start the rest of the domain:
n -
no
On host02:
$ wlst.sh startNM.py
a
s only
Why? You configure Node Manager to run as aa
) h i
service
deฺononhost02.
the host01 machine.
x G u
On host01 (as the oracle user):mฺm
You must still use a manual method to start Node Manager
o uden t
ฺ c
erois upisand
Strunning by logging in to the Administration
$ wlst.sh startDomain.py
s th of the AdminServer, server1, and server2. If all
z@ the
b. Verify that the entire domain
r u s e
ฺcthe RUNNING
Console and checking status
e to u state, continue to the next step.
n
three are in
z (re
Cru
e ne
R
8. Crash host01.
a. Open a terminal window on the main host machine. There is a terminal window icon
on the desktop you can use.
b. Perform the following on the main host machine to crash host01:
$ su
Password: oracle
$ cd /usr/sbin
$ ./xm destroy host01
Why? If you did not already know, the host01 and host02 machines are VMs running
on a single machine. This is the command used to shut down a VM to simulate
crashing a machine.
n e
XX:MaxPermSize=128m
to -
z (re
Dbea.home=/u01/app/fmw -Xverify:none -
e ne Djava.endorsed.dirs=/u01/app/fmw/jdk/jre/lib/endorsed:/u01/app/f
R mw/oracle_common/modules/endorsed -
Djava.security.policy=/u01/app/fmw/wlserver/server/lib/weblogic.
policy -Dweblogic.nodemanager.JavaHome=/u01/app/fmw/jdk
weblogic.NodeManager -v
oracle 1756 1 0 16:49 ? 00:00:02
/u01/app/fmw/jdk/bin/java -
Dderby.system.home=/u01/domains/part2/wlsadmin/common/db -
classpath
/u01/app/fmw/wlserver/common/derby/lib/derby.jar:/u01/app/fmw/wl
server/common/derby/lib/derbynet.jar:/u01/app/fmw/wlserver/commo
n/derby/lib/derbytools.jar:/u01/app/fmw/wlserver/common/derby/li
b/derbyclient.jar org.apache.derby.drda.NetworkServerControl
start
oracle 1777 1714 8 16:49 ? 00:00:48
/u01/app/fmw/jdk/bin/java -server -Xms256m -Xmx512m -
XX:MaxPermSize=256m -Dweblogic.Name=AdminServer -
Djava.security.policy=/u01/app/fmw/wlserver/server/lib/weblogic.
policy -Dweblogic.ProductionModeEnabled=true -
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
o m e
e. Log in to the Administration Console and verify that all domain servers are in the
c d
o ฺ tu
er i s S
RUNNING state again. If all the servers are up and running and you are able to use the
s
administration console, then congratulations; you have successfully configured the
u z@ se th
Node Manager and WebLogic to automatically restart when a machine crashes!
r
e ฺc to u
11. Shut down the environment.
n
z( re
a. Perform the following command to stop the wlsadmin domain. Note that the Node
C r u Managers will remain running and the host01 Node Manager can be used as a service
ne
for the remainder of the course.
R e $ wlst.sh stopDomain.py
b.Close all terminal windows used for any servers. You should still have MAIN terminal
windows open on both machines.
12. Run the cleanup script.
a. Navigate to the current practice folder on host01 and execute the following script to
clean up the practice environment. This script resets the practice to its original state, so
there will not be any conflicts with other practices. Enter oracle and answer yes to
any security questions as appropriate.
$ su
Password: oracle
$ ./cleanup.sh
$ exit
− Kills all java processes on host01 (just in case the stopDomain.py script did not
shut them down)
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
Solution Tasks
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
HOST01:
1. Open a new terminal window on host01:
$ prompt.sh
2. Change the current directory to the current practice folder.
3. Execute the following script to ensure that Node Manager does not automatically start
servers when it starts:
$ ./setup.sh
n s e
ce
HOST02:
li
ble
4. Open a new terminal window on host02:
$ prompt.sh
fer a
5. Change the current directory to the current practice folder.
a n s
6. Execute the solution script (as the oracle user):
n - tr
$ ./setup_solution.sh
a no
h a s
Note: This script behaves differently on each host, performing
e ฺ
what is required for each.
x ) ui d
G
7. The solution script performs the following:
a. Starts the Node Manager on host02 ฺm t
ฺ com uden
eroyouiscreated
St using prompt.sh in step 1, execute the
HOST01:
s
@ user):
8. Within the same terminal window
th
solution script (as thezroot
r u s e
n e
$ su (password ฺc is oracle)
to u
z (re
$ ./setup_solution.sh
C u Become the root user using the command exactly as shown in this step. Executing
rNote:
ene
su with other parameters can cause the environment to set differently and you will get
R unpredictable results. Your practice WILL fail otherwise.
9. The solution script performs the following:
a. Confirms it is being run by the root user
b. Configures the Node Manager as an init.d service
c. Sets CrashRecoveryEnabled to true in the nodemanager.properties file
d. Starts the Node Manager service
e. Starts the wlsadmin domain
10. Wait for servers on host01 and host02 to fully start.
11. Continue starting at step number 7b.
Note: Other practices do not depend on this practice. Therefore, the solution is not required
to work on other practices.
n s e
lice
r a ble
n sfe
- tr a
Practicesafor
n
noLesson 6:
h a s Scripting
eฺ
WebLogic
x ) ui d Tool
ฺ m
(WLST) t G
ฺ c u d en6
om Chapter
sero is St
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
ne
This practice involves the following:
R e 1. Using WLST to create a domain from a template, modifying the domain, and saving the
configuration
2. Using the pack and unpack commands to set up the configuration for managed servers
on host02, starting the domain, and testing the application to verify that everything works
properly.
Tasks
1. Connect to the host01 and host02 machines.
a. Connect via VNC to host01.
b. Connect via VNC to host02.
2. Set up the practice environment.
a. You may reuse the MAIN terminal windows from previous practices. Otherwise, open a
terminal window on each machine by clicking the terminal icon in the launch panel
located on the top of the screen.
b. Set the title of each terminal window by selecting Terminal > Set Title and entering
MAIN as the title. This makes it easier to distinguish the purpose of each window.
n s e
ce
a. Remove JMS and JDBC code from the script. Find the following lines in the code and
delete them. Feel free to review them before deleting them.
li
#=========================================================
r a ble
# Create a JMS Server.
n sfe
- tr
#========================================================= a
cd('/')
no n
create('myJMSServer', 'JMSServer') a
s eฺ
) ha id
x
ฺm nt G u
m
#=========================================================
ฺ co
# Create a JMS System resource.
u d e
o
er i s S t
s
#=========================================================
cd('/')
r u z@ se th
e ฺ c ou
create('myJmsSystemResource', 'JMSSystemResource')
r en t
(
cd('JMSSystemResource/myJmsSystemResource/JmsResource/NO_NAME_0'
ruz
)
C
R ene #=========================================================
# Create a JMS Queue and its subdeployment.
#=========================================================
myq=create('myQueue','Queue')
myq.setJNDIName('jms/myqueue')
myq.setSubDeploymentName('myQueueSubDeployment')
cd('/')
cd('JMSSystemResource/myJmsSystemResource')
create('myQueueSubDeployment', 'SubDeployment')
#=========================================================
# Create and configure a JDBC Data Source, and sets the JDBC
user.
#=========================================================
cd('/')
set('URL','jdbc:derby://localhost:1527/db;create=true')
set('PasswordEncrypted', 'PBPUBLIC')
set('UseXADataSourceInterface', 'false')
create('myProps','Properties')
cd('Properties/NO_NAME_0')
create('user', 'Property')
e
cd('Property/user')
n s
ce
cmo.setValue('PBPUBLIC')
li
ble
cd('/JDBCSystemResource/myDataSource/JdbcResource/myDataSource')
create('myJdbcDataSourceParams','JDBCDataSourceParams')
fer a
cd('JDBCDataSourceParams/NO_NAME_0')
a n s
n- tr
set('JNDIName', java.lang.String("myDataSource_jndi"))
a no
cd('/JDBCSystemResource/myDataSource/JdbcResource/myDataSource')
ha s eฺ
create('myJdbcConnectionPoolParams','JDBCConnectionPoolParams')
x ) uid
ฺm nt G
cd('JDBCConnectionPoolParams/NO_NAME_0')
o m
set('TestTableName','SYSTABLES')
c d e
o ฺ tu
ser i s S
z@ seto ththe servers.
#=========================================================
r u
ฺc to u
# Target resources
n e
(re
#=========================================================
zcd('/')
cd('Server/server1')
set('ListenPort', 7011)
set('ListenAddress', 'host01')
cd('/')
create('server2', 'Server')
cd('Server/server2')
n s e
lice
ble
set('ListenPort', 7012)
set('ListenAddress', 'host02')
fer a
d. Add a cluster and assign the managed servers to it. After the code you just added to
a n s
- tr
create managed servers, add the following code that creates a cluster named
n
no
cluster1 and assigns the two servers to it:
a
s eฺ
# Create a cluster and assign the managed servers to that
cluster.
) ha id
cd('/') x
ฺm nt G u
c
create('cluster1', 'Cluster')
o m d e
o ฺ tu
er is Sapplication. After the cluster creation code, add
assign('Server', 'server1,server2','Cluster','cluster1')
s th
z@
e. Deploy the SimpleAuctionWebApp
u
the following rcode s e
ฺcapplicationu
to deploy an application to cluster1:
n e to
(re
# Deploy
z
Cru myApp=create('SimpleAuctionWebApp', 'AppDeployment')
cd('/')
e ne
R
myApp.setSourcePath('/practices/part2/apps/solution/SimpleAuctio
nWebApp.war')
assign('AppDeployment', 'SimpleAuctionWebApp', 'Target',
'cluster1')
f. Set the domain name and location. Find the line in the code that uses the
writeDomain command and change the domain path and name so the command
looks as follows:
writeDomain('/u01/domains/part2/SimpleAuctionDomain')
g. Save the script.
e
drwxr-x--- 11 oracle oinstall 4096 Feb 18 09:08
SimpleAuctionDomain
n s
lice
ble
6. Perform postcreation tasks:
a. Create the jar file for remote managed servers using the pack command on host01:
fer a
$ cd /u01/app/fmw/wlserver/common/bin
a n s
$ ./pack.sh -domain=/u01/domains/part2/SimpleAuctionDomain -
n- tr
no
template=/practices/part2/practice06-01/SimpleDomainManaged.jar
-template_name="My Domain Template" -managed=true a
s eฺ
) h a i d
b. Verify that your practice folder contains the SimpleDomainManaged.jar file.
x
ฺm side u
G the unpack command on
m
c. Create the remote managed server domain
o ude n t using
host02:
o ฺ c
s er is St is a shared file system between host01 and
Note: Again, remember that /practices
z@ se th
host02.
r u
ฺc to-domain=/u01/domains/part2/SimpleAuctionDomain
u
$ cd /u01/app/fmw/wlserver/common/bin
e n e
r
$ ./unpack.sh -
(
z-app_dir=/u01/domains/part2/SimpleAuctionDomain/apps
template=/practices/part2/practice06-01/SimpleDomainManaged.jar
C r u
e ne d. Verify that the SimpleAuctionDomain domain is now present on host02:
R /u01/domains/part2/SimpleAuctionDomain
7. Start domain.
On host01:
a. Start the administrative server:
$ cd /u01/domains/part2/SimpleAuctionDomain
$ prompt.sh
Note: This is the last reminder to enter commands in the new terminal window that is
opened by the prompt.sh script.
$ ./startWebLogic.sh
b. Start server1 using weblogic as the username and Welcome1 as the password:
$ prompt.sh
$ cd bin
$ ./startManagedWebLogic.sh server1 host01:7001
n-
no
If you see the main application landing page then congratulations, you have
a
successfully created and modified a WebLogic domain from the beginning using
WLST.
ha s eฺ
x ) uid
10. IMPORTANT Instruction: Leave servers running for next practice.
m ฺm nt G
o e
The domain you just created is used for the next practice in this lesson. Leave the servers
o ฺ c tu d
on both machines running. However, if you are not going to perform the next practice, then
ser i s S
you can optionally perform the next step to clean up the practice folder.
u z@ se th
11. Run clean up script (optional). YOU SHOULD NOT PERFORM THIS STEP IF YOU ARE
r
n e ฺc to u
DOING PRACTICE 6-2.
z( re
a. Navigate to the current practice folder on host01 and execute the following script to
u
clean up the practice environment. This script resets the practice to its original state, so
C r only execute it if you want to undo your configuration.
e ne $ ./cleanup.sh
R The script performs the following:
− Kills all java processes on both machines
− Deletes WLST scripts from the practice folder
− Deletes the SimpleDomainManaged.jar file from the practice folder
− Deletes SimpleAuctionDomain on both machines
Solution Tasks
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
e
4. The solution script performs the following:
n s
ce
a. Cleans up the practice to the starting point by running cleanup.sh
li
ble
b. Copies solution WLST scripts to the practice folder
c. Creates the SimpleAuctionDomain domain using the solution script
r a
fe file
n s
tra
d. Executes pack to create the SimpleDomainManaged.jar managed server
o
e. Executes unpack on the host02 machine to set up domain files
n-
f. Starts the AdminServer and server1 servers in their n
a boot.properties file for server1 to start. as
a own terminal windows. It uses
ฺ
) h i de
ฺ m x G u
t
5. Open a new terminal window on host02:
$ prompt.sh
Change the current directory toro
om practice
ฺccurrent u d enfolder.
e is St
6. the
Execute the solution script:s
z@ se th
7.
r u
ฺc to u the following:
$ ./setup_solution.sh
n e
(re the server2 server in its own terminal window. It uses a boot.properties
8. The solution script performs
a. zStarts
C ru file for server2 to start.
e n e
R
9. Wait for servers on host01 and host02 to fully start.
10. Continue starting at step number 8.
Note: Only practice06-02 depends on this practice so the solution is not required to
work on other practices.
SimpleAuctionWebApp application. Next, you execute the script, which runs in a loop
displaying the statistics of the running servers. Then you run the SimpleAuctionWebApp
application to change the statistics and see them in your monitoring script display.
This practice shows you the best practice for using WLST to get domain-wide runtime statistics.
There are two ways to capture runtime statistics per server, either by connecting to each server
individually and capturing the ServerRuntime data on each server, or by connecting to the
e
AdminServer and using the DomainRuntime MBean to capture the ServerRuntime
n s
ce
statistics for any and all servers in the domain. The best practice is to use the DomainRuntime
MBean to capture all statistics for the domain.
li
r a ble
Tasks
n s feVNC.
tra
1. If not already connected, connect to the host01 and host02 machines using
n -
nopractices. Otherwise, open a
2. Set up the practice environment.
a. You may reuse the MAIN terminal windows from previous a
sterminaleฺicon in the launch panel
terminal window on each machine by clicking the
) h a id
x u
tG
ฺmselecting
located on the top of the screen.
o m
b. Set the title of each terminal window by
e n Terminal > Set Title and entering
MAIN as the title. This makesฺitceasier to distinguish
d
ro S tu the purpose of each window.
@ se this and the servers are all still running, then skip the
c. If you completed practice06-01
next step.
r u z se
e c u
ฺ practice06-01
o
e n
d. If the servers for
t are not running, then run the solution for
z (rpractice
practice06-01 to set the environment up for this practice. Follow the instructions for
C r u the solution for practice06-01, and then continue with the next step after all
o m
print 'Server not available.'
c d e
o ฺ tu
er i s S
exit()
s
z@ se th
d. Review the script’s outer loop code. The script performs two different loops to capture
r u
and display metrics. The first loop is a while loop. This loop runs forever and is used
ฺc to u
n e
to repeat the process of capturing the live runtime data from the domain and displaying
z( re
it on the screen. This loop uses a 15 second sleep between iterations and executes
C r u all of its commands within a try block. This code currently contains TODO comments
ne
that you will replace with WLST commands to perform the tasks described in them.
R e # Loop indefinitely
while 1:
sessions = '-'
invokeCount = '-'
print '---------------------------------------------'
jythontime.sleep(15)
except Exception, e:
e
print 'Exception: ' + e
n s
ce
e. Review the script’s inner loop code. The second loop is a for loop. This loop runs for
li
ble
each ServerRuntime MBean returned by the domain, and iterates through all of the
ServerRuntime MBeans of the domain to capture the metrics to display. This code
fer a
currently contains TODO comments that you will replace with WLST commands to
a n s
perform the tasks described in them.
n- tr
no
IMPORTANT NOTE: Use spaces, not tabs, to indent your code. WLST is very picky
a
s eฺ
when it comes to whitespace because indentation is used to delimit loops and other
control structures.
) ha id
#Loop through the servers x
ฺm nt G u
for server in servers:
co m d e
o ฺ tu
er i s S
#TODO: Skip AdminServer because the web app
s
z@ se th
# is not deployed there
r u
ฺc to u
#TODO: Navigate to the server runtime of the
n e
re
# current server entry represented by your variable
deployed there comment in the code and replace it with code that determines
whether the current server for this iteration is the AdminServer or not. If it is the
AdminServer, then go to the next iteration in the loop because the application is not
deployed to the AdminServer to avoid the code raising an exception.
if server.getName() == 'AdminServer':
continue
j. Find the #TODO: Navigate to the server runtime of the current
n s e
server entry represented by your variable comment in the code and
lice
ble
replace it with the code that navigates to the MBean that represents the current server.
All of the server's associated MBeans, operations, and attributes are available to your
fer a
code from this MBean. You use the getName() method to get the name of the server
a n s
- tr
MBean because the hierarchy is structured to use the name of the server for this
n
no
location in the tree.
cd('/ServerRuntimes/' + server.getName()) a
s withethe ฺ runtime of the
) h a i d
SimpleAuctionWebApp applicationxcomment u
k. Find the #TODO: Get the MBean associated
ฺ
m denm t G in the code and replace it with the
ฺ co
code that returns the MBean that represents the runtime information associated with
e roThe
the running SimpleAuctionWebApp
S tonu this particular server. Store the result in a
@ s this
variable called webModule. getMBean() method is used to return the object to
r u
use for subsequentz s e
commands. Instead of traversing the MBean tree, the code passes
c to the
the knownฺpath
e o ucommand to preserve the current location in the tree. Some
n t
(reto the required MBean object.
aspects of the path comprise real-time data, so variables are used to get the correct
z
ru webModule = getMBean('ApplicationRuntimes/' + appName +
path
C
R ene l.
'/ComponentRuntimes/' + server.getName() + '_/' + appWebRoot)
Find the #TODO: Use the SimpleAuctionWebApp MBean to get the
current open session count for the server comment in the code and
replace it with the code that uses the webModule variable from the last command to
call the represented MBean's getOpenSessionsCurrentCount() method. Store
the result in a variable called sessions. Remember that this only returns the session
count for the SimpleAuctionWebApp application on this server. Also note that the
code casts the return to a string value.
sessions = str(webModule.getOpenSessionsCurrentCount())
the path comprises elements that are based on real-time data, so variables are used to
create the path.
appWM = getMBean('ApplicationRuntimes/' + appName +
'/WorkManagerRuntimes/' + wmName)
n. Find the #TODO: Use the work manager MBean to get the current
number of completed requests on the server comment in the code and
replace it with the code that uses the appWM variable from the last command to call the
represented MBean's getCompletedRequests() method. Store the result in a
n s e
variable called invokeCount. Remember that this result only represents the data for
lice
ble
this particular server.
invokeCount = str(appWM.getCompletedRequests())
fe r a
n s
trathe data for each
o. Review the printout of server metric data. Find the code that prints the captured data to
n -
no
the screen. It uses the variables defined along the way to display
a
iteration of the for loop.
print server.getName() + '\t' + sessions
h a s + e'\t\t'
ฺ + invokeCount
x) Gui d
m
5. Run the application and test the monitoring script.
a. Execute the following command tom ฺ nt that monitors server statistics:
c o e
run the script
d
$ ./wlst.sh monitorapp.py
e roฺ Stu
@
After a few seconds, the s screen
th s clear and display the statistics it captures from
ithe
should
z
ru uThe sescript sleeps
c
the domain. If you have not run application yet, your display should have zero
values for ฺeverything.
e n e to for 15 seconds, clears the screen, and then
( r
retrieves and displays the data again. Leave
z---------------------------------------------
the script running in its own window.
r u
C Server Sessions Requests
e n e
R server1
server2
0
0
0
0
---------------------------------------------
b. Direct your web browser to the following URL to drive some server traffic:
http://host01:7011/SimpleAuctionWebApp/index.jsp
n s e
ce
d. Click the Go Home link and then click the View Auction List link to view the list of
li
ble
auctions stored in the database. Click through several links just to drive more traffic.
e. View the display of your running script. The numbers should have gone up for
fer a
server1.
a n s
---------------------------------------------
n - tr
Server Sessions Requests
a no
server1 1 21
ha s eฺ
server2 0 0
x ) uid
m ฺm nt G
---------------------------------------------
ฺ co u d e address of host02:7012 to drive more
o
er i s S
f. Try running the application using
t
the server2
traffic on server2.
g. View the displayzof@
s th script again. The numbers should now reflect statistics
r u s e
your running
e
for server2.
n ฺc to u
z (re
---------------------------------------------
ene
server1 1 21
R server2 1 10
---------------------------------------------
If you see the statistics in your script display then congratulations, you have
successfully written a WLST domain monitoring script.
6. Shut down the environment.
a. Press Ctrl + C in all terminal windows that are running servers.
b. Close all terminal windows used for each server.
c. You should still have MAIN terminal windows open on both machines.
Solution Tasks
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
e
5. Continue starting at step number 5.
n s
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
Practicesafor
n
noLesson 7:
ha sSockets
eฺ Layer (SSL)
Secure
)
x 7 Gu i d
ฺ m
m dent
o
Chapter
r c
oฺ Stu
e
s this
z @
ฺ cru use
e to
z( ren
C r u
e ne
R
between two servers. In this lab, you configure SSL and the keystores for the server1
managed server in the wlsadmin domain.
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
r u
This practice involves the following:
C
ne
1. Using keytool to generate an identity keystore that contains a private key and a self-
Tasks
1. If not already connected, connect to the host01 machine using VNC.
2. Set up the practice environment.
a. You may reuse the MAIN terminal windows from previous practices. Otherwise, open a
terminal window on host01 by clicking the terminal icon in the launch panel located on
the top of the screen.
b. Set the title of each terminal window by selecting Terminal > Set Title and entering
MAIN as the title. This makes it easier to distinguish the purpose of each window.
ha
$ cp wls_identity.jks /u01/domains/part2/wlsadmins eฺ
x ) Requestuid(CSR) using the key you have
G the keytool command.)
ฺm ofntentering
c. Optional step: Generate a Certificate Signing
o m
created. (You can use certreq.sh instead
$ keytool -certreq -v ฺ-aliasc tuwlskey e
d -file wls_cert_request.pem
ro S
-keypass wlskeypass
@ se -storepass
th is wlsstorepass
r u z se
-keystore wls_identity.jks
c u
ฺ youtogenerated
d. Copy theeCSR
n to your domain folder.
e wls_cert_request.pem /u01/domains/part2/wlsadmin
$(rcp
C ruzThese copy steps are because you are more likely to back up your domains folder than
ene
you would be to back up the practices folder. Nothing on the local server uses this
R CSR .pem file. This .pem would be forwarded to your CA for a real production
application.
e. In the Administration Console, navigate to Environment > Servers > server1 >
Configuration > Keystores. In Change Center, click Lock & Edit.
f. On the Keystores page, specify the following properties and click Save.
Description Choices or Values
Keystores Custom Identity and Java Standard Trust
Custom Identity Keystore wls_identity.jks
Custom Identity Keystore Type JKS
Custom Identity Keystore PassPhrase wlsstorepass
Java Standard Trust Keystore PassPhrase changeit
c. Click the Technical Details link to see why the warning is displayed. It will say that the
certificate is not truly trusted because it is self-signed rather than being signed by a
known certificate authority.
e. Then click Get Certificate to add the server certificate to your browser. You can also
e
click View to see details about the certificate.
n s
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
Solution Tasks
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
e
a. Cleans up the practice to the starting point by running setup.sh. The setup.sh
n s
ce
script runs in “solution mode”.
li
ble
b. Terminates any running java programs on both machines
c. Executes genkey.sh to create the practice key pair
fer a
d. Executes certreq.sh to self-sign the certificate
a n s
n - tr
no
e. Copies the solution config.xml with keystore and SSL configuration to the domain
f. Copies all .jks and .pem files to the domain folder
a
g. Starts the AdminServer and server1 serversainstheir own ฺ terminal windows. It uses
) h uide
a boot.properties file for server1 toxstart.
o m e tG
ฺmthe SimpleAuctionWebApp
n
c d
h. Undeploys all applications and deploys application
5. Wait for servers on host01 to r
e oฺ start.Stu
fully
@ s t5.his
z
6. Continue starting at step number
ฺ cru use
r e ne to
r uz(
e C
e n
R
n s e
lice
r a ble
n sfe
- tr a
Practicesafor
n
noLesson 8:
h a s Staging
eฺ
Application
x ) i d
u Plans
and
ฺ m t
Deployment G
ฺ c u d en8
om Chapter
sero is St
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
WebLogic applications from one environment to another without the need to unpack a
deployment archive to move an application.
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
The following image depicts the representation of the “Development” environment that does not
incorporate a deployment plan:
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
Tasks
n e ฺc to u
z ( re connected, connect to the host01 machine by using VNC.
1. If not already
u up the practice environment.
2. rSet
C
ene
a. You may reuse the MAIN terminal window from previous practices. Otherwise, open a
R terminal window on host01 by clicking the terminal icon in the launch panel located at
the top of the screen.
b. Set the title of the terminal window by selecting Terminal > Set Title and entering MAIN
as the title. This makes it easier to distinguish the purpose of each window.
c. In the terminal window on host01, navigate to the practice08-01 folder and
execute the setup.sh script to set up the initial practice environment:
$ cd /practices/part2/practice08-01
$ ./setup.sh
This script performs the following:
− Ensures that no previous servers are running on both machines
− Starts the wlsadmin domain on host01 (host02 is not used in this practice.)
− Deploys the SimpleAuctionWebAppDb application
3. Verify the domain’s configuration.
a. Launch a web browser and log in to the administration console:
http://host01:7001/console
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
n s e
lice
r a ble
n sfe
4. Test the Auction application.
- tr a
a. Direct your web browser to the following URL:
no n
a
s eฺ
http://host01:7011/SimpleAuctionWebAppDb/index.jsp
) ha id
x u
b. Click the Create Default Data link to populate the database with data for the Auction
ฺm nt G
application. Follow this by clicking the confirmation to create the data.
m
ฺ co u d e
o
er i s S t
s
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
c. Click the Go Home link and then click the View Auction List link to view the list of
auctions stored in the database.
n s e
l ice
bleand
This shows that the Auction application is currently working with the AuctionDB data
source with a JNDI name of jdbc/AuctionDB. Now you will convert the domain r a
fe plan to
n s
ra
emulate deploying the application to a new environment by using a deployment
override the application’s JNDI name for the data source.
n - t
5. Generate deployment plan by using weblogic.PlanGenerator: o
nfrom
s a ฺ
a. Perform the following steps to create a deployment
a
) h uid
plan
e
the beginning that is
x
based on the currently deployed SimpleAuctionWebAppDb application:
$ prompt.sh
m ฺm-root n G
t /practices/part2/practice08-
$ java weblogic.PlanGenerator o
ฺc tud e
ro
ethe command S in the last step:
s
01 /practices/part2/apps/solution/SimpleAuctionWebAppDb.war
th i s
r u z@
b. Review the arguments of
s e
e ฺ
− The tool's c o More
help or u
documentation says that the -root option specifies the location
r e n
of the t
application. specifically, it specifies the location to create the
z (
u
deployment plan. If an application happens to reside at this location, it will create the
C r deployment plan based on the settings of that application.
R ene − In this practice, the application is an archived WAR file, so you specify the location
of the application archive as another argument.
c. After running the script, you should see that the tool generated the deployment plan in
the /practices/part2/practice08-01/plan folder in a file called plan.xml.
6. Review and experiment with the deployment plan:
a. Perform the following commands to open the deployment plan:
$ cd plan
$ gedit plan.xml
b. Review the contents of the generated plan and close the file when finished:
− The generator places all configurable options of the application into the plan without
setting any properties.
− The properties for the servlets in the application are defined in the variable-
definition and variable-assignment elements. The configuration overrides
only the name of each servlet. This provides a template for administrators to start
with.
− The properties that define the deployment descriptors found in the application are
defined in the module-descriptor elements.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
/practices/part2/apps/solution/SimpleAuctionWebAppDb.war
The -all option tells the tool to create property entries for all discovered properties
found in the application.
d. Open the new plan.xml file.
e. Look through the file and take note of how many more properties have been generated
for the plan. Although this is useful for some types of applications where a lot of control
is desired, it is not a good approach when you want to override only a handful of
properties. Close the file when finished.
n s e
f. Delete the new plan file and rename the original plan file plan.xml:
lice
$ mv plan.xml.1 plan.xml
r a ble
7. Modify the AuctionDB data source in the plan:
n s fe
-
a. For this practice, you are interested in changing only the JNDI name
n ranothat
tare is associated
z (r<variable>
C ru <name>ServletDescriptor_UpdateUserServlet_...</name>
ene
<value>UpdateUserServlet</value>
R </variable>
<variable>
<name>ServletDescriptor_AuctionImageServlet_...</name>
<value>AuctionImageServlet</value>
</variable>
<variable>
<name>ServletDescriptor_BidServlet_...</name>
<value>BidServlet</value>
</variable>
<variable>
<name>ServletDescriptor_CreateAuctionServlet_...</name>
<value>CreateAuctionServlet</value>
</variable>
<variable>
<name>ServletDescriptor_SetupServlet_...</name>
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
</variable>
<variable>
<name>ServletDescriptor_ListServlet_...</name>
<value>ListServlet</value>
</variable>
<variable>
e
<name>ServletDescriptor_DetailServlet_...</name>
n s
ce
<value>DetailServlet</value>
li
ble
</variable>
− Find the following lines for module-descriptor elements in the file and delete
fer a
them:
a n s
<module-descriptor external="false">
n- tr
no
<root-element>weblogic-web-app</root-element>
a
<uri>WEB-INF/weblogic.xml</uri>
ha s eฺ
<variable-assignment>
x ) uid
m ฺm nt G
<name>ServletDescriptor_UpdateUserServlet_...</name>
ฺ co u d e
o t
<xpath>/weblogic-web-app/servlet-descriptor
ser i s S
/[servlet-name="UpdateUserServlet"]
r u z@ se th
/servlet-name</xpath>
n e ฺc to u
<origin>planbased</origin>
z( re
</variable-assignment>
C r u <variable-assignment>
e ne <name>ServletDescriptor_AuctionImageServlet_...</name>
R <xpath>/weblogic-web-app/servlet-descriptor
/[servlet-name="AuctionImageServlet"]
/servlet-name</xpath>
<origin>planbased</origin>
</variable-assignment>
<variable-assignment>
<name>ServletDescriptor_BidServlet_...</name>
<xpath>/weblogic-web-app/servlet-descriptor
/[servlet-name="BidServlet"]/servlet-name</xpath>
<origin>planbased</origin>
</variable-assignment>
<variable-assignment>
<name>ServletDescriptor_CreateAuctionServlet_...</name>
<xpath>/weblogic-web-app/servlet-descriptor
/[servlet-name="CreateAuctionServlet"]
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
<xpath>/weblogic-web-app/servlet-descriptor
/[servlet-name="SetupServlet"]/servlet-name</xpath>
<origin>planbased</origin>
</variable-assignment>
<variable-assignment>
<name>ServletDescriptor_LogoutServlet_...</name>
e
<xpath>/weblogic-web-app/servlet-descriptor
n s
ce
/[servlet-name="LogoutServlet"]
li
ble
/servlet-name</xpath>
<origin>planbased</origin>
fer a
</variable-assignment>
a n s
<variable-assignment>
n- tr
a no
<name>ServletDescriptor_ListServlet_...</name>
ha s eฺ
<xpath>/weblogic-web-app/servlet-descriptor
x ) uid
ฺm nt G
/[servlet-name="ListServlet"]/servlet-name</xpath>
o m
<origin>planbased</origin>
c d e
o ฺ tu
er i s S
</variable-assignment>
s
z@ se th
<variable-assignment>
r u
ฺc to u
<name>ServletDescriptor_DetailServlet_...</name>
n e
re
<xpath>/weblogic-web-app/servlet-descriptor
r uz( /[servlet-name="DetailServlet"]
C /servlet-name</xpath>
e ne <origin>planbased</origin>
R </variable-assignment>
</module-descriptor>
<module-descriptor external="false">
<root-element>web-app</root-element>
<uri>WEB-INF/web.xml</uri>
</module-descriptor>
<module-descriptor external="true">
<root-element>wldf-resource</root-element>
<uri>META-INF/weblogic-diagnostics.xml</uri>
</module-descriptor>
<module-descriptor external="true">
<root-element>persistence-configuration</root-element>
<uri>WEB-INF/classes/META-INF
/persistence-configuration.xml</uri>
xsi:schemaLocation="http://xmlns.oracle.com/weblogic/deployment-
plan http://xmlns.oracle.com/weblogic/deployment-
plan/1.0/deployment-plan.xsd" global-variables="false">
<application-name>SimpleAuctionWebAppDb.war</application-name>
<variable-definition>
e
</variable-definition>
n s
ce
<module-override>
li
ble
<module-name>SimpleAuctionWebAppDb.war</module-name>
<module-type>war</module-type>
fer a
a n s
<module-descriptor external="false">
n- tr
a no
<root-element>persistence</root-element>
ha s eฺ
<uri>WEB-INF/classes/META-INF/persistence.xml</uri>
x ) uid
ฺm nt G
</module-descriptor>
</module-override>
co m d e
o ฺ tu
er i s S
<config-root>/practices/part2/practice08-01/plan</config-root>
s
z@ se th
</deployment-plan>
r u
ฺc to u
All that remains is the basic skeleton that you will use to create your plan:
n e
re
− The standard XML declaration elements
</module-descriptor>
This code indicates that the variable value jdbc/AuctionDBTest is overriding the
value specified in the persistence.xml file's jta-data-source element for the
AuctionPU persistence-unit element.
f. Save your changes.
8. Redeploy the application by using the deployment plan:
a. Using the administration console, undeploy the currently running
n s e
SimpleAuctionWebAppDb application as follows:
lice
− In the Domain Structure panel, click Deployments.
r a ble
− Click Lock & Edit.
n sfe
- tr
− Select the check box next to SimpleAuctionWebAppDb.war. a
− Click Stop > Force stop now and verify Yes.
no n
a
s eฺ
a
− Select the box next to SimpleAuctionWebAppDb.war.
− Click Delete and verify Yes.
x ) h uid
m ฺm nt G
− Click Activate Changes to realize the undeployment.
ฺ co u d e
o
er i s S t
b. Modify the AuctionDB data source in the domain so its JNDI name is now
s
jdbc/AuctionDBTest. This effectively changes the environment so that it is different
r u z@ se th
from the environment the application was undeployed from.
e ฺc to u
Note: Do NOT restart server1 at any point for the remainder of this practice.
n
z( re
− In the Domain Structure panel, navigate to Services > Data Sources.
C r u − Verify that the jdbc/AuctionDB data source exists and is targeted to cluster1.
ne
Verify that its JNDI setting is jdbc/AuctionDB.
) ha id
− Navigate to /practices/part2/practice08-01/plan, select plan.xml, and
click Next. x
ฺm nt G u
co m d e
ฺ
− Ensure Redeploy this application using the following deployment files is selected.
o
er i s S tu
s
− See that the Source path is still the
z@ se th
/practices/part2/apps/solution/SimpleAuctionWebAppDb.war file and
r u
ฺc to u
the Deployment plan path is set properly and click Finish.
n e
re
− Click Activate.
r uz(
d. Verify that the deployment shows it is using the deployment plan and that the new
C value is set properly:
e ne − Click Deployments.
R − Click SimpleAuctionWebAppDb.
− On the Overview tab, verify that the Deployment Plan value is set to your plan file.
− Click the Configuration tab.
− Click Persistence > AuctionPU > Data Sources.
− See that the JNDI name is now jdbc/AuctionDBTest.
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) h a id
x
ฺm nt G u
co m d e
o ฺ tu
s er i s S
u zthe@Auction
e th
r
ฺca JNDItoname
This shows that s
u of jdbc/AuctionDBTest. Congratulations! You have
application is currently working with the AuctionDB data
n e
(re
source with
z
successfully used a deployment plan to deploy a single application to two different
Cru
environments.
e n e10. Experiment with deployment plan tools (optional): You used weblogic.PlanGenerator
R for this practice, but you could also have used the administration console completely to
create a plan, change the configuration, and update the application with the new plan. You
can undeploy the application and use the console to change the JNDI name of the data
source for the application. This causes the administration console to create a new plan with
your updated configuration and it sets the configuration changes into the plan automatically
so you do not have to manually edit the deployment plan file. Give it a try if you have some
time.
11. Reset the environment so it is ready for other practices.
a. Run the cleanup script to reset the configuration and the JDBC configuration for the
data source.
$ ./cleanup.sh
This script performs the following:
− Ensures that no servers are running on both machines
− Closes all terminal windows used for each server
− Resets the domain to the starting point to prepare it for other practices
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
Practicesafor
n
noLesson 9:
ha sJavaeEE
ฺ Libraries
Shared
)
x 9 Gu i d
ฺ m
m dent
o
Chapter
r c
oฺ Stu
e
s this
z @
ฺ cru use
e to
z( ren
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
r u
This image depicts the architecture of the environment for this practice:
C
ne
1. You configure two shared libraries and deploy them:
Tasks
1. If not already connected, connect to the host01 machine using VNC.
2. Set up the practice environment.
a. You can reuse the MAIN terminal window from previous practices. Otherwise, open a
terminal window on host01 by clicking the terminal icon in the launch panel located at
the top of the screen.
fer a
a n s
n- tr
a no
ha s eฺ
x ) u id
m ฺm nt G
ฺ co
4. Configure the in-memory version of the library.
e
librariesuindexploded deployment form for easy
o
r in sexploded
ethem
The practice folder contains the two
t
S form as well.
s i
th to navigate to the in-memory library folder and open
z@commands
modification. You will deploy
r u
a. Perform the following
s e
n e ฺcfile fortoediting:
its manifest u
$ cd e
(rgedit
resources/AuctionMemLib/META-INF
r uz$ MANIFEST.MF
e C b. Ensure that the current file contains only the following entries:
e n
R Manifest-Version: 1.0
Class-Path:
c. Add the following entries to the end of the file to add shared library configuration for a
library named AuctionLib, with a specification-version of 1.0 and an
implementation-version of 1.0:
Extension-Name: AuctionLib
Specification-Version: 1.0
Implementation-Version: 1.0
d. Save the file.
5. Configure the database version of the library.
a. Perform the following commands to navigate to the database library folder and open its
manifest file for editing:
$ cd ../../AuctionDbLib/META-INF
$ gedit MANIFEST.MF
Extension-Name: AuctionLib
Specification-Version: 2.0
Implementation-Version: 1.0
Note that the name of the library is the same for each library, but the
specification-version is different. This allows referencing applications to
reference the same library by name while simultaneously controlling which version of
that library to use.
n s e
d. Save the file.
lice
ble
6. Deploy the in-memory library by using the administration console.
fer a
s
a. Browse to Deployments in the administration console.
b. Click Lock & Edit to begin an edit session.
tr a n
n-
no
c. Click Install to begin the deployment process.
a
s eฺ
d. Use the wizard to browse to /practices/part2/practice09-
ha
01/resources/AuctionMemLib and click Next.
) id
x
ฺm nt G u
e. Select Install this deployment as a library, which should be selected by default because
o m e
WebLogic detects the library configuration in the manifest file, and click Next.
c d
o ฺ tu
er i s S
f. Select All servers in the cluster, which automatically selects cluster1 as a target and
s
z@ se th
click Next.
r u
ฺc to u
g. Review the settings in the General section to verify that the deployment is named
n e
AuctionLib and displays the correct version information, and click Finish.
z( re
h. Click Activate Changes to realize your configuration.
C r u
i. Verify that your library is deployed as a library with the correct version information:
e ne
R
a
available.
b.
ha s eฺ
Verify that your library is deployed as a library with the correct version information:
x ) uid
m ฺm nt G
ฺ co u d e
o
er i s S t
s
r u z@ se th
n e ฺc to u
z( re
r u
8.C Configure an application to reference the in-memory library.
en e
R
You should have successfully deployed the in-memory and database versions of the library
in the previous steps. Now you configure an application to reference the in-memory version
of the library. The database version of the library is used in the next practice.
a. Perform the following commands to navigate to the AuctionWebApp folder and open
its deployment descriptor for editing:
$ cd /practices/part2/practice09-01/resources/AuctionWebApp/WEB-
INF
$ gedit weblogic.xml
b. Find the following line in the file:
<wls:weblogic-version>12.1.2</wls:weblogic-version>
<wls:library-name>AuctionLib</wls:library-name>
<wls:specification-version>1.0</wls:specification-version>
<wls:implementation-version>1.0</wls:implementation-version>
<wls:exact-match>true</wls:exact-match>
</wls:library-ref>
The exact-match tag ensures that the AuctionWebApp application references the
in-memory version of the library. Otherwise, WebLogic could potentially make the
n s e
ice
application reference the latest version of the library, which is the database version.
l
ble
d. Save the file.
9. Deploy the application.
fer a
a n s
tr
a. Perform the following commands to deploy the AuctionWebApp application:
n -
no
$ prompt.sh
a
$ java weblogic.Deployer -adminurl host01:7001 -username
s eฺ
h a
weblogic -password Welcome1 -deploy -targets cluster1
) id
x u
/practices/part2/practice09-01/resources/AuctionWebApp
ฺm nt G
c
Your output should resemble ฺtheo m d eAgain, you can ignore any exceptions
o
er i s S tu
following.
s
relating to server2 unavailability.
th with options: -adminurl host01:7001 -
r u
weblogic.Deployer
username cweblogic
z@ sinvoked
e
e ฺ o u -deploy -targets cluster1
Note: The AuctionWebApp application has a (v1) notation next to it. This is because
e
you provided an application that has version information configured within its manifest
n s
ce
file. You can ignore this for now. The next practice covers this in more detail.
li
ble
10. Test the application.
a. Direct your web browser to the following URL:
fer a
http://host01:7011/AuctionWebApp/index.jsp
a n s
n- tr
b. First, click View Auction List to see the list of auctions. You should get a page with no
no
results. This is because the application is successfully referencing the in-memory
a
ha s eฺ
version of the library. If you have completed other practices in this course, the
) id
database is already populated with auction records. If the application was referencing
x
ฺm nt G u
the database version of the library, auction records would be displayed on this page.
co m d e
c. Click the Create Default Data link to populate the in-memory data model with data for
o ฺ tu
er i s S
the Auction application. Follow this by clicking the confirmation to create the data. Note
s
z@ se th
that this application informs you that the database is required if the application
u
references the database version of the library. This page also shows you that this is the
r
ฺc to u
e
V1 version of the AuctionWebApp application.
re n
r uz(
C
e ne
R
d. Click the Go Home link, and then click the View Auction List link to view the list of
auctions stored in the in-memory data model.
n s e
Congratulations! This shows that the Auction application is working properly and eis li
ce
r a bl
fe by
referencing the in-memory version of the library.
n s
ra deployed
11. Leave the environment running for the next practice, which builds upon this practice
n
using production redeployment to have two AuctionWebApp applications
- t
o
a n ฺin this practice
side-by-side:
− One that references the in-memory library that you s
) h a deployed
practiceid e references the database
x
ฺm nt G
− Another updated one that you deploy in the next
u that
m
library
ฺ co u d e
o
er i s S t
s
r u z@ se th
n e ฺc to u
z (re
C ru
R ene
Solution Tasks
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
e
5. Wait for the solution script to complete.
n s
ce
6. Review the solution files in the practice folder’s solution folder.
li
ble
7. Continue starting at step number 6. Be sure to skip all configuration steps, and replace all
paths that reference resources with solution.
fer a
a n s
n- tr
a no
ha s eฺ
x ) uid
m ฺm nt G
ฺ co u d e
o
er i s S t
s
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
Practicesafor
n
noLesson 10:
ha s Redeployment
eฺ
Production
)
x 10 Gu i d
ฺ m
m dent
o
Chapter
r c
oฺ Stu
e
s this
z @
ฺ cru use
e to
z( ren
C r u
e ne
R
application version.
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
guides you through the process of deploying a second version of the AuctionWebApp
application that references the second "updated" version of the AuctionLib library that uses a
database.
This practice is a good real-world example of how production redeployment, sometimes called
side-by-side deployment, is used in earnest because applications that reference libraries will
also need to reference different library versions. Although it is possible to deploy multiple
e
versions of an application without regard for libraries, application and library versioning are
connected. It is best to see how they work together to gain the maximum benefit of using these
n s
features.
lice
This practice depends on completion of practice09-01. If you have not completed this
r a ble
practice, you may still continue because there is a step provided to quickly set up this practice
n sfe
as if practice09-01 was completed.
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
This image depicts the architecture of the environment for this practice:
1. There are two shared libraries deployed:
a. AuctionMemLib: A memory-based version of the library
b. AuctionDbLib: A database version of the library
2. The first release of the AuctionWebApp application (V1) is deployed, which references
the memory-based version of the AuctionLib library, AuctionMemLib.
n s e
ce
Tasks
li
ble
1. If not already connected, connect to the host01 machine by using VNC.
2. Set up the practice environment.
r a
fe open a
a. You can reuse the MAIN terminal window from previous practices. Otherwise,
n s
-
terminal window on host01 by clicking the terminal icon in the launch
n tra panel located at
n>oSet Title and entering MAIN
the top of the screen.
a
spurposeeofฺ each window.
b. Set the title of the terminal window by selecting Terminal
h a id
)to the practice10-01
as the title. This makes it easier to distinguish the
ฺ m x G u
t
c. In the terminal window on host01, navigate folder.
ฺ c
$ cd /practices/part2/practice10-01 om uden
d. Perform this step only ifryou
e o did not
S t complete practice09-01. Otherwise, skip
s
this step and continue with h
@ t s
i next step.
z
the
u e
cr o usscript to set up the initial practice environment:
e ฺ
Execute the setup.sh
n t
( r escript
$ ./setup.sh
ruz
This performs the following:
C
ene
− Ensures that no previous servers are running on both machines
R − Starts the wlsadmin domain on host01 (host02 is not used in this practice.)
− Ensures that no applications or libraries are deployed to server1
− Deploys the solution files from practice09-01
3. Verify the domain’s configuration.
a. Launch a web browser and log in to the administration console:
http://host01:7001/console
4. Continue using the currently released AuctionWebApp application from the current web
n s e
ce
browser.
li
ble
a. You should already have a web browser open and have a session started with the
AuctionWebApp application that is referencing the memory-based version of the
fer a
AuctionLib library. If you do not, open a web browser on the host01 machine and
a n s
-
test the application as shown in practice09-01 step 10.
n tr
no
Note: This causes a client session to get created for the currently deployed
a
ha s eฺ
AuctionWebApp (V1) application. We need the session to remain active during the
) id
production redeployment process because we want to show that both versions of the
x u
ฺm nt G
AuctionWebApp application are deployed at the same time and properly service
existing and new clients.
co m d e
o ฺ tu
er i s S
5. Configure the new version of the AuctionWebApp application as the V2 version and to
s th to copy your current AuctionWebApp V1 application
z@commands
reference the database version of the AuctionLib library.
r u s e
ฺc practiceufolder:
a. Perform the following
n e to
e -r ../practice09-01/resources/AuctionWebApp .
to the current
$(rcp
z
ru Note: If you did not successfully complete practice09-01, copy the solution files
C
ene
instead.
R b. Navigate to the AuctionWebApp folder and open its manifest file for editing:
$ cd AuctionWebApp/META-INF
$ gedit MANIFEST.MF
c. Modify the Weblogic-Application-Version value to v2. This changes the
application's version from v1 to v2 so that the original application version is different
from this one. This causes WebLogic to deploy both versions of the application
simultaneously.
Manifest-Version: 1.0
Class-Path:
Weblogic-Application-Version: v2
d. Save the file.
e. Navigate to the AuctionWebApp folder and open its deployment descriptor for editing:
$ cd ../WEB-INF
$ gedit weblogic.xml
<wls:implementation-version>1.0</wls:implementation-version>
<wls:exact-match>true</wls:exact-match>
</wls:library-ref>
The exact-match and version tags ensure that the AuctionWebApp application
references the database version of the library. The existing V1 AuctionWebApp
application deployment still references the memory-based version of the library.
g. Save the file.
n s e
lice
ble
6. Modify the application’s content.
a. Open the application’s index.jsp page for editing:
fer a
$ cd ..
a n s
$ gedit index.jsp
n - tr
b. Modify it to display V2 instead of V1:
a no
<h1>Welcome to the Auction application: V2</h1>
h a s eฺ
) toid
Note: This is useful because it makes it easy
x for
ฺm different
you
u see which version of the
G reference different libraries, it
m
application you are using. Although the
is not as visible as simply seeingosomething n t
applications
e
may
ฺ
ro s Stc u d on your screen.
c. Save the file.
s e
z @ released
e hi AuctionWebApp application from the current web
tthere
u
7. Continue using the currently
ฺ cr
browser. Again, this
u
ensures sthat is a session (client) for the existing V1 version of the
r e ne application.
AuctionWebApp to
z ( the application.
u
8. Deploy
r
C a. Perform the following commands to deploy the AuctionWebApp application:
en e
R
$ prompt.sh
$ java weblogic.Deployer -adminurl host01:7001 -username
weblogic -password Welcome1 -deploy -targets cluster1
/practices/part2/practice10-01/AuctionWebApp
Note: This deploys the V2 version of the AuctionWebApp application because you
configured it within its manifest file as v2. This causes WebLogic to deploy the new
version while leaving the existing version undisturbed.
Your output should resemble the following. Again, you can ignore any exceptions
relating to the unavailability of server2.
weblogic.Deployer invoked with options: -adminurl host01:7001 -
username weblogic -deploy -targets cluster1
/practices/part2/practice10-01/AuctionWebApp
<Mar 13, 2013 4:14:24 PM UTC> <Info> <J2EE Deployment SPI> <BEA-
260121> <Initiating deploy operation for application,
AuctionWebApp [archive: /practices/part2/practice10-
01/AuctionWebApp], to cluster1 .>
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) h a id
x
ฺm nt G u
co m d e
o ฺ tu
s er i s S
z@ th browse to the application’s index.jsp page again.
9. Test the existing client again.
r u
Verify thatฺitcstill says u
a. Using the existing
s e
web browser,
R a. Perform the following steps on host02 to delete the Auction application database. You
do this to verify that the new V2 version of AuctionWebApp is referencing the
database version of AuctionLib.
$ deleteDatabase.sh
11. Test the application.
a. Open a new web browser on host02 and direct your web browser to the following
URL:
http://host01:7011/AuctionWebApp/index.jsp
Note: Because this is a new web browser on another machine, it is considered a new
client to WebLogic. As a result, this client’s requests are routed to the newly deployed
version of the AuctionWebApp application that references the database version of the
library. You should see V2 displayed on this page.
n s e
l ice
r a ble
b. First, click View Auction List to see the list of auctions. You shouldagetn sanfeerror and no
n - tr
n o the Auctionreferencing
results. This is because the V2 version of the application is successfully the
s a ฺ AuctionWebApp
database version of the library. You just intentionally deleted database so
a ide version of the library and
) hmemory-based
the application is having a problem now. If you use the original
x u
mฺmshows t Gtheand
application on host01, it is still referencing the
should still show a list of auctions. This
application still references the c o e n that original V1 AuctionWebApp
ddatabase versiontheof the
o ฺ
AuctionWebApp version rreferences tu
memory-based library, new V2
z @
that you have a database
t h console window.
r e
$ createDatabase.sh to
( back to the previous page and click the Create Default Data link in the browser on
ruzhost02 to populate the database data model with data for the Auction application.
d. Go
C
R ene e.
Follow this by clicking the confirmation to create the data.
Click the Go Home link, and then click the View Auction List link to view the list of
auctions stored in the database.
the removal of the V1 version of the application and how the client web browser
reacts.
a. Because the session timeout is an hour, you will just shut down version V1 of the
application to cause it to retire.
b. Select AuctionWebApp (v1) and click Stop > Force Stop Now.
c. Click Yes.
d. Now you should see that the application’s state is changed to retired. If it says
n s e
ce
prepared, wait a few moments and refresh the page until it says retired.
li
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
s er i s S
r u z@ se th
e. Use the e
n ฺcclient ttoouse
u the Auction application again. Now you should see that the
re is V2. This is because version V1 has stopped and is retired so the client now
V1
z (
version
Cru
uses V2.
e
h. Select AuctionWebApp (v2) and click Stop > Force Stop Now.
n s
ce
i. Click Yes.
li
ble
j. V2 should be retired now:
fer a
a n s
n- tr
a no
ha s eฺ
x ) uid
m ฺm nt G
ฺ co u d e
o
er i s S t
s
r u z@ se th
n e ฺc to u
re
( using the AuctionWebApp application in each web browser now. Both should now
k. zTry
C r u
ne
be using V1. You should also notice that there are no auction records. This is because
Solution Tasks
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
e
a. Cleans up the practice to the starting point by running setup.sh
n s
ce
b. Terminates any running java programs on both machines
l i
ble
c. Starts the AdminServer and server1 servers in their own terminal windows
d. Undeploys all applications and libraries r a
fesolution
n s
tra
e. Deploys AuctionMemLib and AuctionDbLib shared libraries from the
n -
nosolution folder of
folder of practice09-01
f. Deploys the AuctionWebApp (v1) application from the
a
s eฺ
practice09-01
) h a id
x u
6. Wait for the solution script to complete.mฺm tG
5. Wait for servers on host01 to start fully.
o e n
ro ฺcBe suretutodskip all configuration steps, and instead of
e isuseSthe solution files in the current practice’s
7. Continue starting at step number 4.
solution folder. z@
s
copying files from practice09-01,
th
r u s e
n e ฺc to u
z (re
C ru
R ene
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
Practicesafor
n
noLesson 11:
ha s Work
eฺ Managers
Application
)
x 11 Gu i d
ฺ m
m dent
o
Chapter
r c
oฺ Stu
e
s this
z @
ฺ cru use
e to
z( ren
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
This image depicts the architecture of the environment for this practice:
1. There are two instances of the database version of the SimpleAuction web
application deployed:
a. SimpleAuctionWebAppDb1: Accessed by context-root:
SimpleAuctionWebAppDb1
b. SimpleAuctionWebAppDb2: Accessed by context-root:
SimpleAuctionWebAppDb2
2. You test both versions of the application and verify that it is configured and working
correctly.
3. You configure two work managers to set different processing priorities for each
application:
a. SimpleAuctionWebAppDb1: Set to a high priority request class
b. SimpleAuctionWebAppDb2: Set to a low priority request class
4. You use deployment plans to assign a work manager to each application.
Tasks
1. If not already connected, connect to the host01 machine by using VNC.
2. Set up the practice environment.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a. You may reuse the MAIN terminal window from previous practices. Otherwise, open a
terminal window on host01 by clicking the terminal icon in the launch panel located at
the top of the screen.
b. Set the title of the terminal window by selecting Terminal > Set Title and entering MAIN
as the title. This makes it easier to distinguish the purpose of each window.
c. In the terminal window on host01, navigate to the practice11-01 folder.
$ cd /practices/part2/practice11-01
n s e
ice
d. Execute the setup.sh script to set up the initial practice environment:
l
ble
$ ./setup.sh
This script performs the following:
fe r a
− Ensures that no previous servers are running on both machines ns
n - tinrathis practice.)
no
− Starts the wlsadmin domain on host01 (host02 is not used
s a
practice eฺ
− Ensures that no applications or libraries are deployed
h a d
) similar utoiCDIExtension
x
− Deploys the starting applications used for this
m
− Note: If the deployment fails with an error
n t G
ฺmthe setup.sh cannot rebind
ฺ c
because it was versioned before,o uderun script again from the MAIN
terminal window.
sero is St
3.
z@ and
Verify the domain’s configuration.
u e th
a. Launch a web r
ฺc to u
browser s log in to the administration console:
n e
(re that two versions of the SimpleAuction application are deployed.
http://host01:7001/console
b. zVerify
C ru
R ene
n s e
j. Select the option Fair Share Request Class and click Next.
lice
k. Enter the following values:
r a ble
Field Value
n sfe
- tr a
Name FairShare90
no n
Fair Share 90 a
s eฺ
h a id
x)click Finish.
u
l. Click Next.
m. Target the request class to cluster1ฺm
o m
and
e n tG
n. Click Save.
ro ฺacsecondtuwork
d
e itable: S
thesfollowing s
o. Repeat these steps to create manager and associated request class by
r u z se th
using the details in@
n e ฺc to u
Resource Field Value
z (re Manager
Work Name LowPriorityWM
Cr u
ne
Target cluster1
Note: This drives some traffic that causes each work manager to do some processing.
− http://host01:7011/SimpleAuctionWebAppDb1/index.jsp
− http://host01:7011/SimpleAuctionWebAppDb2/index.jsp
d. Return to the console.
e. In the Domain Structure panel, select Deployments.
f. Click the Monitoring > Workload tab.
n s e
g. Locate the Work Managers table. Use the Completed Requests column to confirm that
lice
ble
each application is linked to the correct work manager:
Note: You may need to use the Customize this table link to change the number of rows
fer a
to display to a number greater than ten in order to see the same view as shown below.
a n s
- tr
Keep in mind that your individual request numbers may be different based on your
n
no
usage of the applications.
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
Grinder:
$ . ./setenv.sh
d. Start a Grinder agent in each command prompt at approximately the same time:
$ java net.grinder.Grinder grinder-db1.properties
n s e
l
e. While the client agents are running, return to the console and refresh the page to viewice
a
the work load. You should see that HighPriorityWM is getting 90% of the workload
r ble and
LowPriorityWM is getting 10% of the workload:
n s fe
n - tra
a no
h a s eฺ
x ) u id
m ฺm nt G
ฺ co u d e
o
er i s S t
s
r u z@ se th
n e ฺc to u
z (re
Cru
e ne
R
− TPS: _______
Tip: You may want to disable line wrapping in your text editor.
c. Repeat the previous steps on the logs-db2/host01.example.com-0.log file.
d. Compare the results.
Congratulations! You have successfully created, configured, and used work managers
for different applications.
e
9. Shut down the environment.
n s
ce
a. Press Ctrl + C in all terminal windows that are running the servers.
li
ble
b. Close all terminal windows used for each server.
fer a
a n s
n- tr
a no
ha s eฺ
x ) uid
m ฺm nt G
ฺ co u d e
o
er i s S t
s
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
Solution Tasks
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
e
a. Cleans up the practice to the starting point by running setup.sh
n s
ce
b. Terminates any running java programs on both machines
li
ble
c. Starts the AdminServer and server1 servers in their own terminal windows
d. Undeploys all applications and libraries
fe r a
n s
traeach application
e. Creates the work managers used for the practice
n-
no
f. Redeploys the applications using deployment plans that associate
a
with a work manager
h a s eฺ
id
5. Wait for servers on host01 to fully start.
x ) u
Continue starting at step number 6c. mฺm tG
6. Wait for the solution script to complete.
7.
o e n
ro ฺc tud
s e is S
r u z@ se th
n e ฺc to u
z (re
C ru
R ene
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
Practicesafor
n
noLesson 12:
ha s Data
eฺ Sources
Managing
)
x 12 Gu i d
ฺ m
m dent
o
Chapter
r c
oฺ Stu
e
s this
z @
ฺ cru use
e to
z( ren
C r u
e ne
R
clustering.
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
The following image shows the architecture for controlling the data source used with the Auction
application:
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e neThis image depicts the architecture of the environment for this practice:
R 1. The orcl database instance is running on port 1521 on host02.
2. The Auction application servers are running on host01.
3. You stop and start the data source called jdbc/AuctionDB that is associated with the
orcl database to see how it affects the application’s functionality.
Tasks
1. If not already connected, connect to the host01 machine by using VNC.
2. Set up the practice environment.
a. You can reuse the MAIN terminal window from previous practices. Otherwise, open a
terminal window on host01 by clicking the terminal icon in the launch panel located at
the top of the screen.
b. Set the title of the terminal window by selecting Terminal > Set Title and entering MAIN
as the title. This makes it easier to distinguish the purpose of each window.
c. In the terminal window on host01, navigate to the practice12-01 folder.
$ cd /practices/part2/practice12-01
z@ se th
5. Stop the data source and test the application.
r u
ฺc to u
e
a. Launch the administration console
re n
z(
b. In the Domain Structure panel, select Services > Data Sources > jdbc/AuctionDB.
C r u
c. Click the Control tab.
ne
d. Select the server1 check box to select the data source target and to enable the
R e control buttons.
e. You should notice that there are several different buttons available to you:
− Shrink: Shrinks the number of available connection pool connections
− Reset: Closes and re-creates all available database connections for the data source
− Clear Statement Cache: Clears the cached statements in memory used to improve
performance
− Suspend: Marks the data source as disabled and keeps reserved connections
allocated. If a forced suspend is performed, all connections are removed and clients
must reserve a new connection to continue.
− Resume: Resumes a previously suspended data source
− Shutdown: Closes all database connections in the data source and disables it
− Start: Reinitializes the data source for use
f. Select Suspend > Suspend to disable the data source.
g. Confirm Yes.
h. Test the application again by trying to view the list of auctions. You should get a 500
Internal Server Error, which causes WebLogic to display the configured System Error
page. After a thorough examination of the console log for server1, you should see an
exception similar to the following:
Caused by: java.sql.SQLException:
weblogic.common.resourcepool.ResourceDisabledException: Pool
jdbc/AuctionDB is Suspended, cannot allocate resources to
applications
n s e
lice
ble
6. Start the data source and test the application.
a. Select the check box next to server1 and click Resume to start the data source
fer a
again.
a n s
b. Click Yes to confirm.
n - tr
a no
h a s eฺ
x ) u id
m ฺm nt G
ฺ co u d e
o
erby trying S t
@ s th i s
z
c. Test the application again to view the list of auctions. You should once again
ฺ c ru You uhave
see a list of auction
sesuccessfully controlled a data source. Feel free to play
records.
e e
nwith
Congratulations! tofo the other controls for the data source.
( r
z down
around some
C u
7. rShut the environment.
R ene a. Press Ctrl + C in all terminal windows that are running servers.
b. Close all terminal windows used for each server.
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
unavailable.
The Auction application environment has been upgraded to include a backup database instance
to provide a higher level of availability. If the primary database becomes unavailable and the
Auction application requests a database connection, WebLogic will begin using the backup
instance. The backup database is not synchronized with the primary database for the purposes
of this practice to make it easier to see that failover has occurred.
The following image shows the architecture for multi data source use with the Auction
application:
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
This image depicts the architecture of the environment for this practice:
1. There are two database instances: the existing orcl database running on port 1521
and the newly introduced orcl2 database running on port 7521.
2. You start both databases and the Auction application WebLogic servers on host01.
3. You configure a new data source called jdbc/AuctionDB2 that is associated with the
orcl2 database.
4. You configure a new multi data source called AuctionDBMultiDataSource that
primarily uses the jdbc/AuctionDB data source and fails over to the
jdbc/AuctionDB2 data source.
5. You modify the application’s data source from jdbc/AuctionDB to use the multi data
source and redeploy the application.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Tasks
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
o
script to create the oracle user and exports ORACLE_SID=orcl2
n -
database commands to use the backup orcl2 database
a ninstance.
h a s eฺ
idpractices. Otherwise, open a
4. Set up the practice environment.
a. You can reuse the MAIN terminal windowxfrom ) previous
u
o m
terminal window on host01 by clicking ฺm
e n t Gicon in the launch panel located at
the terminal
the top of the screen.
r o ฺc tud
se windowi s Sselecting Terminal > Set Title and entering MAIN
th to distinguish the purpose of each window.
@ it easier
b. Set the title of the terminal by
as the title. This z
r u
c. Within theฺterminal
makes
c owindow s e
u on host01, navigate to the practice12-02 folder.
n e t
z ( e /practices/part2/practice12-02
$ rcd
C rd.u Execute the setup.sh script to set up the initial practice environment:
ene
$ ./setup.sh
R This script performs the following:
− Ensures that no previous servers are running on both machines
− Starts the wlsadmin domain on host01 (host02 is not used in this practice.)
− Ensures that no applications or libraries are deployed
− Deploys the starting application used for this practice
− Ensures that the WebLogic domain is set to the starting point of the practice
5. Verify the domain’s configuration.
a. Launch a web browser and log in to the administration console:
http://host01:7001/console
b. Verify that the SimpleAuctionWebAppDb application is deployed.
n s e
ce
a. Launch the administration console
li
ble
b. Click Lock & Edit.
c. In the Domain Structure panel, select Services > Data Sources.
fer a
d. Click jdbc/AuctionDB to edit its configuration.
a n s
e. Click the Configuration > Connection Pool tab:
n- tr
a no
ha s eฺ
x ) uid
m ฺm nt G
ฺ co u d e
o t
ser this S
f. Click the Advanced options.
g. Enter the following@
r u z se
values:
e ฺ c o u
n t
Field Value
R e h. Click Save.
i. Activate your changes.
8. Create a new backup data source:
a. Run the following scripts to create the backup data source:
$ prompt.sh
$ wlst.sh createDataSource2.py
b. Confirm that the script executed successfully:
Data Source created successfully.
c. Return to the console and inspect the new data source:
Field Value
Name AuctionDBMultiDataSource
JNDI Name AuctionDBMultiDataSource
Algorithm Type Failover
e. Click Next.
f. Target the resource to cluster1 and click Next.
n s e
g. Select the XA Driver option and click Next.
lice
r a ble
fe
h. Use the button to add the following data sources to the Chosen list:
n s
tra
− jdbc/AuctionDB (Ensure that it is listed first.)
n-
no
− jdbc/AuctionDB2
i. Click Finish.
a
s eฺ
j. Activate your changes.
h a id
) in the console:
x
ฺm nt G
k. Verify that the multi data source was created u
co m d e
o ฺ tu
s er i s S
r u z@ se th
n e ฺc to u
e
(rand
r uz
10. Modify redeploy the Auction application to use your new multi data source.
e C Why? The Auction application uses the Java Persistence API (JPA) to provide database
e n
R model for the application. The data source used by JPA is configured in the
persistence.xml file packaged with the application. This data source currently points to
the jdbc/AuctionDB data source.
a. Perform the following commands to open the persistence.xml file for editing:
$ prompt.sh
$ cd /practices/part2/practice12-
02/resources/SimpleAuctionWebAppDb/WEB-INF/classes/META-INF
$ gedit persistence.xml
b. Change the following line:
<jta-data-source>jdbc/AuctionDB</jta-data-source>
to
<jta-data-source>AuctionDBMultiDataSource</jta-data-source>
c. Save the file.
AuctionPU > Data Sources. View the Jta Data Source JNDI Name field and verify that
it is set to AuctionDBMultiDataSource.
11. Test the application to ensure that it is working:
a. Browse to the following URL and click the View Auction List link. You should see a list
of auctions. This list should have been retrieved from the original database.
− http://host01:7011/SimpleAuctionWebAppDb/index.jsp
b. Return to the console.
n s e
c. In the Domain Structure panel, select Services > Data Sources.
lice
d. Click the Monitoring tab and scroll to the right. You should see that the
r a ble
fe
jdbc/AuctionDB data source has a positive Active Connections High Count figure.
a n s
tr
12. Test data source failover.
n -
no
a. Perform the following steps to stop the original orcl database instance on host02:
$ stopDB1.sh
b. Wait for the database to completely shut down. as
a
) h i deฺthe following message in
ฺ m x G u
t
c. Wait for about 10-20 seconds (maybe longer) until you see
the console for server1.
ฺ com u d eton trust an existing JDBC connection for
roperiod,
etime
Why? A data source is configured
s s S
by t
default
<Mar 25,ฺc2013
u
r 4:13:29
u e
s PM UTC> <Warning> <JDBC> <BEA-001129>
e
en exceptionto
( r
<Received
zestablish the connection.>
while creating connection for pool
e ne
R
d. Repeat all of the instructions in step 11 again. At first, you should notice that there are
no database entries. This is because the databases are not actually synched in this
practice environment. This shows you that you are connected to the orcl2 database.
Why? The application is the same, but it is now configured to use your multi data
source. You just shut down the original orcl database instance so it is no longer
available. New database requests made by the application should now failover to the
orcl2 backup database instance.
e. Create the auction data records and test again:
− Click the Go Home link.
− Click the Create Default Data link.
− Click Yes to confirm.
− Click the Go Home link.
− Click the View Auction List link again and you should see database results again.
Congratulations! You have successfully created, configured, and used a multi data
source.
13. Shut down environment.
a. Press Ctrl + C in all terminal windows that are running servers.
b. Close all terminal windows used for each server.
c. Perform the following steps to stop the orcl2 database instance on host02:
$ stopDB2.sh
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
Solution Tasks
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
1. Open a new terminal window on host02 and start the backup database:
$ prompt.sh
$ startDB2.sh
2. Open a new terminal window on host01:
$ prompt.sh
3. Change the current directory to the current practice folder.
4. Execute the solution script:
n s e
ce
$ ./setup_solution.sh
li
ble
5. The solution script performs the following:
a. Cleans up the practice to the starting point by running setup.sh
fer a
n s
tra windows
b. Terminates any running java programs on both machines
c. Starts the AdminServer and server1 servers in their ownn -
no
terminal
d. Undeploys all applications and libraries a
s edata ฺ source for failover
e. Adds JDBC connection testing parameters to h
) a
the
i
primary
d
f. Creates the backup data source mฺ
purposes
mx nt Gu
ฺ c o ude
o
er ithat
g. Creates the multi data source t
Suses
@ s th s
z
h. Deploys the practice application the multi data source
6.
ฺ cruhost01utosefully start.
Wait for servers on
e e script
nsolution to to complete.
r
7. Wait for the
( starting at step number 11.
ruz
8. Continue
C
R ene
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
Practicesafor
n
noLesson 13:
ha s withethe
ฺ Security
Working
x ) ui d
ฺ m
Realm t G
ฺ c u d en13
om Chapter
sero is St
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R This image depicts the architecture of the environment for this practice:
1. You create two users and groups and assign each user to one of the groups:
a. jsmith is a member of the AuctionUsers group.
b. jjones is a member of the AuctionCreators group.
2. You create two roles and map each user to a role based on the user’s group
membership:
a. Users that are members of the AuctionUsers group are assigned the user role.
b. Users that are members of the AuctionCreators group are assigned the creator
role.
3. You create an authorization policy that protects the URL for the createAuction.jsp
page:
a. Users that are not assigned the creator role are denied access.
b. Users that are assigned the creator role are granted access.
4. You use the application logged in as jsmith, the WebLogic security providers perform
the authorization process, and you are denied access to create auctions.
5. You use the application logged in as jjones, the WebLogic security providers perform
the authorization process, and you are granted access to create auctions.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
b. Set the title of the terminal window by selecting Terminal > Set Title and entering MAIN
as the title. This makes it easier to distinguish the purpose of each window.
c. Within the terminal window on host01, navigate to the practice13-01 folder.
$ cd /practices/part2/practice13-01
d. Execute the setup.sh script to set up the initial practice environment:
$ ./setup.sh
n s e
ce
This script performs the following:
li
ble
− Ensures that no previous servers are running on both machines
fe r
− Starts the wlsadmin domain on host01 (host02 is not used in this practice.) a
n s
tra
− Ensures that no applications or libraries are deployed
n -
nopoint of the practice
− Deploys the starting application used for this practice
a
− Ensures that the WebLogic domain is set to the starting
s eฺ
3. Verify the domain’s configuration.
) h a d
iconsole:
x
ฺm nt G
a. Launch a web browser and log in to the administration u
http://host01:7001/console
co m d e application is deployed.
o ฺ tu
er i s S
b. Verify that the SimpleAuctionWebAppDbSec
s
r u z@ se th
n e ฺc to u
z (reSimpleAuctionWebAppDbSec application using the current web browser to
C u that the application is working as expected:
rensure
4. Test the
n s e
ce
The error-page tag allows you to configure a page that the server displays when
li
ble
certain error conditions are met. In this case, when the 403 forbidden error code is
a
encountered, WebLogic should display the userRequired.jsp page to the user.
fer
s
This page usually contains some information about why the user is having trouble.
<error-page>
tr a n
n-
no
<error-code>403</error-code>
<location>/userRequired.jsp</location> a
s eฺ
</error-page>
) h a id
x u
ฺm younttoGconfigure which principals are
o m
enables e
The security-constraint tag
ro ฺofcthe application.
t u d In this case, the auctionCreators
seprincipal
allowed access to resources
S
isthat is granted access to two URL patterns related to
z @
role is configured as the
th
ฺ c ru use
creating auctions.
e ne to
<security-constraint>
r
z ( <display-name>create auction</display-name>
Cr u <web-resource-collection>
e ne <web-resource-name>createAuction</web-resource-name>
R <url-pattern>/createAuction.jsp</url-pattern>
<url-pattern>/CreateAuctionServlet</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>auctionCreators</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>auctionCreators</role-name>
</security-role>
The login-config tag configures the login method used by the server to let users
enter their usernames and passwords to log in to the system. In this case, form-based
authentication is configured for the WebLogic security realm called myrealm.
n s e
Form-based logins require you to declare which HTML-based pages to use for letting
lice
ble
users log in and for displaying login errors. In this case, the login.jsp page is used
to let users enter their credentials and the loginError.jsp page is displayed when
fer a
users fail to authenticate successfully.
a n s
<login-config>
n - tr
<auth-method>FORM</auth-method>
a no
<realm-name>myrealm</realm-name>
ha s eฺ
x ) u id
ฺm nt G
<form-login-config>
o m e
<form-login-page>/login.jsp</form-login-page>
c d
o ฺ tu
er i s S
<form-error-page>/loginError.jsp</form-error-page>
s
z@ se th
</form-login-config>
r u
ฺcReview
</login-config>
u code snippets of this step again. Note which snippets are in
n e to
reand which are not in bold. The snippets that are NOT in bold are related to
Important! the
z (
bold
Cru authentication process. This is important because the default behavior when an
security roles and policies. The snippets that ARE in bold are related to the general
e ne
R application is deployed to WebLogic is that the security roles and policies declared in
deployment descriptors are automatically applied. However, the application for this
practice was deployed using the -securityModel CustomRolesAndPolicies
option, which instructs WebLogic to completely ignore all declarative roles and policies
defined in the application's deployment descriptors.
Why? The purpose of this practice is to show you how to configure users, groups,
roles, and policies. The configuration of roles and policies is supported within
deployment descriptors and directly within the embedded LDAP server. You also have
the ability to ignore the configuration in deployment descriptors. This practice shows
you what the configuration looks like within a deployment descriptor and how to
override it using the administration console and deployment options.
6. Test the unprotected application.
The currently deployed application is not protected with any security policies because you
ignored it during deployment. You also did not create any users or groups related to this
application. If you take a few minutes and explore the users, groups, roles, and policies
associated with the domain, you will see that only the default WebLogic identities are
configured.
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) h a id
x
ฺm nt G u
co m d e
o ฺ tu
s erlink toisview
b. Click the View Auction List S the list of auctions stored in the database.
r u z@ se th
n e ฺc to u
z (re
Cru
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s etheฺ administration console.
) h a id
a. Launch the administration console. ฺmx u
7. Create users and groups and assign users to groups by using
r e
z−( Click New to create a new group.
system
u
steps.
C r
e n e
R − Enter AuctionUsers as the group name.
− Leave the rest of the parameters at their default values.
− Click OK.
d. Repeat the last step to create the AuctionCreators group.
e. Click the Users tab to display the page for configuring users.
f. Perform the following steps to create user jsmith and assign the user to the
AuctionUsers group:
− Click New to create a new user.
− Enter jsmith as the username.
− Enter Welcome1 as the password and confirmation password.
− Leave the rest of the parameters at their default values.
− Click OK.
− Click jsmith to display the user’s configuration page.
− Click the Groups tab.
AuctionCreators group. Return to the Users page using the breadcrumb trail at the top
of the page by selecting Users and Groups.
8. Create two roles and map them to their groups.
a. In the Domain Structure panel, select Deployments > SimpleAuctionWebAppDbSec >
Security > Application Scope > Roles to display the page for configuring roles for the
application.
e
b. Create the user role and map it to the AuctionUsers group:
n s
ce
− Click New to create a new role.
li
ble
− Enter user as the role name.
− Leave the rest of the parameters at their default values.
fer a
a n s
tr
− Click OK.
n -
nowhich users are assigned
− Click the user role to display the role’s configuration page.
a
s eฺ
− Click Add Conditions to add an expression that defines
the user role.
h a
) members idof a group to the user role and
x
ฺm nt G
− Select Group as the Predicate List to map u
o m de Name, click Add, and click Finish to
ฺc GrouptuArgument
click Next.
− Enter AuctionUsers r o
eAuctionUsersS group to the user role.
s s
as the
i
z@ se th
map members of the
r u
ฺcprevious
− Click Save.
u
n e to
(re Return to the Roles page using the breadcrumb trail at the top of the page by
c. Repeat the step to create the creator role and map it to the AuctionCreators
z
Cru selecting Roles.
group.
e ne9. Create a policy that grants users in the creator role access to the createAuction.jsp
R page.
a. Return to the Roles page using the breadcrumb trail at the top of the page by selecting
Roles.
b. Select the URL Patterns > Policies tab to display the page for configuring policies for
the application’s URL patterns.
c. Click New to create a new URL pattern to protect.
d. Enter /createAuction.jsp as the URL pattern to protect.
e. Click OK.
f. Click /createAuction.jsp to display its configuration page.
g. Click Add Conditions to add an expression that defines the criteria by which allowed
users are granted or denied access to this URL.
h. Select Role as the Predicate List to indicate that you want users assigned to a
particular role for access and click Next.
Solution Tasks
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
e
a. Cleans up the practice to the starting point by running setup.sh
n s
ce
b. Terminates any running java programs on both machines
li
ble
c. Starts the AdminServer and server1 servers in their own terminal windows
d. Undeploys all applications and libraries
fer a
n s
tritaexists
e. Deploys the practice application
n -
no
f. Deletes any security configuration related to this practice in case
a
g. Creates all the security configuration required for this practice
s eฺ
6. Wait for servers on host01 to fully start.
) h a id
x
m nt G u
Continue starting at step number 10. mฺ
7. Wait for the solution script to complete.
8.
ฺ co u d e
o
er i s S t
s
r u z@ se th
n e ฺc to u
z (re
C ru
R ene
This practice builds on the environment of the previous practice. In this practice, you configure
the WebLogic DefaultAuditor security provider to log failed authorization requests.
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
This image depicts the architecture of the environment for this practice:
1. This practice uses the domain from the previous practice.
2. You create the WebLogic DefaultAuditor security provider.
3. You configure the auditing provider to log failed authorization requests.
4. You run the application as user jsmith and try to access the Create auction page.
5. You locate and review the audit log to see if the failure was logged.
Tasks
1. If not already connected, connect to the host01 machine by using VNC.
2. If not already connected, connect to the host02 machine by using VNC.
3. Set up the practice environment.
a. You may reuse the MAIN terminal window from previous practices. Otherwise, open a
terminal window on host01 by clicking the terminal icon in the launch panel located at
the top of the screen.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Optional: Execute the setup script only if you have not completed the previous
practice. If you have completed the previous practice and the domain is still running,
then skip this step and continue with the next step.
$ ./setup.sh
This script performs the following:
− Ensures that no previous servers are running on both machines
e
− Starts the wlsadmin domain on host01 (host02 is not used in this practice.)
n s
ce
− Ensures that no applications or libraries are deployed
li
ble
− Deploys the starting application used for this practice
− Ensures that the WebLogic domain is set to the starting point of the practice
fer a
a n s
tr
4. Create the WebLogic DefaultAuditor provider.
n-
no
a. Launch a web browser and log in to the administration console:
http://host01:7001/console
a
s eฺ
h a id
b. In the Domain Structure panel, navigate to Security Realms > myrealm > Providers >
)
x
ฺm nt G u
Auditing to display the configuration page for auditing providers.
c. Click Lock & Edit.
co m d e
o ฺ tu
er i s S
d. Click New to create a new provider.
s
@ e th
e. Enter the following values:
Field ruz s
ฺ c u Value
r e ne to DefaultAuditor
z (Type
Name
C r u DefaultAuditor
e ne f. Click OK.
R 5. Configure the auditing provider.
Why? You created a new auditing provider, but you have not configured it to do anything
yet.
a. Click your new DefaultAuditor link to display its configuration page.
b. Click the Provider Specific page to display the provider’s configuration options.
c. For this practice, you are going to configure only the severity level of events to audit.
You can explore other options as well if you like. Set the Severity field to CUSTOM.
Why? When you set severity to CUSTOM, WebLogic allows you to specify more than
one type of event to audit for your applications.
d. Select Error, Success, and Failure audit severity to enable each type.
e. Click Save.
f. Activate your changes.
n e
Authorization Audit Event V2 ><Subject: 2
z( re
Principal = class
C r u weblogic.security.principal.WLSUserImpl("jsmith")
e ne Principal = class
R weblogic.security.principal.WLSGroupImpl("AuctionUsers")
><ONCE><<url>><type=<url>, application=SimpleAuctionWebAppDbSec,
contextPath=/SimpleAuctionWebAppDbSec, uri=/createAuction.jsp,
httpMethod=GET>>>
Audit Record End ####
Congratulations! You have successfully configured the WebLogic default auditing
provider.
9. Shut down the environment.
a. Press Ctrl + C in all terminal windows that are running servers.
b. Close all terminal windows used for each server.
Solution Tasks
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
s
a. Cleans up the practice to the starting point by running the solution for the previous
n e
ce
practice it depends upon
li
ble
b. Terminates any running java programs on both machines
fe
c. Starts the AdminServer and server1 servers in their own terminal windows
r a
n s
tra
d. Undeploys all applications and libraries
n -
no it
e. Deploys the security-enabled version of the Auction application
a
f. Creates the WebLogic default auditing provider and configures
s eฺ
5. Wait for servers on host01 to fully start.
) ha id
x
m nt G u
7. Continue starting at step number 6. mฺ
6. Wait for the solution script to complete.
ฺ co u d e
o
er i s S t
s
r u z@ se th
n e ฺc to u
z (re
C ru
R ene
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
Practicesafor
n
noLesson 14:
ha s Recovery
eฺ
Disaster
x ) ui d and
ฺ m t
Migration G
ฺ c u d en14
om Chapter
sero is St
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
cluster.
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
This image depicts the architecture of the environment for this practice:
1. The domain, which is running normally, comprises two managed servers in a cluster.
The Java Transaction Service (JTS) is configured for automatic migration in the event of
a failure. Each server in the cluster uses a transaction log (TLOG) in a persistent store
that is located on a shared file system so it is available to all server members in the
cluster. Server1's TLOG is called tlog_server1 and server2's TLOG is called
tlog_server2.
2. Server1 fails on host01.
3. WebLogic’s consensus leasing mechanism detects the failure and initiates the migration
of any services that can migrate.
4. The Java Transaction Service (JTS) is migrated from server1 to server2.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Tasks
1. If not already connected, connect to the host01 and host02 machines by using VNC.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
e
remove these artifacts from the domain before backing it up greatly reduces the size of
n s
ce
the domain:
li
ble
$ compactDomain.sh
$ cd /u01/domains/part2
fer a
$ cp -r wlsadmin wlsadmin.backup
a n s
Note: This may take a couple of minutes.
n - tr
3. Set up the practice environment.
a no
a s eฺ
a. You can reuse the MAIN terminal window from previous practices. Otherwise, open a
h
x ) u id
terminal window on each machine by clicking the terminal icon in the launch panel
located at the top of the screen.
m ฺm nt G
ฺ co u d e
b. Set the title of the terminal window by selecting Terminal > Set Title and entering MAIN
o
er i s S t
s
as the title. This makes it easier to distinguish the purpose of each window.
r u z@ se th
c. In the terminal window on host01, navigate to the practice14-01 folder:
re
$( ./setup.sh
d. Execute
z
the setup.sh
n s e
lice
ble
5. Test the SimpleAuctionWebAppDb application using the current web browser to ensure
r a
that the application is working as expected:
a. Browse to http://host01:7011/SimpleAuctionWebAppDb/index.jsp.
n s fe You
should see the Auction application appear.
n- tra
b. If you have already created the database, you should be able
o verifies that the orcl
nThis
to click the View Auction
) h i d eฺ
6. Review the machine configuration.
ฺ m x G u
o t
m den and select Machines.
c
a. In the Domain Structure panel, expand Environment
b. You should see two machines
e roฺ configured:
S tu machine1 and machine2.
@ s its settings.
th is
z
c. Select machine1 to view
ฺ cru use
r e ne to
(
C ruz
R ene
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
re
( the Servers tab to view the servers that are assigned to machine1. You should
e. zClick
C r u
ne
see that the AdminServer and server1 servers are configured for machine1.
R e
f. Repeat these steps. However, select machine2 instead of machine1 to view the Node
Manager settings and servers configured for that machine. You should see that the
Node Manager is running on the IP address for host02 and server2 is configured for
machine2.
Note: By setting the cluster to consensus leasing, you allow the cluster migration
mechanism to manage cluster leasing in-memory. This requires using the Node
Manager for migration, but does not require configuring a database table for database
leasing.
f. Save your changes.
e
8. Enable automatic JTA migration on each server.
n s
ce
a. In the Domain Structure panel, expand Environment and select Servers to list the
configured servers in the domain.
li
b. Select server1 to view its settings.
r a ble
c. Click the Configuration > Migration tab to display migration settings for the server.
n sfe
- tr
d. Find the JTA Migration Configuration section and select Automatic JTA Migration a
Enabled.
no n
s eฺa
) ha id
x
ฺm nt G u
co m d e
e. Review the JTA Candidate o ฺ tu
er If no S in the cluster are set as Chosen, all servers
Servers field. It shows a list of Available and Chosen
s i s
@ e tforh migration. This setting is useful for scenarios where
servers. This field is optional. servers
in the cluster arezcandidates
ฺ r u
c members u sa cluster have access to a shared persistent store while other
e
enmembers
some server
o
t not. Because all servers in your domain will have access to the
in
( r
server
zall servers.
may
C r u shared persistent store, you do not configure any candidate servers to let it default to
e ne
R
f. Save your changes.
g. Repeat these steps again for server2.
9. Configure a new default persistent store for each server.
a. In the Domain Structure panel, expand Environment and select Servers.
b. Click the Configuration > Services tab to display the settings for this server’s services.
Do not select the top-level Services tab because it is for other purposes.
c. Find the Default Store section and the Directory field in that section. Set the directory to
/practices/part2/practice14-01. As you know, the /practices folder is on
an NFS-shared file system that is accessible by host01 and host02.
d. Find the Transaction Log Store section and the Type field in that section. Note that it is
set to DefaultStore.
e. Save your changes.
f. Repeat these steps for server2.
g. Activate your changes.
You may want to increase the size of these terminal windows to make it easier to read
log messages.
c. Perform the following commands in the server1 terminal window to monitor its log
file:
$ cd /u01/domains/part2/wlsadmin/servers/server1/logs
$ tail -f server1.log
d. Perform the following commands in the server2 terminal window to monitor its log
n s e
ce
file:
li
ble
$ cd /u01/domains/part2/wlsadmin/servers/server2/logs
$ tail -f server2.log
r a
ftoe start the
n s
tra
e. Perform the following command in the main terminal window on host01
domain using the Node Manager:
n -
$ wlst.sh startDomain.py
a nforolog messages as the
servers start. You should look for a line similarhto
f. Observe the server1 and server2 terminal windows
a s eฺ to confirm that your
x ) u id
the following
configuration is working:
Server1: <BEA-000189> <TheoSingleton m ฺm nService
e t G server1 is now active
ro ฺc tud
on this server.>
s S
e <TheisSingleton
z
Server2: <BEA-000189>
u @ e th Service server2 is now active
cr keyoinuboth
ฺEnter
on this server.>
e
s
g. Press n
r e the t the server1 and server2 terminal windows repeatedly in
z (
u
order to create a lot of whitespace between the start up log messages and new log
Cr messages that will appear during migration. Ideally, this will clear the screen of all log
JTA service:
$ kill -9 12600
k. Quickly look in the server2 terminal window and you should see messages similar to
the following, which show that server1's JTA service has migrated to server2:
<BEA-280008> <Opening the persistent file store "_WLS_server1"
for recovery: directory=/practices/part2/practice14-01
requestedWritePolicy="Direct-Write" fileLockingEnabled=true
driver="wlfileio3".>
n s e
####<Apr 29, 2013 11:08:35 PM UTC> <Info> <Store>
lice
ble
<host02.example.com> <server2> <[ACTIVE] ExecuteThread: '12' for
queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>>
fer a
<> <> <1367276915018> <BEA-280009> <The persistent file store
a n s
-
"_WLS_server1" (77b28bcf-2df4-4d6c-97ed-12354385bdc8) has been
n tr
no
opened: blockSize=512 actualWritePolicy="Direct-Write(read-
buffered)" explicitIOEnforced=false records=13.>
a
s eฺ
h a
####<Apr 29, 2013 11:08:35 PM UTC> <Info> <Cluster>
) id
x
ฺm nt G u
<host02.example.com> <server2> <[ACTIVE] ExecuteThread: '12' for
co m
queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>>
d e
ฺ u
<> <> <1367276915359> <BEA-000189> <The Singleton Service
o t
seror tperhaps Seven before, you should see the service fail back
server1 is now active on this server.>
l. After server1 starts@ h i s
r u z both log
again,
s e
ฺc to u <The Singleton Service server1 is now active
to server1. Check files for messages similar to the following:
n e
(rethis server.>
Server1: <BEA-000189>
z
Cru Server2: <BEA-000190> <The Singleton Service server1 has been
on
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
e ro s St u
s
5. Start Node Manager on host01.
$ wlst.sh startNM.py hi
r u zon@host02.
s e t
6.
e ฺc startNM.py
Start Node Manager
n to u
(restarting at step number 10c.
$ wlst.sh
7.
ru z
Continue
C
R ene
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
Practicesafor
n
noLesson 15:
ha s Framework
eฺ
Diagnostic
)
x 15 Gu i d
ฺ m
m dent
o
Chapter
r c
oฺ Stu
e
s this
z @
ฺ cru use
e to
z( ren
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R Tasks
1. If not already connected, connect to the host01 machine by using VNC.
2. Set up the practice environment.
a. You can reuse the MAIN terminal window from previous practices. Otherwise, open a
terminal window on host01 by clicking the terminal icon in the launch panel located at
the top of the screen.
b. Set the title of the terminal window by selecting Terminal > Set Title and entering MAIN
as the title. This makes it easier to distinguish the purpose of each window.
c. In the terminal window on host01, navigate to the practice15-01 folder.
$ cd /practices/part2/practice15-01
d. Execute the setup.sh script to set up the initial practice environment:
$ ./setup.sh
− Ensures that the WebLogic domain is set to the starting point of the practice
3. Verify the domain’s configuration.
a. Launch a web browser and log in to the administration console:
http://host01:7001/console
b. Verify that the ShoppingCart application is deployed.
n s e
lice
r a blethe
4. Test the ShoppingCart application by using the current web browser to ensure
n s fe that
n s e
ce
a. In the Domain Structure panel, expand Diagnostics and select Log Files. You should
see a list of the available log files for the domain. This list is populated based on which
li
servers are currently active. If the entire domain is running, you should see several
r a ble
fe
different log files for each server of the domain.
a n s
tr
b. Select the HarvestedDataArchive log for server1 and click View. This displays a
n-
no
paginated list of the captured metrics for the server. All the metrics represent metrics
a
collected by the built-in module because it is the only module configured for the server.
a s eฺ
Take a moment and explore the metrics that have been collected.
h
x ) uid
m ฺm nt G
ฺ co u d e
o
er i s S t
s
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
s
module will be based on the Low built-in diagnostic module.
r u z@ se th
Field Value
Name eฺc o u
e n t MyCustomModule
z (r
r u Description My new built-in based module
C Use a built-in diagnostic system Checked
e ne
R module as template
Built-in diagnostic system Low
module
e. Select your newly configured module to view its settings page.
f. Click the Collected Metrics tab to display the metrics that are collected already by your
module. These are derived from the Low built-in module. You can now customize
which metrics your module collects.
g. Select every entry in the Collected Metrics in this Module table except for the
WebAppComponentRuntimeMBean entry and click Delete. You are removing all the
unwanted metrics in order to keep this example simple.
h. Click Yes to confirm.
i. Save your changes.
j. Click the Targets tab.
k. Select server1 (and only server1) as the target for this module.
l. Save your changes.
m. Activate your changes.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
Practicesafor
n
noLesson 16:
ha s andeฺ Coherence
WebLogic
x ) ui d
ฺ m t G
Integration
ฺ c u d en16
om Chapter
sero is St
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
ne
This image depicts the architecture of the environment for this practice:
Tasks
1. If not already connected, connect to the host01 and host02 machines using VNC.
2. Set up the practice environment.
a. You can reuse the MAIN terminal window from previous practices. Otherwise, open a
terminal window on each machine by clicking the terminal icon in the launch panel
located on the top of the screen.
b. Set the title of the terminal window by selecting Terminal > Set Title and entering MAIN
as the title. This makes it easier to distinguish the purpose of each window.
Host01:
$ rm -rf /u01/domains/part2/wlsadmin
$ unzip /practices/part2/domain/wlsadmin.host01.orig.zip -d
/u01/domains/part2
e
Host02:
$ rm -rf /u01/domains/part2/wlsadmin
e n s
$ unzip /practices/part2/domain/wlsadmin.host02.orig.zip -d lic
/u01/domains/part2
r a ble
n s fe
n- tra
e. Execute the setup.sh script to set up the initial practice environment:
$ ./setup.sh
a no
This script performs the following:
h a s eฺ
x ) on bothuidmachines
ฺm nt G
− Ensures that no previous servers are running
− Starts the wlsadmin domain on
co m host01
d e
ro ฺ tu
e
− Ensures that no applications
s thdomain S
or libraries are deployed
is is set to the starting point of the practice
z
u on
f. Wait for both rservers
@
− Ensures that the WebLogic
e to start and for the setup script to complete before
ฺ c u shost01
e e
nThe
continuing on to to
the next step.
z ( r
u
Why? setup script performs some configuration tasks on the domain for server1
Cr and server2. If either server is started before this configuration is complete, then that
e ne server must be restarted. The script accounts for this for server1 but you must wait
R for the script to complete before starting server2 to be sure.
g. Within the terminal window on host02, navigate to the practice16-01 folder.
$ cd /practices/part2/practice16-01
h. Execute the setup.sh script to set up the initial practice environment:
$ ./setup.sh
This script performs the following:
− Starts server2 of the wlsadmin domain on host02
i. Start Oracle HTTP Server (OHS) on host01. OHS is already configured for this
course:
Note: OHS should already be running from previous practices.
$ prompt.sh
$ cd /u01/app/fmw2/instances/webtier_1/bin
$ ./opmnctl start
$ ./opmnctl startproc ias-component=ohs1
---------------+--------------------+---------+---------
ohs1 | OHS | 27615 | Alive
3. Configure Coherence*Web session persistence for the application.
First you configure the application to support in-memory session replication. This allows
your session to persist after you shut down the server handling your requests. Replication
for this part of the practice is done using the servers' default channel.
a. In a terminal window on host01 navigate to the application's WEB-INF folder and
modify its weblogic.xml descriptor.
n s e
$ cd resources/ShoppingCart/WEB-INF
lice
$ gedit weblogic.xml
a b le
r
fe totoa use
n s
b. Find the following lines in the file. Currently, the configuration tells WebLogic in-
tra
memory replication to replicate sessions for this application if it is deployed cluster.
n -
no
<wls:session-descriptor>
<wls:persistent-store-type> a
s eฺ
h a id
</wls:persistent-store-type> x)
replicated_if_clustered
ฺm nt G u
c o m d e
ฺ
</wls:session-descriptor>
e o tu
r s S entry to coherence-web. This causes the
s
c. Change the replicated_if_clustered
ฺ u s
c installation.
n e t o
(re libraries are automatically added to the WebLogic system classpath when
4. Examine Coherence
a. zCoherence
C ru you install WebLogic. In the
R ene $WL_HOME/modules/features/weblogic.server.modules_12.1.2.0.jar
file, the MANIFEST classpath includes both the coherence.jar and coherence-
web.jar files in the classpath. These jar files are located in the
$MW_HOME/coherence/lib folder. Because these files are automatically included in
the WebLogic system classpath, no further configuration is required for
Coherence*Web to work unless you want to change something specific about the
configuration.
b. You do not have to do this part, but if you took the time to copy the
coherence-web.jar file to a temporary folder and extract its contents, you would
find the default-session-cache-config.xml file. This file contains the
Coherence cache configuration for storing HTTP sessions. It configures the WebLogic
server as a storage-disabled member of the cluster, and configures a two-tier
Coherence cache to store HTTP sessions. The cache is a front-end local near cache
backed by a back-end distributed (or partitioned cache) that stores and replicates that
actual HTTP session objects. When a session is updated in the distributed cache, the
copy in the local near cache is invalidated so subsequent requests for the session are
sent to the distributed cache, and the local near cache is updated with a copy of the
new data.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
n s e
ce
5. Configure WebLogic Coherence configuration.
li
ble
A WebLogic domain creates a default Coherence cluster. This cluster is configured to use
unicast communication for connecting to other cluster members. This cluster is also
fer a
s
configured to form a cluster with a specific name. You must ensure that your cache servers
tr
use this same name when connecting to Coherence members that are associated with
a n
n-
no
WebLogic. Perform the following steps to change the default Coherence cluster on
a
WebLogic to use multicast communication to connect with other cluster members.
ha
a. Open the WebLogic administration console. s eฺ
x ) uid
ฺm nt G
b. In the Domain Structure panel, expand Environment, and click Coherence Clusters.
o m e
c. Click the default, CoherenceCluster1 cluster to view its settings.
c d
o ฺ tu
er i s S
d. Click Lock & Edit.
s
z@ se th
e. In the Configuration > General tab, find and set the settings as seen in the following
table:
r u
ฺc to u Value
n e
re
Field
(
zClustering
r u Mode
C Multicast Listen Address
Multicast
ene
224.12.1.0
R Multicast Listen Port 12100
Leave the rest of the fields at their current values.
f. Click Save.
g. Activate your changes.
6. Configure Coherence cache servers.
You must configure the cache servers to use the same configuration used by
Coherence*Web. By default, Coherence cache servers use the cache configuration that is
found in the coherence.jar file. The configuration file for Coherence*Web scopes the
configuration with a namespace of oracle.coherence.web and sets a service name for
the cache of DistributedSessions. This scope does not exist in the default
configuration used by Coherence cache servers.
The default-session-cache-config.xml file sets storage-enabled to false, so you
must override this setting on the cache server side.
The default Coherence cluster in WebLogic forms a cluster using a cluster name of
CoherenceCluster1. You must configure your cache servers to use the same cluster name.
o m
so the default-session-cache-config.xml
c d e will override local-storage settings
o
r sSฺ
system properties you set in the
tu
previous step
se
@ fileetoththei beginning of the classpath:
defined in the configuration file. Find the following line in the script and add the
coherence-web.jar
u z
$JAVAEXEC r-server s
e ฺ c o u -showversion $JAVA_OPTS -cp
r en t
"$COHERENCE_HOME/lib/coherence.jar"
z (
com.tangosol.net.DefaultCacheServer $1
C u
r Your updated line should look like the following:
R ene $JAVAEXEC -server -showversion $JAVA_OPTS -cp
"$COHERENCE_HOME/lib/coherence-web.jar:
$COHERENCE_HOME/lib/coherence.jar"
com.tangosol.net.DefaultCacheServer $1
e. Save and close the file.
f. You are also going to use the Coherence console application to view data in the cache.
This script must also be modified to work with the cache configuration. Because this
application will run as a storage-disabled node, you do not need to set local storage
settings. You still need to add the coherence-web.jar file to the beginning of the
classpath and set the configuration file for the console to use, just as you did with the
mycache-server.sh script. Perform the following steps on host01 to configure the
Coherence console application:
− Copy the coherence.sh script to mycoherence.sh.
$ cp coherence.sh mycoherence.sh
Copyright r(c) u z@ s e t
ฺc to u
rightsereserved.
n
2000, 2013, Oracle and/or its affiliates. All
z (re
Cru 2013-06-13 10:40:41.181/1.794 Oracle Coherence GE 12.1.2.0.0
e ne <Info> (thread=main, member=n/a): Loaded cache configuration
R from "jar:file:/u01/app/fmw/coherence/lib/coherence-
web.jar!/default-session-cache-config.xml"
2013-06-13 10:41:13.874/34.487 Oracle Coherence GE 12.1.2.0.0
<Info> (thread=Cluster, member=n/a): Created a new cluster
"CoherenceCluster1" with Member(Id=1, Timestamp=2013-06-13
10:40:43.508, Address=192.0.2.11:8090, MachineId=64176,
Location=site:,machine:host01,process:1479,
Role=CoherenceServer, Edition=Grid Edition, Mode=Production,
CpuCount=2, SocketCount=2)
2013-06-13 10:41:13.876/34.489 Oracle Coherence GE 12.1.2.0.0
<Info> (thread=main, member=n/a): Started cluster
Name=CoherenceCluster1
"jar:file:/u01/app/fmw/coherence/lib/coherence.jar!/reports/repo
rt-group.xml"
2013-06-13 10:41:14.159/34.772 Oracle Coherence GE 12.1.2.0.0
<D5>
(thread=ReplicatedCache:oracle.coherence.web:ReplicatedSessionsM
isc, member=1): Service
oracle.coherence.web:ReplicatedSessionsMisc joined the cluster
e
with senior service member 1
n s
ce
2013-06-13 10:41:14.444/35.057 Oracle Coherence GE 12.1.2.0.0
<D5>
li
(thread=DistributedCache:oracle.coherence.web:DistributedSession
r a ble
s, member=1): Service oracle.coherence.web:DistributedSessions
n sfe
a
joined the cluster with senior service member 1
n- tr
no
2013-06-13 10:41:14.520/35.133 Oracle Coherence GE 12.1.2.0.0
a
<Info> (thread=main, member=1):
Services
ha s eฺ
x ) uid
ฺm nt G
(
o m e
ClusterService{Name=Cluster, State=(SERVICE_STARTED,
c d
o ฺ tu
STATE_JOINED), Id=0, Version=12.1.2, OldestMemberId=1}
ser i s S
InvocationService{Name=Management, State=(SERVICE_STARTED),
u z@ se th
Id=1, Version=12.1.2, OldestMemberId=1}
r
n e ฺc to u
e
,(rState=(SERVICE_STARTED),
ReplicatedCache{Name=oracle.coherence.web:ReplicatedSessionsMisc
uz Id=2, Version=12.1.2,
Cr OldestMemberId=1}
e ne
R PartitionedCache{Name=oracle.coherence.web:DistributedSessions,
State=(SERVICE_STARTED), LocalStorage=enabled,
PartitionCount=257, BackupCount=1, AssignedPartitions=257,
BackupPartitions=0}
)
Started DefaultCacheServer...
b. On host02, navigate to the Coherence bin folder and start a Coherence cache server:
$ prompt.sh
$ cd /u01/app/fmw/coherence/bin
$ ./mycache-server.sh
Review the output again. This time you should see that the member number is 2 and
that the server has joined the cluster with member 1. If you look at the output for both
cache servers (on each host) you will see a message indicating that a partition
e
Role=CoherenceServer, Edition=Grid Edition, Mode=Production,
CpuCount=2, SocketCount=2)
n s
lice
ble
2013-06-13 11:00:03.356/4.865 Oracle Coherence GE 12.1.2.0.0
a
<Info> (thread=main, member=n/a): Started cluster
Name=CoherenceCluster1
fer
a n s
n- tr
no
Group{Address=224.12.1.0, Port=12100, TTL=4}
. . .
a
s eฺ
) ha id
2013-06-13 11:00:03.652/5.161 Oracle Coherence GE 12.1.2.0.0
x
ฺm nt G u
<D5> (thread=Invocation:Management, member=2): Service
o m e
Management joined the cluster with senior service member 1
c d
o ฺ tu
er i s S
2013-06-13 11:00:03.745/5.254 Oracle Coherence GE 12.1.2.0.0
s
<Info> (thread=main, member=2): Loaded Reporter configuration
from
r u z@ se th
n e ฺc to u
"jar:file:/u01/app/fmw/coherence/lib/coherence.jar!/reports/repo
re
rt-group.xml"
e ne (thread=ReplicatedCache:oracle.coherence.web:ReplicatedSessionsM
R isc, member=2): Service
oracle.coherence.web:ReplicatedSessionsMisc joined the cluster
with senior service member 1
2013-06-13 11:00:04.367/5.876 Oracle Coherence GE 12.1.2.0.0
<D5>
(thread=DistributedCache:oracle.coherence.web:DistributedSession
s, member=2): Service oracle.coherence.web:DistributedSessions
joined the cluster with senior service member 1
2013-06-13 11:00:04.430/5.939 Oracle Coherence GE 12.1.2.0.0
<Info> (thread=main, member=2):
Services
(
ClusterService{Name=Cluster, State=(SERVICE_STARTED,
STATE_JOINED), Id=0, Version=12.1.2, OldestMemberId=1}
InvocationService{Name=Management, State=(SERVICE_STARTED),
Id=1, Version=12.1.2, OldestMemberId=1}
PartitionedCache{Name=oracle.coherence.web:DistributedSessions,
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
State=(SERVICE_STARTED), LocalStorage=enabled,
PartitionCount=257, BackupCount=1, AssignedPartitions=0,
BackupPartitions=0}
)
Started DefaultCacheServer...
cr u u s e
ฺ the /u01/domains/part2/wlsadmin/bin
e e the following
b. Ensure you are in folder. Restart each
servernusing to command line syntax:
$(r./startManagedWebLogic.sh
uz serverX host01:7001
e Crc. After each server starts, view the mycache-server logs and you should see that
R en there are two new cluster members that joined the cluster. This shows that the default
WebLogic cluster is properly configured and connected to the same cluster as the
Coherence cache servers. The console output should resemble the following:
2013-06-13 11:15:45.510/947.019 Oracle Coherence GE 12.1.2.0.0
<D5> (thread=Invocation:Management, member=2): Member 3 joined
Service Management with senior member 1
2013-06-13 11:16:03.483/964.992 Oracle Coherence GE 12.1.2.0.0
<D5> (thread=Cluster, member=2): Member(Id=4, Timestamp=2013-06-
13 11:14:02.186, Address=192.0.2.12:8088, MachineId=17611,
Location=site:,machine:machine2,process:25791,member:server2,
Role=WeblogicServer) joined Cluster with senior member 1
2013-06-13 11:16:03.935/965.444 Oracle Coherence GE 12.1.2.0.0
<D5> (thread=Invocation:Management, member=2): Member 4 joined
Service Management with senior member 1
you must start the application and refresh the page to see the proper state.
10. Test the ShoppingCart application using the current web browser to ensure that the
application is working as expected:
a. Browse to http://host01:7777/ShoppingCart. You should see the application
appear.
b. Click Go Shopping and add something to your shopping cart.
c. Take note of which server console window displays output related to the application.
n s e
ce
That is the server that is currently handling the requests for the application.
li
ble
d. Shut down that server by pressing Ctrl + C in the terminal window.
Why? You shut down this server so the subsequent request to the application fails
fer a
over to the other server.
a n s
n- tr
e. Return to the ShoppingCart application and try to view the shopping cart. You should
no
see that your purchase remains in your cart. This is because Coherence*Web session
a
ha s eฺ
persistence is successfully persisting your session. The web server has successfully
) id
detected that the server is no longer available and failed over to the other server. You
x
ฺm nt G u
should also see that shopping cart items are now logged to the other server, which
o m e
shows that the fail over was successful.
c d
o ฺ tu
er i s S
f. Shut down the other server by pressing Ctrl + C in the terminal window.
s
z@ se th
Why? How do you know that your session is actually persisted to Coherence? It could
r u
still be using in-memory replication. But if you shut down both servers, restart them,
ฺc to u
n e
and view your cart again, your data will still be there if you successfully configured
z( re
Coherence*Web to persist your sessions. Even when your servers are shut down, the
ne
g. Restart server1 and server2.
R e h. Return to the ShoppingCart application and try to view the shopping cart. You should
see that your purchase remains in your cart, even though your servers were completely
shut down. This shows that your sessions were persisted by Coherence*Web in your
cache servers.
i. Congratulations! You have successfully configured and used Coherence*Web to
persist your HTTP sessions.
11. Shut down environment.
a. Press Ctrl + C in all terminal windows that are running servers.
b. Close all terminal windows used for each server.
Solution Tasks
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
11. Perform steps starting at 2i to start the OHS server if it is not running already.
12. Continue starting at step number 10.
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
WebLogic resources, including managed Coherence, and then deploy stand-alone and
component Coherence applications to members of the cluster. When complete, the application
architecture will resemble that shown below.
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R This image depicts the architecture of the environment for this practice:
1. The ExampleEAR application is deployed to server1, running on host01 on port 7011.
This application includes ExampleGAR, a Coherence Grid Archive, as one of its
modules.
2. The ExampleGAR application is deployed to server2, running on host02 on port 7012.
The ExampleGAR application is a stand-alone Coherence Grid Archive, and it is
identical to the module embedded within the ExampleEAR application.
3. The Coherence configuration on server1 is storage-disabled, meaning that it is part of
the Coherence cluster but it does not store any cache data.
4. The Coherence configuration on server2 is storage-enabled, meaning that it is part of
the Coherence cluster and it stores cache data.
5. You run the application to test the configuration.
b. Set the title of the terminal window by selecting Terminal > Set Title and entering MAIN
as the title. This makes it easier to distinguish the purpose of each window.
c. Within the terminal window on host01, navigate to the practice16-02 folder.
$ cd /practices/part2/practice16-02
d. Execute the setup.sh script to set up the initial practice environment:
$ ./setup.sh
n s e
ce
This script performs the following:
li
ble
− Ensures that no previous servers are running on both machines
− Starts the wlsadmin AdminServer on host01
fer a
− Ensures that no applications or libraries are deployed
a n s
n- tr
no
− Ensures that the WebLogic domain is set to the starting point of the practice
3.
a
Create Coherence Cluster and Configure Managed Coherence Servers.
s eฺ
ha id
a. In the Domain Structure pane, expand Environment and select Coherence Clusters.
)
x
ฺm nt G u
b. Click New to create a new Coherence cluster.
co m d e
c. Name the cluster ManagedCoherenceCluster and click Next.
o ฺ tu
er i s S
d. In the Coherence Cluster Addressing step, leave all values unchanged and click Next.
s
z@ se th
e. In the Coherence Cluster Members step, select cluster1 and ensure that All servers
r u
ฺc to u
in the cluster is selected.
n e
re
f. Click Finish.
r uz(
g. In the Domain Structure pane, navigate to Environment > Servers.
C
ne
h. Click server1.
k. Click Save. You do not have to change the local storage setting for server2 because
you want it to store Coherence cache data.
4. Deploy ExampleGAR application.
a. In the Domain Structure pane, click Deployments.
b. Click Install to install the stand-alone GAR file.
c. In the Locate Deployment to install and prepare step, enter the following:
/practices/part2/practice16-02/resources
d. Select ExampleGAR.gar and click Next.
e. In the Select Deployment Targets step, select server2 and click Next. The stand-
alone ExampleGAR application represents a Coherence caching application that is
used to store data.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
co m d e
ฺ
$ wlst.sh startNM.py
e o
r sS tu
s
b. In the Domain Structure pane, navigate to Environment > Servers.
c. Select the Control @
u z tab.
e thi
r
d. Select bothcserver1
ฺ u s server2 servers and click Start to start the servers.
e o
and
r n
euntil t
z (
u
e. Wait both servers are in the RUNNING state. Hint: Use the icon to cause the
R en If the applications have not started (are not in the Active state), then go to the
deployment list and start them both.
7. Test.
a. Open a new Firefox tab.
b. Browse to the following URL to use the application:
http://host01:7011/example-web-app/faces/ContactList.jsp
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
c o m d e
o ฺ tu
er successfully
S configured managed Coherence servers.
d. Feel free to explore the application.
s i s
z@ se th
e. Congratulations! You have
r u
ฺc tscript
8. Shut down environment.
u to quickly shutdown the environment:
a. Run thee o
e n following
$(r./cleanup.sh
ruz
C
R ene
Solution Tasks
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
e
servers are not available during deployment.
n s
ce
4. The solution script performs the following:
li
ble
a. Terminates any running Coherence cache servers on both machines
b. Terminates any running java programs on both machines
fer a
c. Starts the AdminServer server in its own terminal window
a n s
n- tr
no
d. Configures a new WebLogic Coherence cluster for the practice
a
e. Configures the servers to use the cluster as needed for this practice
s eฺ
h
f. Undeploys all applications and libraries
) a id
x
ฺm nt G
g. Deploys the practice applications u
5.
co m d e
Important! Wait for the solution script to complete.
o ฺ tu
er i s S
6. Continue starting at step number 6.
s
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
n s e
lice
r a ble
n sfe
- tr a
AppendixaA:no
n
Convenience
Cheatha s
Sheet eฺ
x ) uid
m m n17t G
ฺChapter
ฺ co u d e
o
er i s S t
s
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R
m
cd $MW_HOME/wlserver
Navigation
ฺ co
Navigates
u d e
to the OEPE/Eclipse
o t
ide
r s toSthe lab bin folder:
Navigation seNavigates
cd $APP/oepe
bin
z @ cd e hi
t$LABHOME/part2/bin
u
cr o usNavigates
wlsd
n eฺNavigation
t
to the wlsadmin domain folder:
(re
cd /u01/domains/part2/wlsadmin
z
Cru
31 Navigation Navigates to the practice03-01 folder:
cd $LABHOME/part2/practice03-01
n s e
lice
r a ble
n sfe
- tr a
no n
a
s eฺ
) ha id
x
ฺm nt G u
co m d e
o ฺ tu
ser i s S
r u z@ se th
n e ฺc to u
z( re
C r u
e ne
R