WebSphere Application Server L3
WebSphere Application Server L3
TRAINING FOR L1 - L3
DON’T SHARE THIS DOUCUMENTATION TO ANYONE.
Websphere - HTTP Server (IHS) - IBM, AIX, IBM SDK (comes with WAS Package)
Tomcat - Apache HTTP Server - Apache, Any OS, J2SE Content, Sun JDK
Root = /
Installation Manager:
Installation Manager -> 8.0 WAS. A software which needs to be downloaded for a specific O/S 200+
MB. Download the WAS + Patches + SDK + IHS + Plugins 15 GB complete package are not O/S
Specific.
Two Methods:
Online: Internet (99% servers don’t have internet)
Offline: Downloading and copying to the server from elsewhere.
Google -> IBM Installation Manager for WAS 9.0 ND -> IBM.com link -> 140+MB file -> Agent 1.3 -
1.9
Two Location:
You can be a
GUI / CLI
Post Installation:
How to operate:
TRAINING FOR L1 - L3
DON’T SHARE THIS DOUCUMENTATION TO ANYONE.
Root:
[wasuser@was-node1 Installer]$ cd /opt/software/IM
[wasuser@was-node50 IM]$ unzip agent.installer.linux.gtk.x86_64_1.8.4000.20151125_0201.zip
[root@was-node1 Installer]$ ./install
Non-Root:
[wasuser@was-node1 Installer]$ cd /opt/software/IM
[wasuser@was-node50 IM]$ unzip agent.installer.linux.gtk.x86_64_1.8.4000.20151125_0201.zip
[wasuser@was-node1 Installer]$ ./userinst
WAS Installation:
We need to open the Installation manager which you have just installed.
[wasuser@was-node1 Installer]$ cd /opt/IBM/InstallationManager/eclipse/
[wasuser@was-node1 eclipse]$ ./IBMIM
Online:
With the help of internet. The WAS would be downloaded to the server directly.
Offline:
Without Internet. You need to pre download and transfer the files to the server.
The Only difference is that we need to load the offline repository which is a
simple .config file. This file would be available in the was folder which you would have
downloaded from the internet.
TRAINING FOR L1 - L3
DON’T SHARE THIS DOUCUMENTATION TO ANYONE.
Uninstallation Of Was:
GUI:
Open the IBMIM and then go to uninstallation select the product, click Next.
Note: Make sure all jvm process is down when you un install the same.
rm -rf /opt/IBM/WebSphere/
UN-installation Of Was:
CLI:
./imcl listInstalledPackages
-> This above command will show the installed packages using IMCL / IBMIM. Then Grab
the package name.
rm -rf /opt/IBM/WebSphere/
1) ivr.com
2) lac.com
3) Pb.com
Prod Dev
Bronze 2 Profiles on one system, 3 Websites 1 Profile on one system 3 Web
Silver 3 Profiles on 2 System, 3 Websites 1 Profile on one system 3 Web
Gold 3 Profiles on 2 System, each of the website. 1 Profile on one system 3 Web
Profiles, the first thing you do after the installation of WAS is profile creation.
Type Of profiles:
Combination of: ( Federated Profiles / Nodes )
Dmgr Profile + Custom Profile + Application Server Profile.
OR
Dmgr Profile + Custom Profile + Custom Profile
OR
Dmgr Profile + Application Server profile + Application Server Profile
WAS 5.0:
No Profiles.
WAS 6.0:
Profiles:
DMGR Profile:
DMGR Profile is the manager for all the profiles under it. By default when you create a DMGR
profile it will be useless, because it is not federated with any of the other profiles.
DMGR Profile is a concept just like other profiles. But once you create this DMGR profile there
would be a server JVM created by default in the name of "dmgr". This dmgr is a server
process which would run with the help of JAVA. Hence, we call it the dmgr JVM server. For
WebSphere Application Server L1 Page 25
process which would run with the help of JAVA. Hence, we call it the dmgr JVM server. For
every DMGR Profile there would be only one JVM process which is called "dmgr".
DMGR profile once created can only be federated with either an Application Server Profile
/ Custom Profile / Job Manager Profile.
When you start the dmgr JVM Process it would start and listen on different port numbers.
You can use either of the two ways to configure / control the entire Cell Structure which is
configured in the DMGR Profile.
i) To host standalone applications like application which can be used to deploy right away.
Where in which there is no failover or LB available.
ii) To federate it with the DMGR profile and make the DMGR to take control of this profile.
When using Application Server profile as a standalone ( which is not federated with any
DMGR ) you can only have one server ( Default server named "server1" ) to deploy all the
application. YOU WILL NOT BE ABLE TO CREATE ANY MORE SERVERS.
Standalone servers are majorly used for Development Purpose.
It has its own DMGR Console Deployed on the same server1 JVM.
When You start the server1 JVM it will start the Deployment Manager Console + all the
applications you have deployed over that JVM. You will have two different port numbers
to browse the DMGR Console and the applications which you have deployed over it.
For eg:
If you stop the server1 JVM process, all the above URL would die.
Server1
To control the server1 JVM process we use either console / wsadmin. But remember
you can only use the DMGR console / WSADMIN for controlling the server1,
deployments and resources.
As a Federated profile:
When you add the App Server Profile into DMGR, it loses all the standalone features
except, the server1 and the deployment done to it would still exists. But it would be part of
the federated profiles.
Custom Profiles:
Empty profile which has only one reason to exists to get federated with an DMGR Profile.
A standalone profile are something which doesn't include clustering or failovers. It’s a profile
which is easy to create.
TRAINING FOR L1 - L3
DON’T SHARE THIS DOUCUMENTATION TO ANYONE.
[wasuser@was-node1 bin]$ ./manageprofiles.sh -create -profileName Dev_PB_AppStd01 -templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/default/ -nodeName Dev_PB_AppStd01 -
hostname was-node1
Verify:
[wasuser@was-node50 bin]$ less /opt/IBM/WebSphere/AppServer/profiles/Dev_PB_AppStd01/config/cells/was-node50Node01Cell/nodes/was-node50Node01/serverindex.xml
Foremost to the deployment / starting up of any application servers. We need to understand the
process called Selecting the correct profile. Either the information about an profile could be
documented nor it could be available on wiki according to your company's policy.
Check the configuration for the port numbers which we need to browse the application server's
(server1) DMGR console right after the profile creation.
The Above file says the server name where in which we need to retrieve the admin Host port
number either secured or plain.
Once you know the port number, you need to go to the location where the binary file for that
application server profile exits.
[wasuser@was-node1 bin]$ cd /opt/IBM/WebSphere/AppServer/profiles/DEV_PhoneBanking_STD_AppSrv01/bin/
[wasuser@was-node1 bin]$ ./serverStatus.sh -all
[wasuser@was-node1 bin]$ ./startServer.sh server1
ADMU0116I: Tool information is being logged in file
/opt/IBM/WebSphere/AppServer/profiles/AppSrv03_Google/logs/server1/startServer.log
ADMU0128I: Starting tool with the AppSrv03_Google profile
ADMU3100I: Reading configuration for server: server1
ADMU3200I: Server launched. Waiting for initialization status.
Check the logs and verify if the server1 has been started or not.
First Indication:
[wasuser@was-node50 bin]$ ./startServer.sh server1
ADMU0116I: Tool information is being logged in file
/opt/IBM/WebSphere/AppServer/profiles/DEV_PhoneBanking_STD_AppSrv01/logs/server1/startServer.log
ADMU0128I: Starting tool with the DEV_PhoneBanking_STD_AppSrv01 profile
ADMU3100I: Reading configuration for server: server1
ADMU3200I: Server launched. Waiting for initialization status.
ADMU3000I: Server server1 open for e-business; process id is 25768
Second Indication:
[wasuser@was-node1 bin]$ cd /opt/IBM/WebSphere/AppServer/profiles/DEV_PhoneBanking_STD_AppSrv01/logs/
[wasuser@was-node1 logs]$ cd server1/
[wasuser@was-node1 dev_youtube]$ tail -f SystemOut.log
[7/19/15 17:46:04:757 IST] 00000001 WSChannelFram A CHFW0019I: The Transport Channel Service has started chain SOAPAcceptorChain6.
[7/19/15 17:46:04:758 IST] 00000001 webcontainer I com.ibm.ws.webcontainer.WSWebContainer startChains SRVE0323I: The Asynchronous Request Dispatcher is not enabled. Requests
sent through either the HttpQueueInboundDefault or the HttpQueueInboundDefaultSecure chain might not be properly handled.
[7/19/15 17:46:04:760 IST] 00000041 SchedulerServ I SCHD0077I: The Scheduler Service is starting the Schedulers.
[7/19/15 17:46:04:760 IST] 00000041 SchedulerServ I SCHD0078I: The Scheduler Service has completed starting the Schedulers.
[7/19/15 17:46:04:805 IST] 00000001 GridConfigura I CWLRB5873I: The GridConfiguratorMBean was activated successfully.
[7/19/15 17:46:04:815 IST] 00000001 BatchSensorCo I CWLRB5904I: BatchSensorComponent starting...
[7/19/15 17:46:04:852 IST] 00000001 BatchSensorCo I CWLRB5905I: Successfully activated GridEndpointSensorMBean.
[7/19/15 17:46:04:870 IST] 00000001 RMIConnectorC A ADMC0026I: The RMI Connector is available at port 2810
[7/19/15 17:46:04:885 IST] 00000001 JMXConnectors I ADMC0058I: The JMX JSR160RMI connector is available at port 2810
[2/15/16 9:16:35:436 IST] 00000001 WsServerImpl A WSVR0001I: Server server1 open for e-business
HTTP: 9060
WebSphere Application Server L1 Page 40
HTTP: 9060
HTTPS: 9043
http://localhost:9060/ibm/console
https://localhost:9043/ibm/console
TRAINING FOR L1 - L3
DON’T SHARE THIS DOUCUMENTATION TO ANYONE.
Serverindex.xml
WebSphere Application Server L1 Page 46
Serverindex.xml
Or
http://was-node50:9080/cal
http://was-node50:9080/hello
Or else
http://localhost:9080/cal -> Calendar
http://localhost:9080/hello -> Default Application
Introduction to Federation:
Federation is an art of integrating unmanaged profiles with one DMGR Profiles. For eg, you can
integrate multiple Application Server Profiles & Multiple Custom Profiles to one DMGR Profile
and without Un Federating you cannot integrate the integrated profiles to another DMGR
profile.
Structures of WAS:
Structure 1:
WAS-Node50
WebSphere Application Server L1 Page 48
WAS-Node50
Prod_IVR_AppSrv01 -> Custom Profile
Prod_IVR_AppSrv02 -> Application Server Profile
Prod_IVR_DMGR01 -> DMGR Profile
Prod_IVR_DMGR01
CN: Prod_IVR_CMGR
NN: Prod_IVR_DMGR01
HN: was-node50
Prod_IVR_AppSrv01
CN: Prod_IVR_CMGR
NN: Prod_IVR_AppSrv01
HN: was-node50
Prod_IVR_AppSrv02
CN: Prod_IVR_CMGR
NN: Prod_IVR_AppSrv02
HN: was-node50
Structure 2:
WAS-NODE50
Prod_IVR_DMGR01 -> dmgr
Prod_LAC_DMGR01 -> dmgr
WAS-NODE51
Prod_IVR_AppSrv01 -> NA
Prod_LAC_AppSrv01 -> NA
WAS-NODE52
Prod_IVR_AppSrv02 -> server1 + NA
Prod_LAC_AppSrv02 -> server1 + NA
Verify:
[wasuser@was-node50 bin]$ less /opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_DMGR01/config/cells/Prod_IVR_CMGR/nodes/Prod_IVR_DMGR01/serverindex.xml
Verify:
[wasuser@was-node50 bin]$ less /opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_AppSrv01/config/cells/blah_blah/nodes/Prod_IVR_AppSrv01/serverindex.xml
Creation of Application Server Profile using CLI Mode for IVR Application:
[wasuser@was-node1 bin]$ ./manageprofiles.sh -create -profileName Prod_IVR_AppSrv02 -templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/default/ -nodeName
Prod_IVR_AppSrv02 -hostname was-node1
Verify:
[wasuser@was-node50 bin]$ less /opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_AppSrv02/config/cells/was-node50Node01Cell/nodes/was-node50Node01/serverindex.xml
Turning on DMGR:
[wasuser@was-node1 server1]$ cd /opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_DMGR01/bin/
[wasuser@was-node1 bin]$ ./startManager.sh
ADMU0116I: Tool information is being logged in file
/opt/IBM/WebSphere/AppServer/profiles/DMGR_Google/logs/dmgr/startServer.log
ADMU0128I: Starting tool with the DMGR_Google profile
ADMU3100I: Reading configuration for server: dmgr
ADMU3200I: Server launched. Waiting for initialization status.
Ps -ef|grep java would tell you all the running process. And if you see any running process kill then
and proceed.
[wasuser@was-node1 ~]$ ps -ef|grep java
wasuser 18290 1 13 07:41 pts/0 00:02:47 /opt/IBM/WebSphere/AppServer/java/bin/java -Declipse.security -Dwas.status.socket=49534 -
Dosgi.install.area=/opt/IBM/WebSphere/AppServer -Dosgi.configuration.area=/opt/IBM/WebSphere/AppServer/profiles/AppSrv03_Google/servers/server1/configuration -
Djava.awt.headless=true -Dosgi.framework.extensions=com.ibm.cds,com.ibm.ws.eclipse.adaptors -Xshareclasses:name=webspherev85_1.6_32_%g,nonFatal -
Xbootclasspath/p:/opt/IBM/WebSphere/AppServer/java/jre/lib/ibmorb.jar -classpath /opt/IBM/WebSphere/AppServer/profiles/AppSrv03
_Google/properties:/opt/IBM/WebSphere/AppServer/properties:/opt/IBM/WebSphere/AppServer/lib/startup.jar:/opt/IBM/WebSphere/AppServer/lib/bootstrap.jar:/opt/IBM/WebSphere/AppS
erver/lib/jsf-
nls.jar:/opt/IBM/WebSphere/AppServer/lib/lmproxy.jar:/opt/IBM/WebSphere/AppServer/lib/urlprotocols.jar:/opt/IBM/WebSphere/AppServer/deploytool/itp/batchboot.jar:/opt/IBM/WebSphe
re/AppServer/deploytool/itp/batch2.jar:/opt/IBM/WebSphere/AppServer/java/lib/tools.jar -Dibm.websphere.internalClassAccessMode=allow -Xms50m -Xmx256m -Xscmaxaot4M -Xscmx60M -
Dws.ext.dirs=/opt/IBM/WebSphere/AppServer/java/lib:/opt/IBM/WebSphere/AppServer/profiles/AppSrv03
_Google/classes:/opt/IBM/WebSphere/AppServer/classes:/opt/IBM/WebSphere/AppServer/lib:/opt/IBM/WebSphere/AppServer/installedChannels:/opt/IBM/WebSphere/AppServer/lib/ext:/op
t/IBM/WebSphere/AppServer/web/help:/opt/IBM/WebSphere/AppServer/deploytool/itp/plugins/com.ibm.etools.ejbdeploy/runtime -
Dderby.system.home=/opt/IBM/WebSphere/AppServer/derby -Dcom.ibm.itp.location=/opt/IBM/WebSphere/AppServer/bin -Djava.util.logging.configureByServer=true -
Alternatively you can stop the servers using the ./stopServer.sh server1 from the bin folder of that
profile.
TRAINING FOR L1 - L3
DON’T SHARE THIS DOUCUMENTATION TO ANYONE.
When federation you have to be in the slave to federate to the master. RUN THIS COMMAND ON
ALL THE SLAVE NODES.
[wasuser@was-node1 ~]$ cd /opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_AppSrv01/bin
[wasuser@was-node1 bin]$ ./addNode.sh was-node50 8879
ADMU0116I: Tool information is being logged in file
/opt/IBM/WebSphere/AppServer/profiles/AppSrv03_Google/logs/addNode.log
ADMU0128I: Starting tool with the AppSrv03_Google profile
CWPKI0308I: Adding signer alias "root_1" to local keystore
"ClientDefaultTrustStore" with the following SHA digest:
42:55:8B:2B:BB:3E:44:7C:3C:76:69:9E:A3:86:02:B8:66:F8:68:47
ADMU0001I: Begin federation of node AppSrv03_Google_was-node1 with Deployment
Manager at localhost:8879.
ADMU0009I: Successfully connected to Deployment Manager Server: localhost:8879
ADMU0505I: Servers found in configuration:
ADMU0506I: Server name: server1
ADMU2010I: Stopping all server processes for node AppSrv03_Google_was-node1
ADMU0512I: Server server1 cannot be reached. It appears to be stopped.
ADMU0024I: Deleting the old backup directory.
ADMU0015I: Backing up the original cell repository.
ADMU0012I: Creating Node Agent configuration for node:
AppSrv03_Google_was-node1
ADMU0014I: Adding node AppSrv03_Google_was-node1 configuration to cell:
CMGR_Google
ADMU0016I: Synchronizing configuration between node and cell.
ADMU0018I: Launching Node Agent process for node: AppSrv03_Google_was-node1
ADMU0020I: Reading configuration for Node Agent process: nodeagent
ADMU0022I: Node Agent launched. Waiting for initialization status.
ADMU0030I: Node Agent initialization completed successfully. Process id is:
19983
ADMU0306I: Note:
ADMU0302I: Any cell-level documents from the standalone CMGR_Google
configuration have not been migrated to the new cell.
ADMU0307I: You might want to:
ADMU0303I: Update the configuration on the CMGR_Google Deployment Manager with
values from the old cell-level documents.
ADMU0306I: Note:
ADMU0304I: Because -includeapps was not specified, applications installed on
the standalone node were not installed on the new cell.
ADMU0307I: You might want to:
ADMU0305I: Install applications onto the CMGR_Google cell using wsadmin
$AdminApp or the Administrative Console.
Steps in Federation:
○ It makes sure that the transition is secured using an temp ssl key store.
○ Stopping all the JVM servers on the node which your federating.
○ Backing up the original cell configuration
○ Create a JVM Process called Node Agent
○ Copying all the DMGR's Cell's Configuration
○ It will finish the Federation Process.
You can verify the above with a simple command called ps -ef|grep java. Remember to verify this
command we have to make sure that both dmgr JVM and nodeagent JVM are running.
[wasuser@was-node50 bin]$ ps -ef|grep java
wasuser 16307 1 0 16:56 pts/0 00:02:35 /opt/IBM/WebSphere/AppServer/java/bin/java -Declipse.security -Dwas.status.socket=48647 -Dosgi.install.area=/opt/IBM/WebSphere/AppServer -
Dosgi.configuration.area=/opt/IBM/WebSphere/AppServer/profiles/Dev_PhoneBanking_AppSrvstd/servers/server1/configuration -Djava.awt.headless=true -
Dosgi.framework.extensions=com.ibm.cds,com.ibm.ws.eclipse.adaptors -Xshareclasses:name=webspherev85_1.6_64_%g,nonFatal -
Xbootclasspath/p:/opt/IBM/WebSphere/AppServer/java/jre/lib/ibmorb.jar -classpath
/opt/IBM/WebSphere/AppServer/profiles/Dev_PhoneBanking_AppSrvstd/properties:/opt/IBM/WebSphere/AppServer/properties:/opt/IBM/WebSphere/AppServer/lib/startup.jar:/opt/IBM/WebSphe
re/AppServer/lib/bootstrap.jar:/opt/IBM/WebSphere/AppServer/lib/jsf-
nls.jar:/opt/IBM/WebSphere/AppServer/lib/lmproxy.jar:/opt/IBM/WebSphere/AppServer/lib/urlprotocols.jar:/opt/IBM/WebSphere/AppServer/deploytool/itp/batchboot.jar:/opt/IBM/WebSphere/Ap
pServer/deploytool/itp/batch2.jar:/opt/IBM/WebSphere/AppServer/java/lib/tools.jar -Dibm.websphere.internalClassAccessMode=allow -Xms50m -Xmx256m -Xcompressedrefs -Xscmaxaot4M -
Xscmx60M -
Dws.ext.dirs=/opt/IBM/WebSphere/AppServer/java/lib:/opt/IBM/WebSphere/AppServer/profiles/Dev_PhoneBanking_AppSrvstd/classes:/opt/IBM/WebSphere/AppServer/classes:/opt/IBM/WebSphe
re/AppServer/lib:/opt/IBM/WebSphere/AppServer/installedChannels:/opt/IBM/WebSphere/AppServer/lib/ext:/opt/IBM/WebSphere/AppServer/web/help:/opt/IBM/WebSphere/AppServer/deployto
ol/itp/plugins/com.ibm.etools.ejbdeploy/runtime -Dderby.system.home=/opt/IBM/WebSphere/AppServer/derby -Dcom.ibm.itp.location=/opt/IBM/WebSphere/AppServer/bin -
Djava.util.logging.configureByServer=true -Duser.install.root=/opt/IBM/WebSphere/AppServer/profiles/Dev_PhoneBanking_AppSrvstd -
Djava.ext.dirs=/opt/IBM/WebSphere/AppServer/tivoli/tam:/opt/IBM/WebSphere/AppServer/java/jre/lib/ext -
Djavax.management.builder.initial=com.ibm.ws.management.PlatformMBeanServerBuilder -
Dpython.cachedir=/opt/IBM/WebSphere/AppServer/profiles/Dev_PhoneBanking_AppSrvstd/temp/cachedir -Dwas.install.root=/opt/IBM/WebSphere/AppServer -
Djava.util.logging.manager=com.ibm.ws.bootstrap.WsLogManager -Dserver.root=/opt/IBM/WebSphere/AppServer/profiles/Dev_PhoneBanking_AppSrvstd -Dcom.ibm.security.jgss.debug=off -
Dcom.ibm.security.krb5.Krb5Debug=off -Djava.library.path=/opt/IBM/WebSphere/AppServer/lib/native/linux/x86_
64/:/opt/IBM/WebSphere/AppServer/java/jre/lib/amd64/compressedrefs:/opt/IBM/WebSphere/AppServer/java/jre/lib/amd64:/opt/IBM/WebSphere/AppServer/lib/native/linux/x86_
64/:/opt/IBM/WebSphere/AppServer/bin:/opt/IBM/WebSphere/AppServer/nulldllsdir:/usr/lib: -
Djava.endorsed.dirs=/opt/IBM/WebSphere/AppServer/endorsed_apis:/opt/IBM/WebSphere/AppServer/java/jre/lib/endorsed -
Djava.security.auth.login.config=/opt/IBM/WebSphere/AppServer/profiles/Dev_PhoneBanking_AppSrvstd/properties/wsjaas.conf -
Djava.security.policy=/opt/IBM/WebSphere/AppServer/profiles/Dev_PhoneBanking_AppSrvstd/properties/server.policy com.ibm.wsspi.bootstrap.WSPreLauncher -nosplash -application
com.ibm.ws.bootstrap.WSLauncher com.ibm.ws.runtime.WsServer /opt/IBM/WebSphere/AppServer/profiles/Dev_PhoneBanking_AppSrvstd/config was-node50Node01Cell
Dev_PhoneBanking_AppSrvstd server1
wasuser 22839 1 36 21:20 pts/0 00:06:18 /opt/IBM/WebSphere/AppServer/java/bin/java -Declipse.security -Dwas.status.socket=52980 -Dosgi.install.area=/opt/IBM/WebSphere/AppServer -
Dosgi.configuration.area=/opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_DMGR01/servers/dmgr/configuration -Dosgi.framework.extensions=com.ibm.cds,com.ibm.ws.eclipse.adaptors -
Xshareclasses:name=webspherev85_1.6_64_%g,nonFatal -Xscmx50M -Xbootclasspath/p:/opt/IBM/WebSphere/AppServer/java/jre/lib/ibmorb.jar -classpath
/opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_DMGR01/properties:/opt/IBM/WebSphere/AppServer/properties:/opt/IBM/WebSphere/AppServer/lib/startup.jar:/opt/IBM/WebSphere/AppServ
er/lib/bootstrap.jar:/opt/IBM/WebSphere/AppServer/lib/jsf-
nls.jar:/opt/IBM/WebSphere/AppServer/lib/lmproxy.jar:/opt/IBM/WebSphere/AppServer/lib/urlprotocols.jar:/opt/IBM/WebSphere/AppServer/deploytool/itp/batchboot.jar:/opt/IBM/WebSphere/Ap
pServer/deploytool/itp/batch2.jar:/opt/IBM/WebSphere/AppServer/java/lib/tools.jar -Dibm.websphere.internalClassAccessMode=allow -Xms50m -Xmx256m -Xcompressedrefs -
Dws.ext.dirs=/opt/IBM/WebSphere/AppServer/java/lib:/opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_DMGR01/classes:/opt/IBM/WebSphere/AppServer/classes:/opt/IBM/WebSphere/AppServ
er/lib:/opt/IBM/WebSphere/AppServer/installedChannels:/opt/IBM/WebSphere/AppServer/lib/ext:/opt/IBM/WebSphere/AppServer/web/help:/opt/IBM/WebSphere/AppServer/deploytool/itp/plugi
ns/com.ibm.etools.ejbdeploy/runtime -Dderby.system.home=/opt/IBM/WebSphere/AppServer/derby -Dcom.ibm.itp.location=/opt/IBM/WebSphere/AppServer/bin -
Djava.util.logging.configureByServer=true -Duser.install.root=/opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_DMGR01 -
Djava.ext.dirs=/opt/IBM/WebSphere/AppServer/tivoli/tam:/opt/IBM/WebSphere/AppServer/java/jre/lib/ext -
Djavax.management.builder.initial=com.ibm.ws.management.PlatformMBeanServerBuilder -Dpython.cachedir=/opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_DMGR01/temp/cachedir -
Dwas.install.root=/opt/IBM/WebSphere/AppServer -Djava.util.logging.manager=com.ibm.ws.bootstrap.WsLogManager -Dserver.root=/opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_DMGR01 -
Dcom.ibm.security.jgss.debug=off -Dcom.ibm.security.krb5.Krb5Debug=off -Djava.awt.headless=true -Djava.library.path=/opt/IBM/WebSphere/AppServer/lib/native/linux/x86_
64/:/opt/IBM/WebSphere/AppServer/java/jre/lib/amd64/compressedrefs:/opt/IBM/WebSphere/AppServer/java/jre/lib/amd64:/opt/IBM/WebSphere/AppServer/lib/native/linux/x86_
64/:/opt/IBM/WebSphere/AppServer/bin:/opt/IBM/WebSphere/AppServer/nulldllsdir:/usr/lib: -
Djava.endorsed.dirs=/opt/IBM/WebSphere/AppServer/endorsed_apis:/opt/IBM/WebSphere/AppServer/java/jre/lib/endorsed -
Djava.security.auth.login.config=/opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_DMGR01/properties/wsjaas.conf -
Djava.security.policy=/opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_DMGR01/properties/server.policy com.ibm.wsspi.bootstrap.WSPreLauncher -nosplash -application
com.ibm.ws.bootstrap.WSLauncher com.ibm.ws.runtime.WsServer /opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_DMGR01/configProd_IVR_CMGR Prod_IVR_DMGR01 dmgr
wasuser 23211 1 10 21:24 pts/0 00:01:26 /opt/IBM/WebSphere/AppServer/java/bin/java -Xmaxt0.5 -Dwas.status.socket=39528 -Declipse.security -
Dosgi.install.area=/opt/IBM/WebSphere/AppServer -Dosgi.configuration.area=/opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_AppSrv01/servers/nodeagent/configuration -
Dosgi.framework.extensions=com.ibm.cds,com.ibm.ws.eclipse.adaptors -Xshareclasses:name=webspherev85_1.6_64_%g,nonFatal -
Xbootclasspath/p:/opt/IBM/WebSphere/AppServer/java/jre/lib/ibmorb.jar -Dorg.osgi.framework.bootdelegation=* -classpath
/opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_AppSrv01/properties:/opt/IBM/WebSphere/AppServer/properties:/opt/IBM/WebSphere/AppServer/lib/startup.jar:/opt/IBM/WebSphere/AppSer
ver/lib/bootstrap.jar:/opt/IBM/WebSphere/AppServer/lib/jsf-
De-Federation:
[wasuser@was-node1 bin]$ ./removeNode.sh
Node Agent is a JVM process. It is actually called "nodeagent". Whenever you're starting this JVM
server, you should specify nodeagent.
Node agent is a broker btw, master and the slave. Now broker will not sit in the master's house
but he will be sitting in the slave's house. And Slave cannot talk with the master directly. Salve if
he has to convey a message it would go through the agent only. Node agent here will be a person
who sits in the middle and talk on both the sides. If the DMGR Server wants to bring down a JVM
server on an node it will inform the Node Agent to do so.
Auto, Periodic Sync of configuration in the Cell Level & Node Level & Server Level with the
DMGR.
Anything different in the Node configuration even if someone has modified the latest version
or update to the Node configuration will be overwritten by the Node agent's Sync process
from the DMGR's configuration. That's why we should not do manual file editing on the node's
profile. We should always do any changes in the DMGR as it holds the master repository.
All the JVM Server which is created on that node where the Node agent is present, will only
start if the nodeagent process is available. Once the JVM server process gets started it doesn’t
need the nodeagent process it be available. The Stop of the JVM server process will not need
the nodeagent process is to be available from the command line.
If the JVM server is still running and suddenly crashes / someone kills it, the node agent will
auto start this process within couple of sec.
When the nodeagent starts up it will check for the servers in that particular node whether that
all the servers are running or not. If some servers are not running it will start it as well. This is
due to the option called auto start.
Full RE-Sync, When you initiate the full sync it stops the NA auto sync Process. It will then take
all the files and push it to the nodes, it wont consider the Epoch file changes. It will push the
manually changed files to which you have changed in the DMGR Level. If you don’t full sync
after a manual file changes, the changes will not be copied to the nodes using the NA because
the manual file changes are not counted for an auto sync process.
Manual sync from command line, you should stop the NA process itself because there is no
way we can stop the NA Auto Sync Process alone. And run the SyncNode.sh command from
the command line. And start back the NA Process.
TRAINING FOR L1 - L3
DON’T SHARE THIS DOUCUMENTATION TO ANYONE.
Stop:
WSADMIN:
DMGR Console:
Command Prompt:
[wasuser@was-node1 nodeagent]$ cd /opt/IBM/WebSphere/AppServer/profiles/AppSrv03_Google/bin/
[wasuser@was-node1 bin]$ ./stopServer.sh nodeagent
[wasuser@was-node1 bin]$ ./stopNode.sh
Starting:
WSADMIN:
Command Prompt:
[wasuser@was-node1 nodeagent]$ cd /opt/IBM/WebSphere/AppServer/profiles/AppSrv03_Google/bin/
[wasuser@was-node1 bin]$ ./startServer.sh nodeagent
[wasuser@was-node1 bin]$ ./startNode.sh
Restarting:
DMGR Console:
Command Line:
[wasuser@was-node1 bin]$ ./startServer.sh server1
ADMU0116I: Tool information is being logged in file
/opt/IBM/WebSphere/AppServer/profiles/AppSrv03_Google/logs/server1/startServer.log
ADMU0128I: Starting tool with the AppSrv03_Google profile
ADMU3100I: Reading configuration for server: server1
ADMU3200I: Server launched. Waiting for initialization status.
ADMU3011E: Server launched but failed initialization. Server logs,
startServer.log, and other log files under
/opt/IBM/WebSphere/AppServer/profiles/AppSrv03_Google/logs/server1
should contain failure information.
[wasuser@was-node1 bin]$ less /opt/IBM/WebSphere/AppServer/profiles/AppSrv03_Google/logs/server1/SystemOut.log
[12/21/14 8:46:57:224 IST] 00000001 WsServerImpl E WSVR0009E: Error occurred during startup
com.ibm.ws.exception.RuntimeError: com.ibm.ejs.EJSException: Could not register with Location Service Daemon, which could onl y reside
in the NodeAgent. Make sure the NodeAgent for this node is up and running.; nested exception is
Check the port number before you browse the DMGR Console. Always remember to check in the
DMGR Profile in case of an federated profile. And server1 in case of an application server profile
which is not federated.
https://was-node50:9043/ibm/console/login.do
Overview of DMGR:
PROD_IVR_AppSrv01 (Node)
PROD_IVR_Server01
WebSphere Application Server L1 Page 69
PROD_IVR_Server01
PROD_IVR_Server02
PROD_IVR_AppSrv02 (Node)
PROD_IVR_Server03
PROD_IVR_Server04
TRAINING FOR L1 - L3
DON’T SHARE THIS DOUCUMENTATION TO ANYONE.
Agenda:
Web Servers, are servers which serves static pages. It doesn’t require any processing
inside the web servers.
IBM HTTP Server is built on top of Apache HTTPD servers. IHS server have the same
functions as the Apache httpd Server.
Installation Concepts:
You can install this software only by a binary mode. Where the compilation of
the software is already completed by IBM. As they have already fine tuned the
values of apache http's servers services & had customized the same.
On the other hand Apache HTTPD Server can be installed in either Binary or
Source where Binary are pre-build software and the source method of
installation which starts by, building the software from the scratch like, checking
for the required modules -> Customizing what you want -> Compiling the
modules -> building the modules -> Creating proper folder structure -> Moving
the files to those folders.
Advantage of I H S:
DSO:
Previous to the Apache httpd server 1.3 we don’t have the concept called DSO.
Dynamically Shared Objects, are nothing but the objects which your planning to
load into the apache's memory, ( for eg, objects are nothing but a websphere
related clustering configuration needs to be loaded into the I H S ) you don’t need to
reinstall apache httpd server and compile it again with this module. As we can
dynamically load this configuration / module into the memory and restart the
apache httpd server / I H S.
MPM:
Previous to apache httpd server 2.0 we have only one method of addressing or
processing the incoming request. Which is called prefork.
Worker on the other hand handles request, where every request because a part
of the process but not the process itself. Where A process can handle multiple
( pre set ) threads, So each request will be a part of the process and also shares
the memory which is on the process.
So if I get 500 request and Each process consists of 5 MB of a memory and each
process call handle 5 threads. So 500 Request / 5 Threads * 5 MB= 500MB .
Where only 100 process is required to be created.
CLI Mode:
[wasuser@was-node50 tools]$ cd /opt/IBM/InstallationManager/eclipse/tools
[wasuser@was-node50 tools]$ ./imcl listAvailablePackages -repositories /opt/software/IHS\ \&\ Plugin/IHS/
com.ibm.websphere.IHSILAN.v85_8.5.5000.20130514_1044
IP Based:
<VirtualHost 192.168.1.2:80>
ServerAdmin [email protected]
DocumentRoot /opt/content/ivr/
ServerName www.ivr.com
ServerAlias ivr.com
ErrorLog logs/ivr.com-error_log
CustomLog logs/ivr.com-access_log common
</VirtualHost>
<VirtualHost 192.168.1.3:80>
ServerAdmin [email protected]
DocumentRoot /opt/content/lac/
ServerName www.lac.com
ServerAlias lac.com
ErrorLog logs/lac.com-error_log
CustomLog logs/lac.com-access_log common
</VirtualHost>
Name Based:
NameVirtualHost *:80 -> Only for 2.2 version you can remove it for 2.4 version
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /opt/content/ivr/
ServerName www.ivr.com
ServerAlias ivr.com
ErrorLog logs/ivr.com-error_log
CustomLog logs/ivr.com-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /opt/content/lac/
ServerName www.lac.com
ServerAlias lac.com
ErrorLog logs/lac.com-error_log
CustomLog logs/lac.com-access_log common
</VirtualHost>
<VirtualHost 192.168.1.2:8080>
ServerAdmin [email protected]
DocumentRoot /opt/content/ivr_stage/
ServerName www.ivr.com
ServerAlias ivr.com
bin/ -> Binary files. Executable file to work with both Websphere integration and Http
Server start, stop and graceful.
conf/ -> It holds on to the configuration of http and admin http server
htdocs/ -> Default document root. Document Root in the sense where the content of the
website would be stored ( html files images file so n so )
logs/ -> has the logs of all the website configured with error and access logs.
modules/ -> has the modules which is required to run with http server.
Vi httpd.conf
<IfModule worker.c>
ThreadLimit 25
ServerLimit 64
StartServers 1
MaxClients 600
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
64*25 = 1600
Configuring a simple website ( go to the bottom of the above file and come up to search
for virtual host. You can either alter the lines are create new set of lines).
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /opt/content/ivr/
ServerName www.ivr.com
ServerAlias ivr.com
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /opt/content/lac/
ServerName www.lac.com
ServerAlias lac.com
ErrorLog logs/lac.com-error_log
CustomLog logs/lac.com-access_log common
</VirtualHost>
<Directory /opt/content/>
Options FollowSymLinks
AllowOverride None
FileETag All -INode
Require all granted
</Directory>
<HTML>
<body bgcolor=red><br>
Hello welcome to IVR.COM<br><br>
Click <a href="https://www.ivr.com/sample1/"> here </a> to get redirected
</body>
</HTML>
<HTML>
<body bgcolor=green><br>
Hello welcome to LAC.COM<br><br>
Click <a href="https://www.lac.com/cal/"> here </a> to get redirected
</body>
</HTML>
Note: The above eg only for IVR change it to LAC in case if your creating another file.
Browsing of an website:
Home Work:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/opt/content/lac"
ServerName lac.com
ServerAlias www.lac.com
DirectoryIndex index.html default.html
ErrorLog "logs/lac.com-error_log"
CustomLog "logs/lac.com-access_log" common
</VirtualHost>
:wq
Agenda:
Plugins:
Arch Plugin:
Once plugin configured:
Important files on plugin:
Configuration of plugin:
Plugin Introduction:
Plugin is a modules where we insert it into the IBM HTTP Server. And Configure a plugin.xml file from the websphere and
place it in the location of HTTP Server. So whenever a website is called it will first check in the plugin.xml for the URI if
anything matches. If not it will serve from the web server.
Plugin Installation:
Plugin Configuration:
For 8.5.5
[wasuser@was-node1 bin]$ cd /opt/IBM/WebSphere/Plugins/bin/
[wasuser@was-node1 bin]$ vi ConfigureIHSPlugin.sh
[wasuser@was-node1 bin]$ ./ConfigureIHSPlugin.sh -plugin.home /opt/IBM/Plugins/ -plugin.config.xml /opt/IBM/Plugins/config/IVR_Webserver01/plugin-cfg.xml -ihs.conf.file /opt/IBM/HTTPServer/conf/httpd.conf -ihs.admin.usergroup httpadm -
operating.system Linux -operating.system.arch 64 -WAS.webserver.name IVR_Webserver01 -WAS.host.name was-node50
1) The problem could be the webserver1 or the <NAME OF THE WEB SERVER> Directory doesn’t exists.
/opt/IBM/Plugins/config/<NAME OF THE WEBSERVER>/plugin-cfg.xml
Go to console -> Environment -> update global plugin configuration -> Overwrite
[wasadm@was-node1 Dev_IVR_WS01]$ cp /opt/IBM/WebSphere/AppServer/profiles/Prod_IVR_DMGR01/config/cells/plugin-cfg.xml /opt/IBM/WebSphere/Plugins/config/Prod_IVR_WS01/
Plugin-cfg.xml overview:
<Log LogLevel="Error" Name="/opt/IBM/HTTPServer/Plugins/logs/yahoo_webServer1/http_plugin.log"/>
www.yahoo.com 80
How it works:
vi admin.conf
Listen 8008
ServerName was-node50:8008
OR
[root@was-node1 conf]# cd /opt/IBM/HTTPServer/bin/
[root@was-node1 bin]# ./adminctl start
./adminctl start: admin http started
[root@was-node1 bin]# ./adminctl start
./adminctl start: admin http (pid 6504) already running
Agenda:
Introduction & Arch:
Creating a Provider:
Creating a DS:
Configuring a Connection Pool:
Testing with the database:
Introduction:
Java DataBase Connectivity. Where we use JDBC to connect to different databases to get the
values from the database in terms of updating the client with them. You can create new tables or
modify existing or delete the tables.
A Provider Creation. -> Provider gives the details of what the database is and how websphere
has to communicate with it. So bascially we need to load a module to the DB and
implementation class and helper class ( default ). These details can be either collected from the
internet or from an DB Admin's.
A Data Source Creation. -> Here we provide more details about the database we are
connecting with, firstly we start with a JNDI ( Java Naming Directory Interface ) name, where
JNDI name would be referred by the application which is trying to access this database. Hence,
the JNDI should match the client requirements. The Database Name. The Database Server Host
Name. The Database User Name. The Database Password. The Database port number.
A Connection Pool Defined. -> We fine tune some values here where these values are used
while connecting to the database.
Note: You can install a database on single system or multiple ( network connectivity is required ).
Creating a Provider:
/opt/IBM/WebSphere/AppServer/util/mysql-connector-java-5.1.14-bin.jar
Messaging Queue:
MQ is a component which is configured using Websphere application server as a client and the MQ
application software as the server.
Application which used to send messages would be using queue or topic which you configure in the WAS
server and sends out messages to the MQ server. MQ Server then stores the messages and sends it to
the correct people who needs to get delivered with the messages.
JMX: Java Messaging Extension. Where the internal components of Websphere Application Server uses
the JMX to send out messages to different components. Like a communication btw, a DMGR server to a
Node Agent.
Messaging server:
Real time:
HONDA
Retail Branch
Mumbai
Sales Branch
Chennai
Invoice Branch
Bangalore
Sync Communication:
A communication which is done though voice or video where one person will need to reply.
Async Communication:
Configuration:
Provider:
Define about the type, driver, class files and version of MQ provider we are going to connect with.
Queues:
Sender will send out messages and it would be stored in the JMS server and it gets delivered at
the receiver's end.
As it’s a queue system, the messages would stand in line and get out for delivery.
As it’s a queue system, One sender can send one message at a time to one receiver.
Topic System:
The message would go randomly to the JMS server and any number of people can subscribe
to it.
This is not an intended message, so the publisher will not have any idea about the
subscriber.
As JMS/MQ is the default provider the WAS would come with already defined provider configuration.
You can verify the same here.
Creating a QUEUE: