#!/bin/sh ################################################################################################### # function - check if the weblogic server is up or not ################################################################################################### checkStatus () { # check startup status from log file LOG_FILE="${DOMAIN_HOME}/$1_jrt.log" COUNT=0 while [ $COUNT -lt 60 ]; do if [ "x`tail -100l ${LOG_FILE} 2>&1 | egrep 'Server started in RUNNING mode'`" != "x" ]; then break fi sleep 3 COUNT=`expr $COUNT + 1` done echo "Server $1 has started!" } ################################################################################################### #Note: this script is to pre-configure the weblogic server for installing the jrt-weblogic.ear. Before # run this script, make sure the domain and server are created already. WLST can create the domain though # TODO: it is a little hard to restore it to clean state!!! # TODO: try drop the domain/server at the first, then create domain/server from the scratch # TODO: 1) if DOMAIN_HOME exists, then goto there and stop weblogic, then delete the domain directory; # 2) use wlst to create a new domain with the servers ################################################################################################### #1, setup the environment path ################################################################################################### ## necessary parameters WL_HOME="/scratch/swu/Middleware/wlserver_10.3" #target Server name #TARGET_SERVER=AdminServer TARGET_SERVER=MyServer1 USER=weblogic PASSWORD=welcome1 ADMIN_URL=t3://localhost:7001 audit_uri="localhost:1521/ora111.us.oracle.com" DOMAIN_NAME=owb #Admin Server name - created when create domain by default SERVER_NAME=AdminServer JAVA_HOME=$WL_HOME/../jdk160_11 TARGET_PORT=7003 DOMAIN_HOME=$WL_HOME/../user_projects/domains/$DOMAIN_NAME # hardcode APP_NAME here, as the context-root has been hardcoded in application.xml APP_NAME=jrt CLASSPATH=$WL_HOME/server/lib/weblogic.jar:$CLASSPATH export CLASSPATH PATH=$WL_HOME/server/bin:$JAVA_HOME/bin:$PATH export PATH # set the WLS_USER/WLS_PW, so no need to enter credentials when startup Managed Server WLS_USER=$USER export WLS_USER WLS_PW=$PASSWORD export WLS_PW # TODO: considering what are the necessary parameters which should be passed in if [ $# -eq 1 ] then echo "the parameter will be used as password, others will use default value!" PASSWORD=$1 elif [ $# -eq 8 ] then echo "get values from parameters!" WL_HOME=$1 ADMIN_URL=$2 TARGET_SERVER=$3 USER=$4 PASSWORD=$5 audit_uri=$6 else echo "wrong parameters! either provide 1 parameter for \"PASSWORD\" or provide 6 parameters for \"WL_HOME ADMIN_URL TARGET_SERVER USER PASSWORD audit_uri\"" exit 1 fi ################################################################################################### #2, stop weblogic and modify the startWebLogic.sh ################################################################################################### if [ -e $DOMAIN_HOME ] then echo "@@@@@@@@@@@@@@@@@@try to stop the weblogic and drop the existing domain@@@@@@@@@@@@@@@" cd $DOMAIN_HOME/bin # stop weblogic; stop managed server first in case target is not Admin Server if [ "${SERVER_NAME}" != "${TARGET_SERVER}" ] then ./stopManagedWebLogic.sh $TARGET_SERVER $ADMIN_URL $USER $PASSWORD fi ./stopWebLogic.sh # now remove the domain cd ../.. rm -rf $DOMAIN_NAME fi # now create the domain with offline mode echo "@@@@@@@@@@@@@@@@@@create weblogic domain in offline mode@@@@@@@@@@@@@@@" cd $WL_HOME/../user_projects/domains echo "createDomain('$WL_HOME/common/templates/domains/wls.jar','$DOMAIN_HOME','$USER','$PASSWORD')" > config.py echo "exit()" >> config.py $JAVA_HOME/bin/java weblogic.WLST config.py # modify startWebLogic.sh to add external options echo "@@@@@@@@@@@@@@@@@@update the startup script@@@@@@@@@@@@@@@" cd $DOMAIN_HOME/bin cp startWebLogic.sh startWebLogic.sh.orig sed -e 's/weblogic.policy/weblogic.policy -Doracle.j2ee.home=${DOMAIN_HOME} -Dpython.path=${DOMAIN_HOME}\/lib\/jython_lib.zip:${DOMAIN_HOME}\/lib\/jython_owblib.jar/g' startWebLogic.sh > startWebLogic.sh.tmp sed -e '/-version/ a WLS_REDIRECT_LOG=\"\${DOMAIN_HOME}\/\${SERVER_NAME}_jrt.log\"' startWebLogic.sh.tmp > startWebLogic.sh rm startWebLogic.sh.tmp cp startManagedWebLogic.sh startManagedWebLogic.sh.orig sed -e 's/WLS_USER=\"\"/WLS_USER=\${WLS_USER}/g' startManagedWebLogic.sh > startManagedWebLogic.sh.tmp sed -e 's/WLS_PW=\"\"/WLS_PW=\${WLS_PW}/g' startManagedWebLogic.sh.tmp > startManagedWebLogic.sh rm startManagedWebLogic.sh.tmp # modify setDomainEnv.sh to add jython.jar (at the front to override the jython in weblogic.jar) cp setDomainEnv.sh setDomainEnv.sh.orig sed '$a CLASSPATH=\"\${DOMAIN_HOME}/lib/jython.jar\${CLASSPATHSEP}\${CLASSPATH}\${CLASSPATHSEP}\${DOMAIN_HOME}/lib/jrt.jar\${CLASSPATHSEP}\${DOMAIN_HOME}/lib/ojdl.jar\${CLASSPATHSEP}\${DOMAIN_HOME}/lib/dms.jar\${CLASSPATHSEP}\${DOMAIN_HOME}/lib/ojdl2.jar\${CLASSPATHSEP}\${DOMAIN_HOME}/lib/xmlparserv2.jar\${CLASSPATHSEP}\${DOMAIN_HOME}/lib/orawsdl.jar\"' setDomainEnv.sh > setDomainEnv.sh.tmp sed '$a export CLASSPATH' setDomainEnv.sh.tmp > setDomainEnv.sh rm setDomainEnv.sh.tmp ################################################################################################### #3, copy necessary libraries to DOMAIN_HOME/lib # TODO: weblogic_jrt_lib.zip contains necessary jars (non jdbc jars)!! ################################################################################################### echo "@@@@@@@@@@@@@@@@@@setup the weblogic libraries@@@@@@@@@@@@@@@" cd $DOMAIN_HOME/lib rm -rf *.zip *.jar cp $OWB_HOME/owb/lib/non_ship/ext_copy/*.jar . cp $OWB_HOME/owb/jrt/applications/weblogic_jrt_lib.zip . unzip weblogic_jrt_lib.zip ################################################################################################### #4, copy ct_permission.properties and platform properties # TODO: it is important to create that jrt/config directory!! Also create jrt/applications dir! ################################################################################################### echo "@@@@@@@@@@@@@@@@@@copy the ct_permissions file@@@@@@@@@@@@@@@" cd $DOMAIN_HOME/config mkdir -p $APP_NAME/config cd $APP_NAME/config cp $OWB_HOME/owb/bin/non_ship/ct_permissions.properties . cd $DOMAIN_HOME/config mkdir -p $APP_NAME/applications/$APP_NAME/platforms cd $APP_NAME/applications/$APP_NAME/platforms cp $SRCHOME/oracle/wh/jrt/sdk/platform/xml/* . ################################################################################################### #5, start weblogic # TODO: !!startWebLogic.sh does not return, we need find a block way for startup!! # TODO: setup the managed server here and set some properties ################################################################################################### cd $DOMAIN_HOME/bin # start weblogic ./startWebLogic.sh & checkStatus ${SERVER_NAME} # start managed server if needed if [ "${SERVER_NAME}" != "${TARGET_SERVER}" ] then # now create the managed server and set properties if needed echo "@@@@@@@@@@@@@@@@@@try create the managed server and set the listen port@@@@@@@@@@@@@@@" echo "connect('$USER','$PASSWORD','$ADMIN_URL')" > config.py echo "edit()" >> config.py echo "startEdit()" >> config.py echo "create('$TARGET_SERVER','Server')" >> config.py echo "cd('Servers/$TARGET_SERVER')" >> config.py echo "set('ListenPort', $TARGET_PORT)" >> config.py echo "save()" >> config.py echo "activate(block='true')" >> config.py echo "exit()" >> config.py $JAVA_HOME/bin/java weblogic.WLST config.py ./startManagedWebLogic.sh $TARGET_SERVER $ADEMIN_URL & checkStatus ${TARGET_SERVER} fi ################################################################################################### #6, setup security roles (use groups -- roles, so that we can grant role easily) ################################################################################################### # config.py echo "@@@@@@@@@@@@@@@@@@create weblogic security roles@@@@@@@@@@@@@@@" echo "connect('$USER','$PASSWORD','$ADMIN_URL')" > config.py echo "antr=cmo.getSecurityConfiguration().getDefaultRealm().lookupAuthenticationProvider('DefaultAuthenticator')" >> config.py #echo "cd('SecurityConfiguration/$DOMAIN_NAME/DefaultRealm/myrealm/AuthenticationProviders/DefaultAuthenticator')" >> config.py echo "antr.createGroup('OWB_J2EE_EXECUTOR','owb executors group')" >> config.py echo "antr.createGroup('OWB_J2EE_OPERATOR','owb operators group')" >> config.py echo "antr.createGroup('OWB_J2EE_ADMINISTRATOR','owb administrators group')" >> config.py echo "antr.createGroup('OWB_INTERNAL_USERS','owb internal users group')" >> config.py echo "antr.addMemberToGroup('OWB_J2EE_EXECUTOR','OWB_J2EE_OPERATOR')" >> config.py echo "antr.addMemberToGroup('Administrators','OWB_J2EE_OPERATOR')" >> config.py echo "antr.addMemberToGroup('OWB_J2EE_EXECUTOR','OWB_J2EE_ADMINISTRATOR')" >> config.py echo "antr.addMemberToGroup('OWB_J2EE_OPERATOR','OWB_J2EE_ADMINISTRATOR')" >> config.py echo "antr.addMemberToGroup('OWB_J2EE_ADMINISTRATOR','$USER')" >> config.py echo "rlmp=cmo.getSecurityConfiguration().getDefaultRealm().lookupRoleMapper('XACMLRoleMapper')" >> config.py #echo "cd('../../RoleMappers/XACMLRoleMapper')" >> config.py echo "rlmp.createRole(None,'OWB_J2EE_EXECUTOR','Grp(OWB_J2EE_EXECUTOR)')" >> config.py echo "rlmp.createRole(None,'OWB_J2EE_OPERATOR','Grp(OWB_J2EE_OPERATOR)')" >> config.py echo "rlmp.createRole(None,'OWB_J2EE_ADMINISTRATOR','Grp(OWB_J2EE_ADMINISTRATOR)')" >> config.py echo "rlmp.createRole(None,'OWB_INTERNAL_USERS','Grp(OWB_INTERNAL_USERS)')" >> config.py echo "exit()" >> config.py $JAVA_HOME/bin/java weblogic.WLST config.py ################################################################################################### #7, setup audit datasource ################################################################################################### echo "@@@@@@@@@@@@@@@@@@create weblogic audit data source@@@@@@@@@@@@@@@" echo "connect('$USER','$PASSWORD','$ADMIN_URL')" > config.py echo "cd('/')" >> config.py echo "edit()" >> config.py echo "startEdit()" >> config.py echo "jdbcSR=cmo.createJDBCSystemResource('AuditDS')" >> config.py echo "jdbcRS=jdbcSR.getJDBCResource()" >> config.py echo "jdbcRS.setName('AuditDS')" >> config.py echo "dsParams=jdbcRS.getJDBCDataSourceParams()" >> config.py echo "dsParams.addJNDIName('jdbc/AuditDS')" >> config.py echo "dsParams.setGlobalTransactionsProtocol('None')" >> config.py echo "driverParams=jdbcRS.getJDBCDriverParams()" >> config.py echo "driverParams.setUrl('jdbc:oracle:thin:@//$audit_uri')" >> config.py echo "driverParams.setDriverName('oracle.jdbc.pool.OracleDataSource')" >> config.py echo "driverParams.setPassword('owbsys_audit')" >> config.py echo "driverProperties=driverParams.getProperties()" >> config.py echo "proper=driverProperties.createProperty('user')" >> config.py echo "proper.setValue('owbsys_audit')" >> config.py echo "targetServer=getMBean('Servers/$TARGET_SERVER')" >> config.py echo "jdbcSR.addTarget(targetServer)" >> config.py echo "save()" >> config.py echo "activate(block='true')" >> config.py echo "exit()" >> config.py $JAVA_HOME/bin/java weblogic.WLST config.py ################################################################################################### #8, setup jms queues ################################################################################################### echo "@@@@@@@@@@@@@@@@@@create weblogic jms queues@@@@@@@@@@@@@@@" echo "connect('$USER','$PASSWORD','$ADMIN_URL')" > config.py echo "cd('/')" >> config.py echo "edit()" >> config.py echo "startEdit()" >> config.py echo "targetServer=getMBean('Servers/$TARGET_SERVER')" >> config.py echo "jmsServer=cmo.createJMSServer('AgentJMSServer')" >> config.py echo "jmsServer.addTarget(targetServer)" >> config.py echo "jmsSR=cmo.createJMSSystemResource('AgentJMS')" >> config.py echo "jmsSR.addTarget(targetServer)" >> config.py echo "subDep=jmsSR.createSubDeployment('DeployToJMSServer')" >> config.py echo "subDep.addTarget(jmsServer)" >> config.py echo "jmsRS=jmsSR.getJMSResource()" >> config.py echo "owbQueue=jmsRS.createQueue('owbQueue')" >> config.py echo "owbQueue.setJNDIName('jms/owbQueue')" >> config.py echo "owbQueue.setSubDeploymentName('DeployToJMSServer')" >> config.py ### testing for jrt only begin, no need for generic purpose ### echo "cd('/JMSSystemResources/AgentJMS/JMSResource/AgentJMS/Queues/owbQueue/DeliveryFailureParams/owbQueue')" >> config.py echo "cmo.setRedeliveryLimit(0)" >> config.py ### testing for jrt only end ### echo "abortQueue=jmsRS.createQueue('owb_abortQueue')" >> config.py echo "abortQueue.setJNDIName('jms/owb_abortQueue')" >> config.py echo "abortQueue.setSubDeploymentName('DeployToJMSServer')" >> config.py #echo "connFactory=jmsRS.createConnectionFactory('owbConnFactory')" >> config.py #echo "connFactory.setJNDIName('jms/QueueConnectionFactory')" >> config.py #echo "connFactory.setSubDeploymentName('DeployToJMSServer')" >> config.py echo "save()" >> config.py echo "activate(block='true')" >> config.py echo "exit()" >> config.py $JAVA_HOME/bin/java weblogic.WLST config.py ################################################################################################### #9, deploy jrt application ################################################################################################### echo "@@@@@@@@@@@@@@@@@@deploy jrt application now@@@@@@@@@@@@@@@" $JAVA_HOME/bin/java weblogic.Deployer -adminurl $ADMIN_URL -username $USER -password $PASSWORD -deploy -name $APP_NAME -source $OWB_HOME/owb/jrt/applications/jrt_weblogic_deploy.ear -targets ${TARGET_SERVER} -upload -securityModel CustomRoles -remote # set the deployment order of JRT application echo "@@@@@@@@@@@@@@@@@@setup the Deployment Order for jrt application@@@@@@@@@@@@@@@" echo "connect('$USER','$PASSWORD','$ADMIN_URL')" > config.py echo "cd('/')" >> config.py echo "edit()" >> config.py echo "startEdit()" >> config.py echo "cd('AppDeployments/$APP_NAME')" >> config.py echo "set('DeploymentOrder',50)" >> config.py echo "save()" >> config.py echo "activate(block='true')" >> config.py echo "exit()" >> config.py $JAVA_HOME/bin/java weblogic.WLST config.py ################################################################################################### #10, restart weblogic again, to make some changes take effect, like disable AuditDS globalTrans ################################################################################################### #if [ -e $DOMAIN_HOME ] #then # echo "@@@@@@@@@@@@@@@@@@restart the weblogic@@@@@@@@@@@@@@@" # cd $DOMAIN_HOME/bin # # stop weblogic; stop managed server first in case target is not Admin Server # if [ "${SERVER_NAME}" != "${TARGET_SERVER}" ] # then # ./stopManagedWebLogic.sh $TARGET_SERVER $ADMIN_URL $USER $PASSWORD # fi # ./stopWebLogic.sh #fi ## start weblogic #cd $DOMAIN_HOME/bin #./startWebLogic.sh & #checkStatus ${SERVER_NAME} ## start managed server if needed #if [ "${SERVER_NAME}" != "${TARGET_SERVER}" ] #then # ./startManagedWebLogic.sh $TARGET_SERVER $ADEMIN_URL & # checkStatus ${TARGET_SERVER} #fi echo "@@@@@@@@@@@@@@@@@@Done with the weblogic setup@@@@@@@@@@@@@@@" exit 0