Invoking a component method

To invoke a method on most component types, you need to execute the PowerScript statements required to perform these operations:

  1. Use the CreateInstance method to create an instance of the component.

  2. Invoke the method.

You use a different technique to invoke EJB component methods. See “Invoking an EJB component method”.

Example 1 This script instantiates a component on the server and invokes a component method. In this example, the CreateInstance method does not specify a package; therefore, EAServer uses the default package specified in the Application property of the Connection object:

// Global variable:
// connection myconnect

uo_customer iuo_customer
string ls_custid
long ll_rc

ls_custid = Trim(sle_custid.text)
ll_rc = myconnect.CreateInstance(iuo_customer)
if ll_rc <> 0 then 
   MessageBox("CreateInstance failed", ll_rc)
   return 999
end if
if iuo_customer.retrieve_balance(ls_custid) != 1 then
    MessageBox("Error", "Retrieve failed!")
end if

Example 2 This script instantiates a component on the server and assigns the object reference to a variable whose datatype is an ancestor of the class for the component. The second argument to the CreateInstance function specifies the class name for the component as well as the EAServer package name:

// Global variable:
// connection myconnect

uo_person lnv_object
string ls_custid
long ll_rc

ls_custid = Trim(sle_custid.text)
ll_rc = myconnect.CreateInstance(lnv_object, &
	"PB_pkg_1/uo_customer")
if ll_rc <> 0 then 
	MessageBox("CreateInstance failed", ll_rc)
return 999
end if
if iuo_customer.retrieve_balance(ls_custid) != 1 then
	MessageBox("Error", "Retrieve failed!")
end if

NoteInvoking a local instance By default, the TransactionServer CreateInstance method invokes the EAServer name service to create proxies. Proxies for remote components might be returned by the name service rather than an instance that is running locally. To guarantee that a locally installed instance is used, specify the component name as “local:package/component”, where package is the package name and component is the component name. The call fails if the component is not installed in the same server.