Welcome, guest | Sign In | My Account | Store | Cart
@echo off

setlocal

echo ###################################################
echo # Start Cloudscape Server on %computername%
echo ###################################################

set derbyDir=D:\CloudscapeDatabases
set traceDir=D:\CloudscapeDatabases\trace

set CLASSPATH=%CLASSPATH%;d:\IBM\Cloudscape_10.1\lib\derby.jar
set CLASSPATH=%CLASSPATH%;d:\IBM\Cloudscape_10.1\lib\derbyclient.jar
set CLASSPATH=%CLASSPATH%;d:\IBM\Cloudscape_10.1\lib\derbynet.jar
set CLASSPATH=%CLASSPATH%;d:\IBM\Cloudscape_10.1\lib\derbytools.jar

D:\scripts\TCL\JACL\cloudscape\startNetworkServer.tcl %derbyDir% %traceDir%

endlocal

=====================================================================

# 
# start cloudscape network server 

####################################################################
# Patrick Finnegan 17/11/2005.  V1. 
####################################################################

puts "\n **** executing [info script] **** \n"

# make script drive independent.

set drive [lindex [file split [info script]] 0 ] 

puts "\n proclib = $drive/scripts/TCL/proclib"

source $drive/scripts/TCL/proclib/checkFile_proc.tcl
source $drive/scripts/TCL/proclib/smtp_proc.tcl
source $drive/scripts/TCL/proclib/reportHeader_proc.tcl

####################################################################
# Get Cloudscape connection.
####################################################################
proc startServer { traceFile } {

   puts "\n**********"
   puts "startServer"
   puts "**********\n"

   global env 
   global null

   # import required classes 

   java::import java.net.InetAddress
   java::import org.apache.derby.drda.NetworkServerControl

   puts "\nimported classes are:\n"
   
   foreach i [java::import] {
       
      puts [ format "%-5s %-50s" " " $i ] 

   }

   if { [ catch { java::new NetworkServerControl } r ] == 0 } {
   
        set NetworkServerControl $r 

   } else {

        puts $r 
        return -code error

   }

   puts "\nNetworkServerControl start\n" 

   if { [ catch { $NetworkServerControl start $null } r ] == 0 } {

          puts  $r 
          puts  $traceFile $r 
          flush $traceFile 

   } else {

          puts "\n$r\n"
          puts $traceFile "\n$r\n"
          flush $traceFile 
          return -code error

   } 

   flush $traceFile 

   java::lock $NetworkServerControl

   return $NetworkServerControl

}
####################################################################
# Get Cloudscape server info.
####################################################################
proc serverInfo { traceFile NetworkServerControl } {

   puts "\n**********"
   puts "serverInfo"
   puts "**********\n"

   global env
   global null

   set hostName [ lindex [ array get env COMPUTERNAME ] 1 ]
   set hostAddress [ java::call InetAddress getByName "0.0.0.0" ]

   puts "\nNetworkServerControl ping\n" 

   if { [ catch { $NetworkServerControl ping } r ] == 0 } {

          puts  $r 
          puts  $traceFile $r 
          flush $traceFile 

   } else {

          puts "\n$r\n"
          puts $traceFile "\n$r\n"
          flush $traceFile 
          return -code error

   } 

   puts "\nNetworkServerControl getSysinfo\n" 

   if { [ catch { $NetworkServerControl getSysinfo } r ] == 0 } {

       puts  $r 
       puts  $traceFile $r 
       flush $traceFile 

   } else {

       puts "\n$r\n"
       puts $traceFile "\n$r\n"
       flush $traceFile 
       return -code error

   }

   puts "\nNetworkServerControl getRuntimeInfo\n" 

   if { [ catch { $NetworkServerControl getRuntimeInfo } r ] == 0 } {

       puts  $r 
       puts  $traceFile $r 
       flush $traceFile 

   } else {

       puts "\n$r\n"
       puts $traceFile "\n$r\n"
       flush $traceFile 
       return -code error

   }

   flush $traceFile 

}
####################################################################
# Ping Cloudscape Server.
####################################################################
proc pingServer { traceFile NetworkServerControl } {

   puts "\n**********"
   puts "pingServer"
   puts "**********\n"

   global null

   flush $traceFile 

   while {1} {

       after 30000
      
       puts "\n ping the server \n"

       if { [ catch { $NetworkServerControl ping } r ] == 0 } {

	   set s "[ clock format [ clock seconds ] ] NetworkServerControl ping ok "
	   puts  $s 
	   puts  $traceFile $s 
           flush $traceFile 

       } else {

	   puts "\n$r\n"
	   puts $traceFile "\n$r\n"
           flush $traceFile 
	   return -code error

       }

   flush $traceFile 

   }

}
####################################################################
# Main Control.
####################################################################

puts "\n argc = $argc \n"

if {$argc < 2} {

        return -code error "\nerror - not enough arguments supplied.\nSupply Derby dir and trace directory.\n"

}

set computerName  $::env(COMPUTERNAME)

set derbyDir      [ lindex $argv 0 ]
set traceDir      [ lindex $argv 1 ]
set traceFile     [ file join $traceDir traceFile\.txt ]
set traceFileId   [ open $traceFile  w ]

set body         $traceFile

checkFile $traceDir

set header   "$computerName: start Cloudscape Server"
reportHeader $traceFileId $header $traceFile

set computerTime [clock format [clock seconds] -format "%d-%m-%Y %H.%M.%S"]

puts "tracefile = $traceFile" 

# set database properties.

lappend optList "-Dderby.drda.host=$computerName"
# if configured to listen on the loopback address then will only accept connections from  local host. 
#lappend optList "-Dderby.drda.host=0.0.0.0"
lappend optList "-Dderby.drda.keepAlive=true"
lappend optList "-Dderby.infolog.append=true"
lappend optList "-Dderby.drda.logConnections=true"
lappend optList "-Dderby.drda.maxThreads=50"
lappend optList "-Dderby.drda.minThreads=10"
lappend optList "-Dderby.drda.portNumber=1527"
# start programatically rather then from property.
#lappend optList "-Dderby.drda.startNetworkServer=true"
lappend optList "-Dderby.drda.timeslice=2000"
lappend optList "-Dderby.drda.traceAll=true"
lappend optList "-Dderby.drda.traceDirectory=$traceDir"
lappend optList "-Dderby.system.home=$derbyDir"
#lappend optList "-Dderby.stream.error.logSeverityLevel=40000"
lappend optList "-Dderby.locks.monitor=true"
#lappend optList "-Dderby.locks.deadlockTrace=true"

puts "\n java command line options list is:\n"

foreach x $optList {
    puts [ format "%-5s %-50s" " " $x ] 
}

set tclblend_init $optList  

#call java package 

package require java

# build tcl classpath

set null [ java::null ]

if { [ catch { startServer $traceFileId  } r ] == 0 } {

    set NetworkServerControl $r

    if { [ catch { serverInfo $traceFileId $NetworkServerControl } r ] == 0 } {

       flush $traceFileId	
       set subject       "$computerName: Start Cloudscape Server"
       set emailAddress  youremail@you.com
       sendSimpleMessage $emailAddress $subject $body

       if { [ catch { pingServer $traceFileId $NetworkServerControl } r ] == 0 } {

	   set ok true

       }

    } 

} else {

    return

}


set computerTime [clock format [clock seconds] -format "%d-%m-%Y %H.%M.%S"]
puts $traceFileId "\n********* Cloudscape Server stopped at: $computerTime *********\n"
close $traceFileId

set subject       "$computerName: Cloudscape server Stopped."
set emailAddress  yourmail@yourmail.com
sendSimpleMessage $emailAddress $subject $body

History