Beginning in EAServer version 6.0, PowerBuilder NVOs are wrapped as EJBs. Table 5-1 describes the PowerBuilder to EJB datatype mappings, which are applied when an NVO package is wrapped as an EJB module. NVO is a generic term used to describe “custom class user objects,” which inherit directly from the PowerBuilder system type NonVisualObject.
Mappings for datatypes passed by value are valid for in and return parameter modes. Mappings for datatypes passed by reference are valid for out and inout parameter modes.
PowerBuilder type |
EJB parameter type |
---|---|
Blob by value Blob by reference |
byte[] javax.xml.rpc.holders.ByteArrayHolder |
Boolean by value Boolean by reference |
boolean javax.xml.rpc.holders.BooleanHolder |
Byte by value Byte by reference See “Byte datatype”. |
byte javax.xml.rpc.holders.ByteHolder |
Char by value Char by reference |
char – see “Character datatypes”. No mapping exists for Char passed by reference (out and inout parameter modes). |
Date by value Date by reference |
java.util.Calendar javax.xml.rpc.holders.CalendarHolder |
DateTime by value DateTime by reference |
java.util.Calendar javax.xml.rpc.holders.CalendarHolder |
Decimal by value Decimal by reference |
java.math.BigDecimal javax.xml.rpc.holders.BigDecimalHolder |
Double by value Double by reference |
double javax.xml.rpc.holders.DoubleHolder |
Integer by value Integer by reference |
short javax.xml.rpc.holders.ShortHolder For Java client components that communicate with PowerBuilder server components, the numerical range that this datatype supports is -32768 – 32767. |
Long by value Long by reference |
int javax.xml.rpc.holders.IntHolder For Java client components that communicate with PowerBuilder server components, the numerical range that this datatype supports is -2147483648 – 2147483647. |
LongLong by value LongLong by reference |
long javax.xml.rpc.holders.LongHolder |
Real by value Real by reference |
float javax.xml.rpc.holders.FloatHolder |
String by value String by reference |
String javax.xml.rpc.holders.StringHolder |
Time by value Time by reference |
java.util.Calendar javax.xml.rpc.holders.CalendarHolder |
MyModule_MyArray[] or MyArray[] (return type only) |
MyModule.ejb.MyElement[] |
MyModule_MyException or MyException |
MyModule.ejb.MyException |
MyModule_MyComp or MyComp by value MyModule_MyComp or MyComp by reference |
MyModule.ejb.MyComp MyModule.ejb.holders.MyCompHolder |
MyModule_MyStruct or MyStruct by value MyModule_MyStruct or MyStruct by reference |
MyModule.ejb.MyStruct MyModule.ejb.holders.MyStructHolder |
MyModule_MyUnion or MyUnion by value MyModule_MyUnion or MyUnion by reference |
MyModule.ejb.MyUnion MyModule.ejb.holders.MyUnionHolder |
MyModule_MyElement[] or MyElement[] by value MyModule_MyElement[] or MyElement[] by reference |
MyModule.ejb.MyElement[] MyModule.ejb.holders.ArrayOfMyElementHolder |
MyModule_MySequence or MySequence (return type only) |
MyModule.ejb.MyElement[] |
MyModule_MyElement[n] or MyElement[n] by value MyModule_MyElement[n] or MyElement[n] by reference |
MyModule.ejb.MyElement[] MyModule.ejb.holders.MyArrayHolder |
ResultSet by value ResultSet by reference |
java.sql.ResultSet TabularResults.SqlResultSetHolder |
ResultSets by value ResultSets by reference |
java.sql.ResultSet[] TabularResults.SqlResultSetsHolder |
XDT_BooleanValue by value XDT_BooleanValue by reference |
java.lang.Boolean javax.xml.rpc.holders.BooleanWrapperHolder See “XDT datatypes”. |
XDT_CharValue by value XDT_CharValue by reference |
java.lang.Character XDT.CharacterWrapperHolder |
XDT_ByteValue by value XDT_ByteValue by reference |
java.lang.Byte javax.xml.rpc.holders.ByteWrapperHolder |
XDT_ShortValue by value XDT_ShortValue by reference |
java.lang.Short javax.xml.rpc.holders.ShortWrapperHolder |
XDT_IntValue by value XDT_IntValue by reference |
java.lang.Int javax.xml.rpc.holders.IntegerWrapperHolder |
XDT_LongValue by value XDT_LongValue by reference |
java.lang.Long javax.xml.rpc.holders.LongWrapperHolder |
XDT_FloatValue by value XDT_FloatValue by reference |
java.lang.Float javax.xml.rpc.holders.FloatWrapperHolder |
XDT_DoubleValue by value XDT_DoubleValue by reference |
java.lang.Double javax.xml.rpc.holders.DoubleWrapperHolder |
XDT_DecimalValue by value XDT_DecimalValue by reference |
java.math.BigDecimal javax.xml.rpc.holders.BigDecimalHolder |
XDT_IntegerValue by value XDT_IntegerValue by reference |
java.math.BigInteger javax.xml.rpc.holders.BigIntegerHolder |
XDT_DateValue by value XDT_DateValue by reference |
java.util.Calendar javax.xml.rpc.holders.CalendarHolder |
XDT_TimeValue by value XDT_TimeValue by reference |
java.util.Calendar javax.xml.rpc.holders.CalendarHolder |
XDT_DateTimeValue by value XDT_DateTimeValue by reference |
java.util.Calendar javax.xml.rpc.holders.CalendarHolder |
PowerBuilder version 10.5 introduced a Byte datatype. To use the PowerBuilder Char datatype for backward compatibility, run the following command (once) before deployment:
configure idl-octet-to-pb-char
To switch back to using the PowerBuilder Byte datatype, run the following command (once) before deployment:
configure idl-octet-to-pb-byte
Only characters in the ISO 8859-1 character set can be used for in and return parameter modes. To propagate other characters, use the String datatype.
The char and java.lang.Character datatypes have no defined XML schema mappings for EJB Web services, so you cannot use these as a parameter types or structure field types if you intend to expose a component as a Web service. Use the String datatype instead.
For CORBA C++ datatypes, see CORBA IDL to C++ Language Mapping.
Sybase recommends that you use the PowerBuilder DataStore system object with the ResultSet return type, especially for NVOs running in an application server. For improved performance, use NVO instance variables, and create the DataStore and assign the DataObject in your NVO constructor.
To obtain the PowerBuilder XDT_* datatypes to use as PowerBuilder structure field types or component parameter types, use the EAServer Proxy wizard or the Application Server Proxy wizard in the PowerBuilder IDE to generate proxies for the XDT package. Each of the XDT_* datatypes contains a value field and an isNull field. You must set isNull to true if you want to indicate null values.