setJavaVirtualMachine.jacl

### setJavaVirtualMachine.jacl
###
### Set JVM properties for an appserver
###
### Example usage:
###
###   wsadmin.sh -username foo -password bar -f setJavaVirtualMachine.jacl MyCoCell qp8d WC_MyCo
###

proc JavaVirtualMachine {cname nname sname} {

  global AdminConfig
  global AdminControl

  set serverid [$AdminConfig getid /Cell:$cname/Node:$nname/Server:$sname/]

  if {[llength $serverid] == 0} {
      continue
  }

  set tp [$AdminConfig list JavaVirtualMachine $serverid]
  set tpall [$AdminConfig showall $tp ]
  #puts "$tpall"
   
  puts "Modifying JavaVirtualMachine"

  set attr_name [list name com.ibm.websphere.xs.dynacache.grid.name] 
  set attr_value [list value DYNACACHE_REMOTE_MyCo_QT] 
  set attr_required [list required false] 
  set attrs [list $attr_name $attr_value $attr_required] 
  $AdminConfig create Property $tp $attrs 

  set attr_name [list name com.ibm.websphere.xs.CacheConfig.enableCacheReplication] 
  set attr_value [list value true] 
  set attr_required [list required false] 
  set attrs [list $attr_name $attr_value $attr_required] 
  $AdminConfig create Property $tp $attrs 

### Alt syntax
  #$AdminConfig modify $tp {{systemProperties {{name com.ibm.websphere.xs.dynacache.grid.name} {required false} {value DYNACACHE_REMOTE_MyCo_QT}}}}

### Alt syntax for all JVM properties
#  $AdminConfig modify $tp { 
#      {bootClasspath {}} 
#      {classpath {}}
#      {debugArgs -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=7777} 
#      {debugMode false} 
#      {disableJIT false} 
#      {genericJvmArguments "-Xss1m -Xgcpolicy:gencon -Xjit:codetotal=131072 -agentpath:/opt/WAS70/dynatrace-3.5.2/libdtagent.so=name=QT71-LV_MyCoCore,server=t1ad17.myco.com,logpath=/opt/WAS70/AppServer/profiles/MyCo/logs/dynatrace/,loglevel=warning,logstdout=none -Xdump:heap:events=user -verbose:gc,sizes"} 
#      {hprofArguments {}} 
#      {initialHeapSize 1024} 
#      {internalClassAccessMode ALLOW} 
#      {maximumHeapSize 2048} 
#      {runHProf false} 
#      {systemProperties {
#          {{name com.ibm.security.jgss.debug} {required false} {value off}} 
#          {{name com.ibm.security.krb5.Krb5Debug} {required false} {value off}} 
#          {{name com.ibm.websphere.ejbcontainer.FbpkAlwaysReadOnly} {required true} {value true}} 
#          {{name com.ibm.commerce.dynacache.decrypt} {required true} {value false}} 
#          {{name com.ibm.servlet.file.esi.timeOut} {required true} {value 0}} 
#          {{name com.ibm.ws.cache.CacheConfig.htodDelayOffloadEntriesLimit} {required true} {value 100000}} 
#          {{name com.ibm.ws.cache.CacheConfig.disableStoreCookies} {required true} {value ALL}} 
#          {{name com.ibm.ws.cache.CacheConfig.cascadeCachespecProperties} {required true} {value true}} 
#          {{name com.ibm.ws.webservices.searchForAppServer} {required true} {value true}} 
#          {{name com.ibm.ws.cache.CacheConfig.alwaysTriggerCommandInvalidations} {required true} {value true}} 
#          {{name com.ibm.ws.use602RequiredAttrCompatibility} {required true} {value true}} 
#          {{name com.ibm.ws.cache.CacheConfig.filterLRUInvalidation} {required true} {value true}} 
#          {{name com.ibm.ws.cache.CacheConfig.filterTimeOutInvalidation} {required true} {value true}} 
#          {{name com.ibm.ws.cache.CacheConfig.disableTemplateInvalidation} {required true} {value true}} 
#          {{name com.ibm.commerce.scheduler.SchedulerHostName} {required false} {value qp7b.myco.com}} 
#          {{name com.ibm.websphere.xs.dynacache.topology} {required false} {value remote}} 
#          {{name com.ibm.websphere.xs.dynacache.enable_compression} {required false} {value true}} 
#          {{name com.ibm.websphere.xs.dynacache.ignore_value_in_change_event} {required false} {value true}} 
#          {{name com.ibm.websphere.xs.dynacache.disable_recursive_invalidate} {required false} {value true}} 
#          {{name com.ibm.websphere.xs.dynacache.grid.name} {required false} {value DYNACACHE_REMOTE_MyCo_QT}} }} 
#      {verboseModeClass false} 
#      {verboseModeGarbageCollection true} 
#      {verboseModeJNI false} 
#  }

  $AdminConfig save   
  set Sync1 [$AdminControl completeObjectName type=NodeSync,node=$nname,*]
  set xstatus [$AdminControl invoke $Sync1 sync]
  puts $xstatus
  
  if {$xstatus == "false"} {
      puts "Unable to synchronize $cname $nname $sname..."
  }
  
  #puts " "
  #puts " "
  #puts "Here are new settings"
  #  set tp [$AdminConfig list JavaVirtualMachine $serverid]
  #  set tpall [$AdminConfig showall $tp ]
  #  puts "$tpall"

}



### Main
###

if { !($argc == 3) } {
   puts ""
   puts "Usage: wsadmin.sh -username system -password password -f JavaVirtualMachine.jacl cell node server"
} else {
   set xcell         [lindex $argv 0]
   set xnode         [lindex $argv 1]
   set xserver       [lindex $argv 2]
   JavaVirtualMachine $xcell $xnode $xserver
}