User Guide
148 CFML Language Reference
1. Call CFOBJECT to load the class. See Example.
2. Use the init method with appropriate arguments to call a constructor
explicitly. For example:
<CFSET ret = myObj.init(arg1, arg2)>
Calling a public method on the object without first calling the "init" method results in
an implicit call to the default constructor. Arguments and return values can be any
valid Java type (simple, arrays, objects). ColdFusion does the appropriate conversions
when strings are passed as arguments, but not when they are received as return values.
Overloaded methods are supported as long as the number of arguments are different.
Future enhancements will let you use cast functions that will allow method signatures
to be built more accurately.
Calling
EJBs
To create and call all the appropriate EJB objects, use CFOBJECT. The sequence in the
second example assumes that the Weblogic JNDI is used to register and find EJBHome
instances.
Example
of Java
Object
<!----------------------------------------------------------------------
This CFOBJECT call loads the class MyClass but does not create an
instance object. Static methods and fields are accessible after a call to
CFOBJECT.
----------------------------------------------------------------------->
<CFOBJECT
ACTION="CREATE"
TYPE="Java"
CLASS="myClass"
NAME="myObj"
>
Example
of EJB
<!-------------------------------------------------------------
The CFOBJECT tag creates the Weblogic Environment object, which is then
used to get the InitialContext. The context object is used to look up the
EJBHome interface. The call to create() results in getting an instance of
stateless session EJB.
----------------------------------------------------------------------->
<CFOBJECT
ACTION="CREATE"
TYPE="JAVA"
CLASS="weblogic/jndi/Environment"
NAME="wlEnv">
<CFSET ctx = wlEnv.getInitialContext()>
<CFSET ejbHome = ctx.lookup("statelessSession.TraderHome")>
<CFSET trader = ejbHome.Create()>
<CFSET value = trader.shareValue(20, 55.45)>
<CFOUTPUT>
Share value = #value#
</CFOUTPUT>
<CFSET value = trader.remove()>