Preface
Purpose
Audience
Organization
Using ABL documentation
References to ABL compiler and run-time features
References to ABL data types
Typographical conventions
Example procedures
Configuring and Deploying Java Open Client Applications
Java Open Client Runtime package
Preparing to generate proxies for a Java client in Windows using ProxyGen or Batch ProxyGen
Preparing to generate proxies for a Java client on UNIX using Batch ProxyGen
Building an Open Client application that uses a Java proxy
Deploying an Open Client application that uses a Java proxy
Sample Java client applications
Proxy Objects and Methods
Introduction
Proxy objects
Package
Proxy methods
Connection methods
Remote ABL methods
Passing parameters
Handling return values
Class factory methods
SubAppObject
ProcObject
SDOResultSet
Common methods
Cancel all requests
Connection ID
Streaming
Procedure return string
Release
Request ID
SSL subject name
Procedure type
Running methods on session-free AppObjects
Session-free threading model
Sharing of the connection pool between session-free AppObjects
Sample proxy
Sample AppObject
Sample SubAppObject
Sample ProcObject
Connecting to an AppServer
Connection class
Client principal class
Attributes of the ClientPrincipal class
Methods of the ClientPrincipal class
Establishing the connection
Returning a user defined string to the client from the AppServer connection procedure
Supported AppServer modes
Releasing a session-free Connection object
Connection states
Passing Parameters
ABL data type mappings
INPUT parameters
Date and time conversions
Arrays as parameters
Unknown value (?) as a parameter
Arrays and Unknown value (?)
INPUT-OUTPUT and OUTPUT parameters
Holder classes
Holder class definitions
Passing temp-tables and ProDataSets
Static and dynamic temp-tables and ProDataSets
ABL mechanisms for passing temp-tables and ProDataSets
Java mechanisms for passing temp-tables and ProDataSets
ProDataGraph mechanism
SQL ResultSets mechanism
Choosing the parameter passing mechanism
Mapping temp-table field data types and meta data
Java data type mappings for temp-table fields
Meta data for specifying the ABL data types of temp-table fields
Accessing ABL ProDataSets
Introducing ABL ProDataSets
ProDataSets and using ProDataGraphs to access them
ProDataSet structure and usage
Abstracting data sources
Tracking changes
ProDataGraph function and foundations
Java SDO Foundations
Java SDO extensions
ProDataGraph object model
Preparing and passing ProDataSets as ProDataGraph parameters
Preparing and managing a ProDataGraph parameter
Parameter passing modes
ProDataGraphHolder class
Managing ProDataObject mappings to temp-tables
Mapping single-valued fields
Mapping array fields
Mapping the Unknown value (?)
Specifying initial values
Passing a ProDataGraph as OUTPUT
Accessing a ProDataGraph with a known schema
Accessing the ProDataGraph meta data for an unknown schema
Passing a ProDataGraph as INPUT or INPUT-OUTPUT
Preparing an input ProDataGraph
Creating and initializing a ProDataGraph object with meta data
Adding data to a ProDataGraph
Updating a ProDataSet
Typical cycle for ProDataSet updates
Managing a ProDataGraph through the update cycle
Checking for errors
ProDataGraph level
Table level
Row level
Finding a row in a ProDataGraph
Finding parent rows
Finding child rows
Adding a row to a ProDataGraph
Deleting a row from a ProDataGraph
Passing temp-tables as ProDataGraph parameters
ProDataGraph class
Constructors
ProDataGraph created from meta data
ProDataGraph created from an initial DataGraph
Inherited methods
getChangeSummary( )
getRootObject( )
Extended methods
acceptChanges( )
addProDataObject( )
createProDataObject( )
getMetaData( )
getNumTables( )
getProChangeSummary( )
getProDataObjects( )
getProDataGraphName( )
getTableNames( )
hasError( )
setChildTableReferences( )
ProDataObject class
Inherited methods
get( )
getBigDecimal( )
getBoolean( )
getBytes( )
getInt( )
getList( )
getLong( )
getString( )
getType( )
isSet( )
set( )
setBigDecimal( )
setBoolean( )
setBytes( )
setInt( )
setList( )
setLong( )
setString( )
Extended methods
getChildRows( )
getFieldCount( )
getGregorianCalendar( )
getParentRow( )
getRowErrorString( )
getTableErrorString( )
getTableName( )
hasRowError( )
hasTableError( )
setGregorianCalendar( )
ProChangeSummary class
Inherited methods
beginLogging( )
endLogging( )
getChangedDataObjects( )
getOldValues( )
isCreated( )
isDeleted( )
Extended method
getChanges( )
ProDataGraphMetaData class
Constructor
Methods
addDataRelation( )
addTable( )
getNumRelations( )
getNumTables( )
getRelationMetaData( )
getTableMetaData( )
getTableNames( )
ProDataObjectMetaData class
Constructor
Methods
getBImageFlag( )
getExtent( )
getFieldCount( )
getFieldName( )
getNoSchemaMarshal( )
getProType( )
getTableName( )
getUserOrder( )
setFieldMetaData( )
setNoSchemaMarshal( )
ProDataRelationMetaData class
Constructors
Creating a data-relation from parent and child ProDataObjectMetaData
Creating a data-relation from selected parent and child key fields
Methods
getChildColumns( )
getChildTable( )
getParentColumns( )
getParentTable( )
getRelationName( )
setColumns( )
Using Java SDO classes to access Property meta data
Type interface
Methods
Property interface
Methods
Sample application
Extending Proxy Objects
Example of extending proxy objects
Accessing Proxy Properties
Introducing proxy properties
Setting properties on the command line
RunTimeProperties and Connection classes
RunTimeProperties class
Connection class
Accessing properties with methods
General property accessor methods for the RunTimeProperties class
Get property methods syntax
Set property methods syntax
General property accessor methods for Connection objects
Get property methods
Set property methods
Available properties
Accessing properties using purposed accessor methods
Session methods
Thread control methods
Proxy server specification methods
Secure Sockets Layer management methods
Tracing methods (RunTimeProperties only)
Compression methods
Relationship between the RunTimeProperties class and the Connection class
Modifying an instantiated Connection object's properties
Alphabetical listing of properties
PROGRESS.Session.AppServerKeepalive
PROGRESS.Session.certificateStore
PROGRESS.Session.clientPrincipal
PROGRESS.Session.connectionLifetime
PROGRESS.Session.connectionTimeout
PROGRESS.Session.enableTracing
PROGRESS.Session.idleConnectionTimeout
PROGRESS.Session.initialConnections
PROGRESS.Session.logFileName
PROGRESS.Session.loggingLevel
PROGRESS.Session.maxConnections
PROGRESS.Session.minConnections
PROGRESS.Session.noHostVerify
PROGRESS.Session.noSslSessionReuse
PROGRESS.Session.nsClientMaxPort
PROGRESS.Session.nsClientMinPort
PROGRESS.Session.nsClientPicklistExpiration
PROGRESS.Session.nsClientPicklistSize
PROGRESS.Session.nsClientPortRetry
PROGRESS.Session.nsClientPortRetryInterval
PROGRESS.Session.proxyHost
PROGRESS.Session.proxyPassword
PROGRESS.Session.proxyPort
PROGRESS.Session.proxyUserId
PROGRESS.Session.requestWaitTimeout
PROGRESS.Session.sessionModel
PROGRESS.Session.CompressionEnabled
PROGRESS.Session.CompressionLevel
PROGRESS.Session.CompressionThreshold
PROGRESS.Session.waitIfBusy
Handling Errors
Exceptions
General ABL exceptions
Exception class hierarchy
Exception descriptions
Output ResultSet exceptions
Using SmartDataObjects from Java Clients
What is a SmartDataObject?
Accessing remote SmartDataObjects from Java
Requirements for accessing SmartDataObjects
Example Java access to a SmartDataObject
SmartDataObject access tools and documentation
Objects required to access SmartDataObjects
Developing and deploying a SmartDataObject-aware application
Extending a SmartDataObject
Writing a SmartDataObject-aware Java client
Connecting to an AppServer using an SDOAppObject
Creating an SDOResultSet object
The _createSDOResultSet() method
Setting and getting values on the SDOParameters object
Understanding SDOResultSet scrolling modes
Understanding SDOResultSet stateless mode
Working with SDOResultSet objects
Detaching SDOResultSet objects [extension]
Navigating SDOResultSet rows
Getting SDOResultSet column values
Updating SDOResultSet objects
Transactions and concurrency control
Updating column values
Inserting, deleting, and updating rows
Using extended transactions
Using batch mode [extension]
Visibility of updates
Miscellaneous management methods
Standard JDBC 2 management methods
SmartDataObject management methods [extension]
Note on SDOInterface method
Meta data methods
JDBC 2 meta data methods
Nonstandard meta data methods [extension]
Multi-threading
Errors and exceptions
SDOResultSet exceptions
Typical errors by method category
Choosing JDBC ResultSets or SDOResultSets to access OpenEdge data
Accessing the sample application
Using the Open Client Java OpenAPI to Directly Access the AppServer
Overview of Java OpenAPI classes
Connecting to the AppServer
Running procedures and user-defined functions
Running a non-persistent procedure on an OpenAppObject
Running a persistent procedure (OpenProcObject) on an OpenAppObject
Running a single-run or singleton procedure (OpenProcObject) on an OpenAppObject
Running an internal procedure or user-defined function on an OpenProcObject
Setting up parameters
Creating variables for parameters
Creating a parameter array
Adding parameters using data type-specific methods
General syntax for add parameter methods
Syntax summaries of all data type-specific add parameter methods
CHARACTER
COM-HANDLE
DATASET and DATASET-HANDLE
DATE
DATETIME
DATETIME-TZ
DECIMAL
HANDLE
INT64
INTEGER
LOGICAL
LONGCHAR
MEMPTR
RAW
RECID
ROWID
TABLE and TABLE-HANDLE
Adding parameters using a generic method
Defining the return type for a user-defined function
Arrays as return values
setIsReturnExtent( ) method
Handling unknown values in arrays.
setIsReturnUnknown( ) method
Defining the schema for a temp-table parameter mapped to a java.sql.ResultSet
Defining a ProResultSetMetaDataImpl object
Adding field descriptions to the ProResultSetMetaDataImpl object
Adding the ProResultSetMetaDataImpl object as a temp-table parameter
Defining the schema for a ProDataSet parameter
Defining a ProDataGraphMetaData object
Defining the temp-tables for the ProDataGraphMetaData object
Defining the data-relations for the ProDataGraphMetaData object
Define a ProDataGraph for any input parameter
Specifying the ProDataGraphMetaData object for a ProDataSet parameter
Defining the schema for temp-tables in a ProDataSet
Defining a ProDataObjectMetaData object
Adding field descriptions to the ProDataObjectMetaData object
Adding the ProDataObjectMetaData object to the ProDataGraphMetaData
Defining the schema for a temp-table parameter mapped to a ProDataGraph
Passing parameters
Passing INPUT parameters
Passing INPUT-OUTPUT parameters
Passing OUTPUT parameters
Handling returned values
Getting OUTPUT parameter values
Accessing RETURN-VALUE function output from procedures
Accessing user-defined function return values
Sample Java OpenAPI code
Non-persistent procedure example
Persistent procedure example
Single-run/singleton procedure example
Accessing a SmartDataObject API Directly
Introduction
Directly accessing the SmartDataObject API in a proxy
Defining a ProcObject that maps a SmartDataObject
Java Open Client Certificate Management Utility
Overview
Managing certificate store files
Converting digital certificates
Passing Temp-tables as SQL ResultSet Parameters
Introduction
Preparing and managing temp-table parameters
Data type mapping for temp-table fields
Accessing temp-table array fields
Using the flat model
Using the array model
SQL ResultSet streaming and call-back sequence
INPUT ResultSet objects
OUTPUT ResultSet objects
Order of access for OUTPUT ResultSet objects
Closing OUTPUT ResultSet objects
Result set schemas
Passing a TABLE or TABLE-HANDLE as an INPUT parameter
Instantiating the INPUT parameter
Using com.progress.open4gl.InputResultSet
Providing metadata for INPUT TABLE-HANDLE parameters
ProResultSetMetaDataImpl class
Passing a TABLE or TABLE-HANDLE as an OUTPUT parameter
Accessing TABLE or TABLE-HANDLE parameters as OUTPUT
Standard methods in the ProResultSet interface
ProResultSet interface extensions to java.sql.ResultSet
Temp-table field data type conversion
Getting meta data for OUTPUT TABLE and TABLE-HANDLE parameters
Standard methods in the ProResultSetMetaData class
ProResultSetMetaData class extension to java.sql.ResultSetMetaData
Passing a TABLE or TABLE-HANDLE as an INPUT-OUTPUT parameter
Example Java client passing an SQL ResultSet parameter
Preface
Example Java client passing an SQL ResultSet parameter