Preface
Purpose
Audience
Organization
Using ABL documentation
References to ABL compiler and run-time features
References to ABL data types
Typographical conventions
Examples of syntax descriptions
Long syntax descriptions split across lines
Complex syntax descriptions with both required and optional elements
Example procedures
OpenEdge messages
Obtaining more information about OpenEdge messages
OpenEdge Applications in the Sonic Environment
Sonic messaging and integration systems
SonicMQ
Sonic ESB
OpenEdge Adapters for Sonic integration
OpenEdge Adapter for SonicMQ
OpenEdge Adapter for SonicMQ configuration and management
OpenEdge Adapter for SonicMQ operation
License availability
OpenEdge Adapter for Sonic ESB
OpenEdge Adapter for Sonic ESB configuration and management
Security considerations
BrokerConnect security
OpenEdge Adapter for Sonic ESB security
Where to find detailed information
OpenEdge Adapter for SonicMQ documentation
OpenEdge Adapter for SonicESB documentation
OpenEdge Adapter for generic JMS-compliant messaging system
Prerequisites
Understanding the OpenEdge Adapters
Unified domain for JMS sessions
Exchanging messages
Understanding ABL - JMS object model
Session objects
Message Consumer objects
Message objects
Working with the OpenEdge Adapter for SonicMQ
Accessing the OpenEdge Adapter for SonicMQ
Working with the Generic JMS Adapter
Configuring and administering the Generic JMS Adapter
Editing the jmsProvider.properties file
Setting your JMS Provider for Generic Adapter Broker
Updating the classpath for your JMS Provider
Configuring the Connection Factory
Using JNDI administered objects
Configuring BrokerConnect
Non-supported API methods for Generic JMS Adapter
Introduction to messaging
Point-to-Point (PTP) messaging
Sending and receiving messages
PTP messaging options and features
Building scalable server architecture with PTP queuing
Publish-and-Subscribe messaging
Sending and receiving messages
Pub/Sub messaging options and features
Integrating with the native ABL publish-and-subscribe mechanism
Comparing PTP and Pub/Sub messaging
Messages and message types
Understanding the Messaging Models
Using PTP messaging
Creating a session procedure and connecting to a SonicMQ Broker
Sending messages to a PTP queue
Receiving messages from a PTP queue
Receiving a reply
Temporary queues
Deleting objects
Methods unique to Point-to-Point messaging
Using PUB/SUB messaging
Creating a session procedure and connecting to a SonicMQ Broker
Publishing a message to a Pub/Sub topic
Subscribing to a Pub/Sub topic and receiving messages
Receiving a reply
Durable subscriptions
Temporary topic
Deleting objects
Methods unique to Pub/Sub messaging
Implementing Messaging
Managing connections and sessions
Creating a JMS session
Creating multiple sessions
Deleting a JMS session
Connection options
Managing fail-over support
Setting and getting JMS connection and session attributes
Connecting to the OpenEdge Adapter for SonicMQ
Load balancing
Client persistence
Storing undeliverable messages
Fault tolerance
Replicated SonicMQ Brokers
Establishing session control
Accessing message delivery parameters
Setting the maximum number of messages
Discardable messages
Request/Reply
Message selectors
Externally managed connections
Using serialized connection objects
Connection file parameters
Creating serialized connection objects
Finding administered objects in JNDI or proprietary directories
Using the OpenEdge Adapter for the SonicMQ and the ABL - JMS API with administered objects
jmsfrom4gl.AdminObjectFinder class
Setting the CLASSPATH
Working with messages
Message life cycle
Managing the sending life cycle of an ABL - JMS message
Managing the receiving life cycle of an ABL - JMS message
Creating, populating, and accessing messages
TextMessage
HeaderMessage
MapMessage
StreamMessage
BytesMessage
MultipartMessage
XMLMessage
DataSetMessage
TempTableMessage
Java Object messages
Message size limits
Storing and extracting data
Read-only and write-only modes
clearBody and clearProperties
Sending messages to a queue
Publishing messages to a topic
Clearing messages
Deleting messages
Accessing message header properties
Accessing message properties
Consuming messages
Creating a Message Consumer object
Creating a message handler process
Accessing message handler information
Setting reply properties
Receiving messages from a queue
Queue browsing
Subscribing to a topic
Durable subscriptions
Terminating the Message Consumer object
Processing messages
Controlling flow of messages
Reusing messages
Message-reception issues
Stopping and starting message reception
Message Consumer scope
OpenEdge run-time message-processing states
Synchronous message reception
Reply mechanisms
Transaction and recovery procedures
Transacted session
Transacted sending
Transacted receiving
Illegal calls: recover and setNoAcknowledge
ABL transactions and JMS transacted sessions
Message acknowledgement, forwarding, and recovery
Automatic message acknowledgement
Preventing message acknowledgement
Single-message acknowledgement
Message recovery
Example
Error and condition handling
Handling errors
Synchronously reported errors and conditions
Asynchronously reported conditions
Run-time conditions
Connection and communication failures
Message handler errors and conditions
Interrupts
OpenEdge Adapter for SonicMQ failure
Programming for the OpenEdge Adapter for SonicMQ with the ABL - JMS API
PTP message example
Creating a PTP session procedure
Connecting to the broker
Creating a Message Consumer
Preparing to receive messages
Sending messages to the queue
Receiving messages from the queue
Deleting a message
Summary
Pub/Sub messaging example
Creating a Pub/Sub session procedure
Connecting to the broker
Creating a Message Subscriber
Subscribing to a topic
Publishing to a topic
Consuming messages from a topic
Deleting messages
Summary
Programming scenarios
Using JMS 1.1 unified domain model
Using ServerConnect and ClientConnect
Client persistence
Enhanced XML support
TempTableMessage
DataSetMessage
Fault tolerance
Example of setting up fault tolerance
Example of a "ChangeState" handler (optional)
Guidelines for Using and Programming for the OpenEdge Adapter for Sonic ESB
Native Invocation methodology
Creating an invocation file
Declarative invocation files
Annotation syntax
Annotation examples
Annotating ABL in OpenEdge Architect
Annotating multiple source files at once
Adding annotations from the Outline view
Generating .esboe files
Non-declarative invocation files
Import Native Invocation files into Sonic Workbench
ABL parameter naming
Internal procedure invocation
ESB Process and session-managed OpenEdge Application Servers
ABL file drag and drop
Drag and drop execution
ESB process details
ABL file requirements
Testing an ESB Process containing OpenEdge Native Invocation Services
ESBOEGEN
Configuring OpenEdge Architect for ESB annotations
Default ESB Annotations
Generating ESB invocation files
Web Services Invocation methodology
Differences between the Web Services Invocation methodology in the OpenEdge Adapter for Sonic ESB and the WSA
Service deployment and management
WSM and WSD file usage
Storage of property information
WSDL file generation
Service definition considerations
Session models
Sonic message handling run-time parameters
ABL - JMS API Reference
Session objects
jmssession.p
ptpsession.p
pubsubsession.p
Methods in the Session objects
Methods in the Message Consumer objects
Methods in the Message objects
acknowledgeAndForward procedure
addBytesPart procedure
addMessagePart procedure
addTextPart procedure
appendText procedure
beginSession procedure
browseQueue procedure
cancelDurableSubscription procedure
clearBody procedure
clearProperties procedure
commitReceive procedure
commitSend procedure
createBytesMessage procedure
createChangeStateConsumer procedure
createDataSetMessage procedure
createHeaderMessage procedure
createMapMessage procedure
createMessageConsumer procedure
createMultipartMessage procedure
createRejectedMessageConsumer procedure
createStreamMessage procedure
createTemporaryQueue procedure
createTemporaryTopic procedure
createTempTableMessage procedure
createTextMessage procedure
createXMLMessage procedure
deleteConsumer procedure
deleteMessage procedure
deleteSaxWriter procedure
deleteSession procedure
deleteTemporaryQueue procedure
deleteTemporaryTopic procedure
endOfStream function
getAdapterService function
getApplicationContext function
getBrokerURL function
getBytesCount function
getBytesPartByID function
getBytesPartByIndex function
getBytesToRaw function
getChar function
getCharCount function
getCharProperty function
getClientID function
getClientPersistence function
getClientTransactionBufferSize function
getConnectID function
getConnectionID function
getConnectionMetaData function
getConnectionURLs function
getContentType
getDataSet function
getDate function
getDateProperty function
getDateTime function
getDateTimeProperty function
getDateTime-TZ function
getDateTimeTzProperty function
getDecimal function
getDecimalProperty function
getDefaultPersistency function
getDefaultPriority function
getDefaultTimeToLive function
getDestinationName function
getFaultTolerant function
getFaultTolerantReconnectTimeout function
getFlowToDisk function
getInt function
getIntProperty function
getInt64 function
getInt64Property function
getInitialConnectionTimeout function
getItemType function
getJMSCorrelationID function
getJMSCorrelationIDAsBytes function
getJMSDeliveryMode function
getJMSDestination function
getJMSExpiration function
getJMSMessageID function
getJMSPriority function
getJMSRedelivered function
getJMSReplyTo function
getJMSServerName function
getJMSTimestamp function
getJMSType function
getLoadBalancing function
getLocalStoreDirectory function
getLocalStoreSize function
getLocalStoreWaitTime function
getLogical function
getLogicalProperty function
getLongString function
getLongStringCP function
getLongText function
getLongTextCP function
getMapNames function
getMemptr function
getMessagePartByID function
getMessagePartByIndex function
getMessageType function
getNoAcknowledge function
getPartCount function
getPassword
getProcHandle function
getProcName function
getPropertyNames function
getPropertyType function
getReconnectInterval function
getReconnectTimeout function
getReplyAutoDelete function
getReplyPersistency function
getReplyPriority function
getReplyTimeToLive function
getReplyToDestinationType function
getReuseMessage function
getSaxWriter function
getSession function
getSelectorAtBroker function
getSequential function
getShutdownWaitFor function
getSingleMessageAcknowledgement function
getTempTable function
getText function
getTextPartByID function
getTextPartByIndex function
getTextSegment function
getTransactedReceive function
getTransactedSend function
getUser function
getX-Document function
hasReplyTo function
inErrorHandling function
inMessageHandling function
inQueueBrowsing function
inReplyHandling function
isFaultTolerant function
isMessagePart function
JMS-MAXIMUM-MESSAGES global variable
messageHandler procedure
moveToNext procedure
publish procedure
readBytesToRaw procedure
readChar function
readDate function
readDateTime function
readDateTime-TZ function
readDecimal function
readInt function
readInt64 function
readLogical function
readLongString function
readLongStringCP function
receiveFromQueue procedure
recover procedure
requestReply procedure
reset procedure
rollbackReceive procedure
rollbackSend procedure
sendToQueue procedure
setAdapterService procedure
setApplicationContext procedure
setBoolean procedure
setBooleanProperty procedure
setBrokerURL procedure
setByte procedure
setByteProperty procedure
setBytesFromRaw procedure
setChar procedure
setClientID procedure
setClientPersistence procedure
setClientTransactionBufferSize procedure
setConnectID procedure
setConnectionFile procedure
setConnectionURLs procedure
setDataSet procedure
setDate procedure
setDateProperty procedure
setDateTime procedure
setDateTimeProperty procedure
setDateTime-TZ procedure
setDateTimeTzProperty procedure
setDefaultPersistency procedure
setDefaultPriority procedure
setDefaultTimeToLive procedure
setDouble procedure
setDoubleProperty procedure
setErrorHandler procedure
setFaultTolerant procedure
setFaultTolerantReconnectTimeout procedure
setFloat procedure
setFloatProperty procedure
setFlowToDisk procedure
setInt procedure
setIntProperty procedure
setInt64 procedure
setInt64Property procedure
setInitialConnectionTimeout procedure
setJMSCorrelationID procedure
setJMSCorrelationIDAsBytes procedure
setJMSReplyTo procedure
setJMSServerName procedure
setJMSType procedure
setLoadBalancing procedure
setLocalStoreDirectory procedure
setLocalStoreSize procedure
setLocalStoreWaitTime procedure
setLong procedure
setLongProperty procedure
setLongString procedure
setLongText procedure
setMemptr procedure
setNoAcknowledge procedure
setNoErrorDisplay procedure
setPassword procedure
setPingInterval procedure
setPrefetchCount procedure
setPrefetchThreshold procedure
setReconnectInterval procedure
setReconnectTimeout procedure
setReplyAutoDelete procedure
setReplyPersistency procedure
setReplyPriority procedure
setReplyTimeToLive procedure
setReplyToDestinationType procedure
setReuseMessage procedure
setSaxReader procedure
setSelectorAtBroker procedure
setSequential procedure
setShort procedure
setShortProperty procedure
setShutdownWaitFor procedure
setSingleMessageAcknowledgement procedure
setString procedure
setStringProperty procedure
setTempTable procedure
setText procedure
setTransactedReceive procedure
setTransactedSend procedure
setUser procedure
setX-Document procedure
startReceiveMessages procedure
stopReceiveMessages procedure
subscribe procedure
waitForMessages procedure
writeBoolean procedure
writeByte procedure
writeBytesFromRaw procedure
writeChar procedure
writeDate procedure
writeDateTime procedure
writeDateTime-TZ procedure
writeDouble procedure
writeFloat procedure
writeInt procedure
writeInt64 procedure
writeLong procedure
writeLongString procedure
writeShort procedure
writeString procedure
Messaging Examples
Pub/Sub messaging examples
Publishing and subscribing with a TextMessage
Publishing with message properties and subscribing selectively
Publishing with a reply handle, subscribing, and receiving an automatic reply
Publishing, receiving, and processing a StreamMessage
Publishing, receiving, and parsing an XMLMessage
Publishing, subscribing, and receiving an XML document in a BytesMessage
XML code page encoding
Code page example 1
Code page example 2
Publishing, subscribing, and receiving the customer table in a StreamMessage
Publishing and receiving a group of messages in a transaction
Installing an error handler to handle an asynchronous error
Installing an error handler for synchronous errors
PTP messaging examples
Sending a message to a queue and receiving a message from a queue
Achieving scalable server architecture with PTP queuing
MultiPartMessage example
Gateway sample application
Application files
Running the sample application
Sample Native Invocation ESB process
Develop ABL source
Configure OpenEdge servers
Annotate source with OpenEdge Architect
Build Native Invocation and r-code files
Create ESB process in Sonic Workbench
Test ESB process
Preface
Test ESB process