MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/bin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/bin/aqxmlctl.pl

#!/usr/local/bin/perl
# 
# $Header: rdbms/src/common/java/oc4j/aqxmlctl.pl /main/4 2017/08/25 20:41:46 rtattuku Exp $
#
# aqxmlctl.pl
# 
# Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
#
#    NAME
#      aqxmlctl.pl - Single controller script for start and
#                       stop aqxml access
#
#    DESCRIPTION
#      Single entry point script for start and shutdown isqlplus server
#      This perl script is called by shell script aqxmlctl 
#      All the system variables are set from the shell script aqxmlctl
#
#      The usage of this script is:
#         sh aqxmlctl start|stop|deploy
#
#    NOTES
#      <other useful comments, qualifications, etc.>
#
#    MODIFIED   (MM/DD/YY)
#    bhshanmu    05/05/17 - bhshanmu_bug-26003322_linux
#    rbhyrava    10/03/08 - XbranchMerge rbhyrava_bug-7445175 from
#                           st_rdbms_11.1.0
#    rbhyrava    10/03/08 - bug fix 7445175&7432282 
#    rbhyrava    05/13/08 - pwd from commandline
#    rbhyrava    11/04/04 - rbhyrava_aqxml_demo_oc4jdoc
#    rbhyrava    10/29/04 - Creation
# 
#
# get the action, component and argument count ...

$action = $ARGV[0];
$pwd = $ARGV[1];
$argCount = scalar(@ARGV);

$SD="\/";
$SP=":";
$OS = $ENV{'OS'};
$SD="\\" if($os =~ /Win/i);
$SP=";" if($os =~ /Win/i);

$JAVA_HOME = $ENV{'JAVA_HOME'};
$ORACLE_HOME = $ENV{'ORACLE_HOME'};

$DB_SID = $ENV{'ORACLE_SID'};
$DB_HOST = $ENV{'HOST'};
$DB_PORT = getdblistenerport();

$AQXML_OC4J_HOME = "${ORACLE_HOME}${SD}oc4j";
$AQXML_RMI_FILE=
    "${AQXML_OC4J_HOME}${SD}j2ee${SD}OC4J_AQ${SD}config${SD}rmi.xml";
$J2EE_HOME = "${AQXML_OC4J_HOME}${SD}j2ee${SD}home";

banner();                                        # print the banner.

if ($argCount ge 1)     #isqlplusctl start/stop
{
    if ($action eq "start")
    {
      startaqxml();
    }
    elsif ($action eq "stop")
    {
      stopaqxml();
    }
    elsif ($action eq "deploy")
    {
      deployaqxml();
    }
    else 
    {
      displayHelp();
    }
}
else 
{
    displayHelp();
}


# subroutine to display banner
sub banner()
{
  print "AQXML 10.2.0.0\n";
  print "Copyright (c) 2004 Oracle.  All rights reserved.\n";
}



# subroutine to display help

sub displayHelp()
{ 
    print "Invalid arguments\n";
    print "\nUnknown command option $action\n"; 
    print "Usage:: \n";
    print "       aqxmlctl start|stop <password>\n";
}

# 
# Sub routine to stop the AQXML Instance
#
sub stopaqxml()
{
#
# Get rmi port from rmi.xml
#
    $rmiportno = getrmiport();
    $AQ_RMI_PORT = "$rmiportno";
    print $rmiportno; 
    my($timeinmills) = time();

    print "\nStopping AQXML ...\n";

    chdir("$J2EE_HOME");

    system("${JAVA_HOME}${SD}bin${SD}java -jar ${J2EE_HOME}${SD}admin.jar ".
          " ormi://localhost:$AQ_RMI_PORT/aqxmldemo admin $pwd " .
          " -shutdown force");

   # Give JAVA enough time to stop aqxml instance 
    sleep(30);
    print "AQXML instance stopped.\n";
    exit 0;
}


sub getdblistenerport()
{
  $_=`lsnrctl stat | grep "PROTOCOL=tcp"`;
  /(.*)PORT=(.*)\)\)\)/;
  $dblistenport=$2;
  return $dblistenport;
}

sub getrmiport()
{
# Open the rmi.xml file

open(AQXMLRMI,"$AQXML_RMI_FILE") || die "Cannot open ${AQXML_RMI_FILE}.\n";
# Read the file line by line
while (<AQXMLRMI>)
{
  # Check for the line containing the word "port="
  if (/^\s*<rmi-server port=/i)
  {
    if(/"[0-9]+"/)
    {
        $& =~ /[0-9]+/;
        $rmiport = "$&";
        last; # break out of the loop
    }
  }
}
# Now the port variable just contains the port number
close(AQXMLRMI);
return $rmiport;
}

# startaqxml
# 1) argument list
#
sub setupaqxml()
{
   $debug = false;
    system("rm -fr ${AQXML_OC4J_HOME}${SD}aq");
    system("mkdir ${AQXML_OC4J_HOME}${SD}aq");

   if ( ! -f '${AQXML_OC4J_HOME}${SD}aq${SD}xmlparserv2.jar' ) {
    system("cp $ORACLE_HOME${SD}lib${SD}xmlparserv2.jar ${AQXML_OC4J_HOME}${SD}aq");
    if ($debug) { print "\n1.xmlparserv2.jar copied."; }
   }

   if (! -f '${AQXML_OC4J_HOME}${SD}aq${SD}xsu12.jar') {
    system("cp $ORACLE_HOME${SD}lib${SD}xsu12.jar ${AQXML_OC4J_HOME}${SD}aq");
    if ($debug) { print "\n2.xsu12.jar copied."; }
   }
   if (! -f '${AQXML_OC4J_HOME}${SD}aq${SD}xschema.jar') {
    system("cp $ORACLE_HOME${SD}lib${SD}xschema.jar ${AQXML_OC4J_HOME}${SD}aq");
    if ($debug) { print "\n3.xschema.jar copied."; }
   }
   if (! -f '${AQXML_OC4J_HOME}${SD}aq${SD}ojdbc5dms.jar') {
    system("cp $ORACLE_HOME${SD}jdbc${SD}lib${SD}ojdbc5dms.jar ${AQXML_OC4J_HOME}${SD}aq");
    if ($debug) { print "\n4.ojdbc5dms.jar copied."; }
   }
   if (! -f '${AQXML_OC4J_HOME}${SD}aq${SD}dms.jar') {
    system("cp $ORACLE_HOME${SD}oc4j${SD}lib${SD}dms.jar ${AQXML_OC4J_HOME}${SD}aq${SD}dms.jar");
    if ($debug) { print "\n5.dms.jar copied."; }
   }
   if (! -f '${AQXML_OC4J_HOME}${SD}aq${SD}ojdl.jar' ){
    system("cp $ORACLE_HOME${SD}oc4j${SD}diagnostics${SD}lib${SD}ojdl.jar ${AQXML_OC4J_HOME}${SD}aq${SD}ojdl.jar");
    if ($debug) { print "\n6.ojdl.jar copied."; }
   }
   if (! -f '${AQXML_OC4J_HOME}${SD}aq${SD}servlet.jar') {
    system("cp $ORACLE_HOME${SD}oc4j${SD}j2ee${SD}home${SD}lib${SD}servlet.jar ${AQXML_OC4J_HOME}${SD}aq${SD}servlet.jar");
    if ($debug) { print "\n7.servlet.jar copied."; }
   }
   if (! -f '${AQXML_OC4J_HOME}${SD}aq${SD}xdb.jar') {
    system("cp $ORACLE_HOME${SD}rdbms${SD}jlib/xdb.jar ${AQXML_OC4J_HOME}${SD}aq");
    if ($debug) { print "\n8.xdb.jar copied."; }
   }
   if (! -f '${AQXML_OC4J_HOME}${SD}aq${SD}aqxml.jar') {
    system("cp $ORACLE_HOME${SD}rdbms${SD}jlib/aqxml.jar ${AQXML_OC4J_HOME}${SD}aq");
    if ($debug) { print "\n9.aqxml.jar copied."; }
   }
    system("cp $ORACLE_HOME${SD}jlib${SD}orai18*.jar ${AQXML_OC4J_HOME}${SD}aq");
    if ($debug) { print "\n10.orai18.jar copied."; }
}
    
setupaqxml;

    

sub startaqxml()
{
    print "Starting AQXML instance....\n";
    chdir("$J2EE_HOME");
    #print "$DB_HOST $DB_PORT $DB_SID\n" ;
           #"  ${J2EE_HOME}${SD}lib${SP}".
           #"${ORACLE_HOME}${SD}oc4j${SD}lib${SP}".
           #"${ORACLE_HOME}${SD}oc4j${SD}webservices${SD}lib${SP}".
           #"${ORACLE_HOME}${SD}oc4j${SD}diagnostics${SD}lib${SP}".
           #"${J2EE_HOME}${SP}".
           #"${J2EE_HOME}${SD}oc4j${SD}jdbc${SD}lib${SP}".
           #"${J2EE_HOME}${SD}oc4j${SD}j2ee${SD}home${SP}".
           #"${ORACLE_HOME}${SD}jlib${SD}srvm.jar${SP}".
           #"${J2EE_HOME}${SD}oc4j${SD}lib\"".

    system("$JAVA_HOME${SD}bin${SD}java " . 
           " -DMYDB_HOST=\"$DB_HOST\"" .
           " -DMYDB_PORT=\"$DB_PORT\"" .
           " -DMYDB_SID=\"$DB_SID\"" .
           "  -Doc4j.autoUnpackLockCount=-1".
           " -Djava.ext.dirs=\"${AQXML_OC4J_HOME}${SD}aq\"" .
           " -jar ${J2EE_HOME}${SD}oc4j.jar ".
 " -config ${AQXML_OC4J_HOME}${SD}j2ee${SD}OC4J_AQ${SD}config${SD}server.xml&"
        );

    sleep(10);
    print "AQXML started.\n";
    exit 0;
}


sub deployaqxml 
{
    create_deployini();
    setupaqxml();

    print "Deploying  AQXML instance....\n";
    #system("cp ${ORACLE_HOME}${SD}..${SD}javavm${SD}j2ee${SD}deploytool/db_oc4j_deploy.jar $J2EE_HOME") ;
    chdir("$J2EE_HOME");
    system("$JAVA_HOME${SD}bin${SD}java ". 
           "  -Doc4j.autoUnpackLockCount=-1".
            " -classpath ".
            "${J2EE_HOME}${SD}db_oc4j_deploy.jar${SP}".
            "${ORACLE_HOME}${SD}jlib${SD}srvm.jar${SP}".
            "${J2EE_HOME}${SD}jazn.jar${SP}".
            "${J2EE_HOME}${SD}oc4j.jar".
            " oracle.j2ee.tools.deploy.DbOc4jDeploy".
            " -oraclehome $ORACLE_HOME -password $pwd ".
            " -inifile ${ORACLE_HOME}${SD}rdbms${SD}demo${SD}aqxml.ini"
           ) ;
    print "Deploying  AQXML Completed....\n";
    make_secure();
    print "Deploy Done ....\n";
    sleep(2);
    exit 0;

}
sub create_deployini {
  print "Creating rdbms${SD}demo${SD}aqxml.ini....\n";
  
  $fl = "$ORACLE_HOME${SD}rdbms${SD}demo${SD}aqxml.ini";
   system("rm $fl" ) ;
   system("echo '[component]' >$fl" ) ;
   system("echo 'CMP_NAME=OC4J_AQ' >>$fl" ) ;
   system("echo 'HTTP_PORT=5760'>>$fl" ) ;
   system("echo 'JMS_PORT=5740'>>$fl" ) ;
   system("echo 'RMI_PORT=5720'>>$fl" ) ;
   system("echo 'RMIS_PORT=5710'>>$fl" ) ;
   system("echo 'DISTRIBUTED=false\n\n'>>$fl" ) ;
   system("echo '[application]'>>$fl" ) ;
   system("echo 'CMP_NAME=OC4J_AQ'>>$fl" ) ;
   system("echo 'APP_DEPLOYMENT_NAME=aqxmldemo'>>$fl" ) ;
   system("echo 'APP_LOCATION=$ORACLE_HOME/rdbms/demo/aqxmldemo.ear'>>$fl" ) ;
   system("echo 'WEB_APP_NAME=aqxmldemo_web'>>$fl" ) ;
   system("echo 'CONTEXT_ROOT=/aqserv/servlet\n\n'>>$fl" ) ;
}

sub make_secure {
 print "Secure website ....\n";
$file =
    "${AQXML_OC4J_HOME}${SD}j2ee${SD}OC4J_AQ${SD}config${SD}http-web-site.xml";
$keystorefile= "${ORACLE_HOME}${SD}rdbms${SD}demo${SD}keystore";
  system ("cp $file $file.prot") ;
  open(IN, "< $file.prot");
  open(OUT, ">$file");
  while (<IN>) {
    s!port=!secure="true" port=!;
    s!load-on-startup!max-inactivity-time="200" shared="true" load-on-startup!;
    s!</web-site>!<ssl-config keystore="$keystorefile" keystore-password="$pwd" />\n</web-site>!;
  print OUT;
  }
  close IN ; close OUT;
}

OHA YOOOO