##################################################################### # launchJava.py (Jython) # # Launches the PrintEnvComponent, sets the parameters to the # System properties set by the run.sh script, and calls write. # # Example code by Albert L. Rossi, IU Extreme! Computing # December 2001 ##################################################################### import sys import cca from java.lang import * from jarray import * machine = "k2.extreme.indiana.edu" print "\ncreating component wrapper\n" xmlpath = "../xml/printEnv.xml" componentProxy = cca.createComponent (xmlpath) print "\ninstantiating component on", machine, "\n" cca.setMachineName (componentProxy, machine) cca.setCreationMechanism (componentProxy, "gram") cca.createInstance (componentProxy) usesPortClassName = "demo.UsesParamControl" usesPortType = "http://www.extreme.indiana.edu/demo/wsdl#control" providesPortName = "controlProvidesPort" ########################################################### ## The array nesting here reflects the following semantics: ## invokeMethodOnComponent takes an array of Objects ## representing the parameters of the method, in this case ## "sendParameter"; this is itself just a single array of ## Objects, which in turn represents the arguments of ## the method to be called by "sendParameter": that is, ## in this instance, the component's "init", which again ## takes a single argument, an array of Strings. ########################################################### methodName = "sendParameter" methodParams = zeros(1, Object) #invokeMethodOnComponent methodParams[0] = zeros(1, Object) #sendParameter args = zeros(4, String) #component's init args[0] = String("HOME") args[1] = String("log") args[2] = String("java.compiler") args[3] = String("PYTHONPATH") methodParams[0][0] = args print "\ninitializing component\n" cca.invokeMethodOnComponent(componentProxy, usesPortClassName, usesPortType, providesPortName, methodName, methodParams) usesPortClassName = "demo.UsesPrintEnv" usesPortType = "http://www.extreme.indiana.edu/demo/wsdl#provides" providesPortName = "printEnvProvidesPort" methodName = "write" methodParams = zeros(0, Object) print "\ncalling write\n" cca.invokeMethodOnComponent(componentProxy, usesPortClassName, usesPortType, providesPortName, methodName, methodParams) usesPortClassName = "demo.UsesParamControl" usesPortType = "http://www.extreme.indiana.edu/demo/wsdl#control" providesPortName = "controlProvidesPort" methodName = "kill" methodParams = zeros(0, Object) print "\nkilling component\n" cca.invokeMethodOnComponent(componentProxy, usesPortClassName, usesPortType, providesPortName, methodName, methodParams) print "\ndone" ## comment this out if you are running from a portal System.exit(0)