10.02.2013 Views

Progress Sonic 8.0 ESB Configuration and Management Guide

Progress Sonic 8.0 ESB Configuration and Management Guide

Progress Sonic 8.0 ESB Configuration and Management Guide

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

PROGRESS®<br />

SONIC®<br />

<strong>Sonic</strong> <strong>ESB</strong><br />

<strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong>


<strong>Progress</strong>® <strong>Sonic</strong>® <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong><br />

© 2010 <strong>Progress</strong> Software Corporation <strong>and</strong>/or its subsidiaries or affiliates. All rights reserved.<br />

These materials <strong>and</strong> all <strong>Progress</strong>® software products are copyrighted <strong>and</strong> all rights are reserved by <strong>Progress</strong> Software<br />

Corporation. The information in these materials is subject to change without notice, <strong>and</strong> <strong>Progress</strong> Software Corporation<br />

assumes no responsibility for any errors that may appear therein. The references in these materials to specific platforms<br />

supported are subject to change.<br />

Actional, Apama, Apama (<strong>and</strong> Design), Artix, Business Empowerment, DataDirect (<strong>and</strong> design), DataDirect Connect,<br />

DataDirect Connect64, DataDirect Technologies, DataDirect XML Converters, DataDirect XQuery, DataXtend, Dynamic<br />

Routing Architecture, EdgeXtend, Empowerment Center, Fathom, FUSE Mediation Router, FUSE Message Broker, FUSE<br />

Services Framework, IntelliStream, IONA, IONA (<strong>and</strong> design), Making Software Work Together, Mindreef, ObjectStore,<br />

OpenEdge, Orbix, PeerDirect, POSSENET, Powered by <strong>Progress</strong>, PowerTier, <strong>Progress</strong>, <strong>Progress</strong> DataXtend, <strong>Progress</strong><br />

Dynamics, <strong>Progress</strong> Business Empowerment, <strong>Progress</strong> Empowerment Center, <strong>Progress</strong> Empowerment Program, <strong>Progress</strong><br />

OpenEdge, <strong>Progress</strong> Profiles, <strong>Progress</strong> Results, <strong>Progress</strong> Software Developers Network, <strong>Progress</strong> <strong>Sonic</strong>, ProVision, PS<br />

Select, SequeLink, Shadow, SOAPscope, SOAPStation, <strong>Sonic</strong>, <strong>Sonic</strong> <strong>ESB</strong>, <strong>Sonic</strong>MQ, <strong>Sonic</strong> Orchestration Server,<br />

<strong>Sonic</strong>Synergy, SpeedScript, Stylus Studio, Technical Empowerment, WebSpeed, Xcalia (<strong>and</strong> design), <strong>and</strong> Your Software,<br />

Our Technology-Experience the Connection are registered trademarks of <strong>Progress</strong> Software Corporation or one of its<br />

affiliates or subsidiaries in the U.S. <strong>and</strong>/or other countries. AccelEvent, Apama Dashboard Studio, Apama Event Manager,<br />

Apama Event Modeler, Apama Event Store, Apama Risk Firewall, AppsAlive, AppServer, ASPen, ASP-in-a-Box,<br />

BusinessEdge, Business Making <strong>Progress</strong>, Cache-Forward, DataDirect Spy, DataDirect SupportLink, FUSE, Future Proof,<br />

GVAC, High Performance Integration, ObjectStore Inspector, ObjectStore Performance Expert, OpenAccess, Orbacus,<br />

Pantero, POSSE, ProDataSet, <strong>Progress</strong> ESP Event Manager, <strong>Progress</strong> ESP Event Modeler, <strong>Progress</strong> Event Engine,<br />

<strong>Progress</strong> RFID, <strong>Progress</strong> Software Business Making <strong>Progress</strong>, PSE Pro, Savvion, SectorAlliance, SeeThinkAct, Shadow<br />

z/Services, Shadow z/Direct, Shadow z/Events, Shadow z/Presentation, Shadow Studio, SmartBrowser, SmartComponent,<br />

SmartDataBrowser, SmartDataObjects, SmartDataView, SmartDialog, SmartFolder, SmartFrame, SmartObjects,<br />

SmartPanel, SmartQuery, SmartViewer, SmartWindow, <strong>Sonic</strong> Business Integration Suite, <strong>Sonic</strong> Process Manager, <strong>Sonic</strong><br />

Collaboration Server, <strong>Sonic</strong> Continuous Availability Architecture, <strong>Sonic</strong> Database Service, <strong>Sonic</strong> Workbench, <strong>Sonic</strong> XML<br />

Server, The Brains Behind BAM, WebClient, <strong>and</strong> Who Makes <strong>Progress</strong> are trademarks or service marks of <strong>Progress</strong><br />

Software Corporation <strong>and</strong>/or its subsidiaries or affiliates in the U.S. <strong>and</strong> other countries. Java <strong>and</strong> all Java-based marks are<br />

trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. <strong>and</strong> other countries. Any other trademarks<br />

contained herein are the property of their respective owners.<br />

Third Party Acknowledgements:<br />

<strong>Progress</strong> <strong>Sonic</strong>MQ <strong>and</strong> <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Product Families v<strong>8.0</strong> incorporate Xalan-J v2.4.1 from the Apache<br />

Foundation. Such technology is subject to the following terms <strong>and</strong> conditions: The Apache Software License, Version 1.1<br />

- Copyright (c) 1999-2003 The Apache Software Foundation. All rights reserved. Redistribution <strong>and</strong> use in source <strong>and</strong><br />

binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions<br />

of source code must retain the above copyright notice, this list of conditions <strong>and</strong> the following disclaimer. 2. Redistributions<br />

in binary form must reproduce the above copyright notice, this list of conditions <strong>and</strong> the following disclaimer in the<br />

documentation <strong>and</strong>/or other materials provided with the distribution. 3. The end-user documentation included with the


edistribution, if any, must include the following acknowledgment: "This product includes software developed by the<br />

Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software<br />

itself, if <strong>and</strong> wherever such third-party acknowledgments normally appear. 4. The names "Xalan" <strong>and</strong> "Apache Software<br />

Foundation" must not be used to endorse or promote products derived from this software without prior written permission.<br />

For written permission, please contact apache@apache.org. 5. Products derived from this software may not be called<br />

"Apache", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation.<br />

THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,<br />

BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A<br />

PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION<br />

OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,<br />

OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE<br />

GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER<br />

CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT<br />

(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,<br />

EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions<br />

made by many individuals on behalf of the Apache Software Foundation <strong>and</strong> was originally based on software copyright<br />

© 1999, Lotus Development Corporation., http://www.lotus.com. For more information on the Apache Software<br />

Foundation, please see http://www.apache.org/.<br />

<strong>Progress</strong> <strong>Sonic</strong>MQ <strong>and</strong> <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Product Families v<strong>8.0</strong> incorporate DSTC Xs3P version 1.1 from DSTC Pty<br />

Ltd. PSC will, at Licensee's request, provide copies of the source code for this third party technology, including<br />

modifications, if any, made by PSC. PSC may charge reasonable shipping <strong>and</strong> h<strong>and</strong>ling charges for such distribution.<br />

Licensee may also obtain the source code through http://communities.progress.com/pcom/docs/DOC-16051 by following<br />

the instructions set forth therein. - DSTC Public License. The contents of this file are subject to the DSTC Public License<br />

Version 1.1 (the 'License') (provided herein); you may not use this file except in compliance with the License. Software<br />

distributed under the License is distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, either express<br />

or implied. See the License for the specific language governing rights <strong>and</strong> limitations under the License. The Original Code<br />

is xs3p. The Initial Developer of the Original Code is DSTC. Portions created by DSTC are Copyright © 2001, 2002 DSTC<br />

Pty Ltd. All Rights Reserved.<br />

<strong>Progress</strong> <strong>Sonic</strong>MQ <strong>and</strong> <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Product Families v<strong>8.0</strong> incorporate version 8.9 of the Saxon XSLT <strong>and</strong> XQuery<br />

Processor from Saxonica Limited (http://www.saxonica.com/) which is available from SourceForge<br />

(http://sourceforge.net/projects/saxon/). PSC will, at Licensee's request, provide copies of the source code for this third<br />

party technology, including modifications, if any, made by PSC. PSC may charge reasonable shipping <strong>and</strong> h<strong>and</strong>ling<br />

charges for such distribution. Licensee may also obtain the source code through<br />

http://communities.progress.com/pcom/docs/DOC-16051 by following the instructions set forth therein. - Mozilla Public<br />

License Version 1.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a<br />

copy of the License at http://www.mozilla.org/MPL. Software distributed under the License is distributed on an "AS IS"<br />

basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language<br />

governing rights <strong>and</strong> limitations under the License. The Original Code of Saxon comprises all those components which<br />

are not explicitly attributed to other parties. The Initial Developer of the Original Code is Michael Kay. Until February<br />

2001 Michael Kay was an employee of International Computers Limited (now part of Fujitsu Limited), <strong>and</strong> original code


developed during that time was released under this license by permission from International Computers Limited. From<br />

February 2001 until February 2004 Michael Kay was an employee of Software AG, <strong>and</strong> code developed during that time<br />

was released under this license by permission from Software AG, acting as a "Contributor". Subsequent code has been<br />

developed by Saxonica Limited, of which Michael Kay is a Director, again acting as a "Contributor". A small number of<br />

modules, or enhancements to modules, have been developed by other individuals (either written specially for Saxon, or<br />

incorporated into Saxon having initially been released as part of another open source product). Such contributions are<br />

acknowledged individually in comments attached to the relevant code modules. All Rights Reserved.<br />

<strong>Progress</strong> <strong>Sonic</strong>MQ <strong>and</strong> <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Product Families v<strong>8.0</strong> incorporate Model Object Framework v2. Such<br />

technology is subject to the following terms <strong>and</strong> conditions: The ModelObjects Group Software License, Version 1.0 -<br />

Redistribution <strong>and</strong> use in source <strong>and</strong> binary forms, with or without modification, are permitted provided that the following<br />

conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions <strong>and</strong> the<br />

following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions<br />

<strong>and</strong> the following disclaimer in the documentation <strong>and</strong>/or other materials provided with the distribution. 3. The end-user<br />

documentation included with the redistribution, if any, must include the following acknowledgement: "This product<br />

includes software developed by the ModelObjects Group (http://www.modelobjects.com)." Alternatively, this<br />

acknowledgement may appear in the software itself, if <strong>and</strong> wherever such third-party acknowledgements normally appear.<br />

4. The name "ModelObjects" must not be used to endorse or promote products derived from this software without prior<br />

written permission. For written permission, please contact jacobs@modelobjects.com. 5. Products derived from this<br />

software may not be called "ModelObjects", nor may ModelObjects" appear in thier name, without prior written permission<br />

of the ModelObjects Group. THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED<br />

WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY<br />

AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MODEL<br />

OBJECTS GROUP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,<br />

SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,<br />

PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS<br />

INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,<br />

STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF<br />

THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<br />

<strong>Progress</strong> <strong>Sonic</strong>MQ <strong>and</strong> <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Product Families v<strong>8.0</strong> incorporate OpenSAML Java Distribution v1.0.1. Such<br />

technology is subject to the following terms <strong>and</strong> conditions: The OpenSAML License, Version 1. Copyright (c) 2002 -<br />

University Corporation for Advanced Internet Development, Inc. All rights reserved. Redistribution <strong>and</strong> use in source <strong>and</strong><br />

binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions<br />

of source code must retain the above copyright notice, this list of conditions <strong>and</strong> the following disclaimer. Redistributions<br />

in binary form must reproduce the above copyright notice, this list of conditions <strong>and</strong> the following disclaimer in the<br />

documentation <strong>and</strong>/or other materials provided with the distribution, if any, must include the following acknowledgment:<br />

"This product includes software developed by the University Corporation for Advanced Internet Development<br />

Internet2 Project. Alternately, this acknowledegement may appear in the software itself, if <strong>and</strong><br />

wherever such third-party acknowledgments normally appear. Neither the name of OpenSAML nor the names of its<br />

contributors, nor Internet2, nor the University Corporation for Advanced Internet Development, Inc., nor UCAID may be<br />

used to endorse or promote products derived from this software without specific prior written permission. For written


permission, please contact opensaml@opensaml.org. Products derived from this software may not be called OpenSAML,<br />

Internet2, UCAID, or the University Corporation for Advanced Internet Development, nor may OpenSAML appear in their<br />

name, without prior written permission of the University Corporation for Advanced Internet Development. THIS<br />

SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND WITH ALL<br />

FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED<br />

WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-<br />

INFRINGEMENT ARE DISCLAIMED AND THE ENTIRE RISK OF SATISFACTORY QUALITY,<br />

PERFORMANCE, ACCURACY, AND EFFORT IS WITH LICENSEE. IN NO EVENT SHALL THE COPYRIGHT<br />

OWNER, CONTRIBUTORS OR THE UNIVERSITY CORPORATION FOR ADVANCED INTERNET<br />

DEVELOPMENT, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR<br />

CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE<br />

GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER<br />

CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT<br />

(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,<br />

EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<br />

<strong>Progress</strong> <strong>Sonic</strong>MQ <strong>and</strong> <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Product Families v<strong>8.0</strong> incorporate Colt cern.colt* packages v1.0.3 (ca1420-<br />

20040626). Such technology is subject to the following terms <strong>and</strong> conditions: Packages cern.colt* , cern.jet*, cern.clhep<br />

- Copyright (c) 1999 CERN - European Organization for Nuclear Research. Permission to use, copy, modify, distribute<br />

<strong>and</strong> sell this software <strong>and</strong> its documentation for any purpose is hereby granted without fee, provided that the above<br />

copyright notice appear in all copies <strong>and</strong> that both that copyright notice <strong>and</strong> this permission notice appear in supporting<br />

documentation. CERN makes no representations about the suitability of this software for any purpose. It is provided "as<br />

is" without expressed or implied warranty.<br />

<strong>Progress</strong> <strong>Sonic</strong>MQ <strong>and</strong> <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Product Families v<strong>8.0</strong> incorporate Mozilla Rhino v1.5R3. The contents of this<br />

file are subject to the Netscape Public License Version 1.1 (the "License"); you may not use this file except in compliance<br />

with the License. You may obtain a copy of the License at http://www.mozilla.org/NPL/. Software distributed under the<br />

License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the<br />

License for the specific language governing rights <strong>and</strong> limitations under the License. The Original Code is Mozilla<br />

Communicator client code, released March 31, 1998. The Initial Developer of the Original Code is Netscape<br />

Communications Corporation. Portions created by Netscape are Copyright (C) 1998-1999 Netscape Communications<br />

Corporation. All Rights Reserved. PSC will, at Licensee's request, provide copies of the source code for this third party<br />

technology, including modifications, if any, made by PSC. PSC may charge reasonable shipping <strong>and</strong> h<strong>and</strong>ling charges for<br />

such distribution. Licensee may also obtain the source code through http://communities.progress.com/pcom/docs/DOC-<br />

16051 by following the instructions set forth therein.<br />

<strong>Progress</strong> <strong>Sonic</strong>MQ <strong>and</strong> <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Product Families v<strong>8.0</strong> incorporate NET Security Library v1.0. Such<br />

technologies are subject to the following terms <strong>and</strong> conditions: Copyright © 2002-2003, The KPD-Team All rights<br />

reserved. http://www.mentalis.org/ Redistribution <strong>and</strong> use in source <strong>and</strong> binary forms, with or without modification, are<br />

permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright<br />

notice, this list of conditions <strong>and</strong> the following disclaimer. - Neither the name of the KPD-Team, nor the names of its<br />

contributors may be used to endorse or promote products derived from this software without specific prior written<br />

permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"


AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED<br />

WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN<br />

NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,<br />

INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED<br />

TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR<br />

BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN<br />

CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY<br />

WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<br />

Copyright © 2002-2003, The KPD-Team.<br />

<strong>Progress</strong> <strong>Sonic</strong>MQ <strong>and</strong> <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Product Families v<strong>8.0</strong> incorporate Another Tool for Language Recognition<br />

v2.7.4. Such technologies are subject to the following terms <strong>and</strong> conditions: ANTLR Software License<br />

http://www.antlr.org/rights.html We reserve no legal rights to the ANTLR--it is fully in the public domain. An individual<br />

or company may do whatever they wish with source code distributed with ANTLR or the code generated by ANTLR,<br />

including the incorporation of ANTLR, or its output, into commercial software. We encourage users to develop software<br />

with ANTLR. However, we do ask that credit is given to us for developing ANTLR. By "credit", we mean that if you use<br />

ANTLR or incorporate any source code into one of your programs (commercial product, research project, or otherwise)<br />

that you acknowledge this fact somewhere in the documentation, research report, etc... If you like ANTLR <strong>and</strong> have<br />

developed a nice tool with the output, please mention that you developed it using ANTLR. In addition, we ask that the<br />

headers remain intact in our source code. As long as these guidelines are kept, we expect to continue enhancing this system<br />

<strong>and</strong> expect to make other tools available as they are completed.<br />

March 2010


Contents<br />

Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

About This <strong>Guide</strong>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

Typographical Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

<strong>Progress</strong> <strong>Sonic</strong> Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />

<strong>Sonic</strong> <strong>ESB</strong> Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />

Worldwide Technical Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

Part I: <strong>ESB</strong> <strong>Configuration</strong> Tools <strong>and</strong> Managed Components<br />

19<br />

Chapter 1: Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong><br />

Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />

Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />

<strong>Sonic</strong> <strong>Management</strong> Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />

<strong>ESB</strong> Configured Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

<strong>ESB</strong> Admin Tool <strong>and</strong> Comm<strong>and</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />

Basic Comm<strong>and</strong>s. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36<br />

<strong>Sonic</strong>FS Maintenance Comm<strong>and</strong>s. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />

<strong>ESB</strong> Type Maintenance Comm<strong>and</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39<br />

License Container Comm<strong>and</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

<strong>Management</strong> Container Comm<strong>and</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

Deployment Tool Comm<strong>and</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />

Shutting Down <strong>Sonic</strong> Components <strong>and</strong> <strong>Sonic</strong> <strong>ESB</strong> Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 7


Contents<br />

Chapter 2: <strong>ESB</strong> Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51<br />

Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52<br />

Creating <strong>ESB</strong> Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55<br />

<strong>ESB</strong> Container Intra-container Messaging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58<br />

Viewing or Editing <strong>ESB</strong> Container Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59<br />

Managing the Services Associated with an <strong>ESB</strong> Container . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60<br />

Adding Services or <strong>ESB</strong> Process Entry Points to an <strong>ESB</strong> Container. . . . . . . . . . . . . . . . . . . . .61<br />

Deleting <strong>ESB</strong> ContainerServices from an <strong>ESB</strong> Container . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62<br />

Changing the Number of Listeners on Services in <strong>ESB</strong> Containers . . . . . . . . . . . . . . . . . . . . .63<br />

Deploying an <strong>ESB</strong> Container in a <strong>Management</strong> Container . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63<br />

Setting Test Mode for <strong>ESB</strong> Containers Used in Development. . . . . . . . . . . . . . . . . . . . . . . . . .64<br />

Adding JAR files to an <strong>ESB</strong> Container . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65<br />

Changing the State of <strong>Management</strong> <strong>and</strong> <strong>ESB</strong> Containers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67<br />

Monitoring Service Metrics <strong>and</strong> Notifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71<br />

St<strong>and</strong>ard Metrics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71<br />

St<strong>and</strong>ard Notifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73<br />

Enabling Integration with Actional for Visualization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74<br />

Logging <strong>and</strong> Tracing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76<br />

Using Activation Daemons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79<br />

Creating an Activation Daemon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80<br />

Adding an Activation Daemon to a <strong>Management</strong> Container . . . . . . . . . . . . . . . . . . . . . . . . . . .80<br />

Adding an <strong>ESB</strong> Container to an Activation Daemon’s Activation List . . . . . . . . . . . . . . . . . . .82<br />

Chapter 3: <strong>ESB</strong> Endpoints <strong>and</strong> Connections. . . . . . . . . . . . . . . . . . . . . . . . . . .85<br />

Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86<br />

<strong>ESB</strong> Addresses <strong>and</strong> References to Endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87<br />

Entry Endpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88<br />

Exit Endpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88<br />

Fault Endpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88<br />

Rejected Message Endpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89<br />

Evaluating Endpoint Requirements on JMS Destinations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91<br />

When to Use Topics, When to Use Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92<br />

Multiple Brokers, Clusters, <strong>and</strong> Nodes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95<br />

Configuring <strong>Progress</strong> <strong>Sonic</strong>MQ Endpoints. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97<br />

Deleting <strong>Progress</strong> <strong>Sonic</strong>MQ Endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101<br />

Fault Tolerant Connections <strong>and</strong> Reconnection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101<br />

Inbound <strong>and</strong> Outbound Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102<br />

Fault Tolerant Connections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102<br />

8 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Contents<br />

Quality of Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105<br />

Setting the Ping Interval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106<br />

Configuring Connections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106<br />

Deleting <strong>Progress</strong> <strong>Sonic</strong>MQ Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112<br />

Chapter 4: Configuring Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113<br />

Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114<br />

Configuring WebService Protocols for <strong>ESB</strong> Processes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114<br />

Related <strong>Configuration</strong> Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br />

Part II: Configuring Database Services. . . . . . . . . . . . . . . . . . . . . 117<br />

Chapter 5: Using the Database Service JDBC Drivers . . . . . . . . . . . . . . 119<br />

JDBC Driver Connection Properties <strong>and</strong> the Database Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120<br />

Load Balancing, Failover, <strong>and</strong> Connection Retry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120<br />

Client Load Balancing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122<br />

Connection Failover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123<br />

Connection Retry. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124<br />

Specifying Primary <strong>and</strong> Alternate Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126<br />

Using Activation Daemons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127<br />

Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database<br />

Br<strong>and</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129<br />

<strong>Progress</strong> OpenEdge Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130<br />

<strong>Progress</strong> OpenEdge Connection Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130<br />

<strong>Progress</strong> OpenEdge Connection Failover Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135<br />

Specifying Alternate Servers for the <strong>Progress</strong> OpenEdge Driver . . . . . . . . . . . . . . . . . . . . . . 136<br />

<strong>Progress</strong> OpenEdge Driver Data Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138<br />

DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139<br />

DB2 Driver Connection Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139<br />

DB2 Driver Connection Failover Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152<br />

Specifying Alternate Servers for the DB2 Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152<br />

DB2 Driver Data Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154<br />

Informix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155<br />

Informix Driver Connection Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155<br />

Informix Driver Connection Failover Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163<br />

Specifying Alternate Servers for the Informix Driver. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163<br />

Informix Driver Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 9


Contents<br />

Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166<br />

Oracle Driver Connection Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166<br />

Oracle Driver Connection Failover Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177<br />

Specifying Alternate Servers for the Oracle Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178<br />

Oracle Driver Data Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179<br />

Microsoft SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181<br />

Microsoft SQL Server Driver Connection Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181<br />

Microsoft SQL Server Driver Connection Failover Properties . . . . . . . . . . . . . . . . . . . . . . . .192<br />

Specifying Alternate Servers for the Microsoft SQL Server Driver . . . . . . . . . . . . . . . . . . . .192<br />

Microsoft SQL Server Driver Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .194<br />

Sybase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196<br />

Sybase Driver Connection Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196<br />

Sybase Driver Connection Failover Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206<br />

Specifying Alternate Servers for the Sybase Driver. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206<br />

Sybase Driver Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .208<br />

Chapter 7: SQL Escape Sequences for JDBC. . . . . . . . . . . . . . . . . . . . . . . . .211<br />

Date, Time, <strong>and</strong> Timestamp Escape Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212<br />

Scalar Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212<br />

Outer Join Escape Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219<br />

Procedure Call Escape Sequences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220<br />

Chapter 8: Configuring SQL Server Windows Authentication . . . . . .221<br />

Setting the Authentication Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222<br />

Registering Service Principal Names (SPNs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222<br />

Setting the Active Directory Encryption Property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223<br />

Part III: Configuring <strong>and</strong> Managing BPEL Services . . . . . .225<br />

Chapter 9: Configuring BPEL Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227<br />

Overview of BPEL Service Initialization Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228<br />

Specifying a BPEL Archive (.bpar) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231<br />

Setting Persistence Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232<br />

BPEL Development Container <strong>Configuration</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236<br />

Enabling Audit Trails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236<br />

Audit Trails <strong>and</strong> Persistence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237<br />

Setting a Default Partner Link. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238<br />

Considerations with Dehydrated Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239<br />

10 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Contents<br />

Chapter 10: Managing BPEL Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241<br />

Overview of BPEL Service <strong>and</strong> Process <strong>Management</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242<br />

Clearing Process History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243<br />

Terminating Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244<br />

Searching for Process Instances. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244<br />

Viewing Audit Trails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248<br />

BPEL Profiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250<br />

Part IV: Integrating <strong>Sonic</strong> <strong>and</strong> Actional. . . . . . . . . . . . . . . . . . . . . . 251<br />

Chapter 11: Using Actional with <strong>Sonic</strong> Components. . . . . . . . . . . . . . . . 253<br />

Instrumenting <strong>Sonic</strong> <strong>ESB</strong>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254<br />

Enabling the <strong>ESB</strong> Interceptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256<br />

Using Stabilizers with <strong>Sonic</strong> <strong>ESB</strong>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258<br />

Using <strong>ESB</strong>-Specific Message Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260<br />

Startup Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261<br />

Trust Zones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261<br />

Auditing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261<br />

Instrumenting <strong>Sonic</strong> BPEL Sever . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262<br />

Instrumenting <strong>Sonic</strong>MQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263<br />

Visualization When Both <strong>Sonic</strong>MQ Broker <strong>and</strong> <strong>Sonic</strong> <strong>ESB</strong> are Instrumented. . . . . . . . . . . . . . . . . 265<br />

Specifying the Uplink <strong>Configuration</strong> Location in <strong>Sonic</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266<br />

Chapter 12: Using Actional Trust Zones in <strong>Sonic</strong> <strong>ESB</strong>. . . . . . . . . . . . . . 269<br />

<strong>Progress</strong> Actional Trust Zones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270<br />

Implementing Trust Zones in <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271<br />

Enable Actional Instrumentation in <strong>Sonic</strong> <strong>ESB</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272<br />

Register a Web Service with Actional Intermediary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275<br />

Define Trust Zones on Actional Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280<br />

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 11


Contents<br />

12 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Preface<br />

This Preface contains the following sections:<br />

● “About This <strong>Guide</strong>” describes this manual <strong>and</strong> its intended audience.<br />

● “Typographical Conventions” describes the text formatting, syntax notation, <strong>and</strong><br />

flags used in this manual.<br />

● “<strong>Progress</strong> <strong>Sonic</strong> Documentation” describes the books <strong>and</strong> API online references<br />

packaged with the <strong>Sonic</strong> <strong>ESB</strong> Product Family.<br />

● “Worldwide Technical Support” provides information on how to contact <strong>Progress</strong><br />

Software’s customer support <strong>and</strong> evaluation support for the <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong><br />

Product Family.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 13


Preface<br />

About This <strong>Guide</strong><br />

This guide is intended for system administrators. This book is in three parts:<br />

● Part I, “<strong>ESB</strong> <strong>Configuration</strong> Tools <strong>and</strong> Managed Components,” includes the chapters:<br />

■ Chapter 1, “Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools”<br />

introduces <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>and</strong> its configuration <strong>and</strong> management tools.<br />

■ Chapter 2, “<strong>ESB</strong> Containers” describes <strong>ESB</strong> Containers <strong>and</strong> Activation<br />

Daemons.<br />

■ Chapter 3, “<strong>ESB</strong> Endpoints <strong>and</strong> Connections” describes how to use <strong>ESB</strong><br />

components <strong>and</strong> resources.<br />

■ Chapter 4, “Configuring Web Services” describes using Web Service st<strong>and</strong>ards in<br />

the configuration <strong>and</strong> management of <strong>ESB</strong> components <strong>and</strong> resources.<br />

● Part II, “Configuring Database Services,” includes the chapters:<br />

■ Chapter 5, “Using the Database Service JDBC Drivers,” explains how to<br />

configure load balancing, failover, <strong>and</strong> connection retry for connections made<br />

using the drivers.<br />

■ Chapter 6, “Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong>,”<br />

describes the properties <strong>and</strong> data types for several database br<strong>and</strong>s: <strong>Progress</strong><br />

OpenEdge, DB2, Informix, Oracle, Microsft SQL Server, <strong>and</strong> Sybase.<br />

■ Chapter 7, “SQL Escape Sequences for JDBC,” describes the JDBC-defined<br />

escape sequences containing st<strong>and</strong>ard syntaxes for several language features.<br />

■ Chapter 8, “Configuring SQL Server Windows Authentication,” describes how to<br />

use Windows authentication on Microsoft SQL Server with the <strong>Progress</strong> <strong>Sonic</strong><br />

Database Service JDBC SQL Server driver.<br />

● Part III, “Configuring <strong>and</strong> Managing BPEL Services,” includes the chapters:<br />

■ Chapter 9, “Configuring BPEL Services,” explains how to configure configure<br />

BPEL services.<br />

■ Chapter 10, “Managing BPEL Services,” describes how to manage BPEL<br />

services.<br />

● Part IV, “Integrating <strong>Sonic</strong> <strong>and</strong> Actional,” includes the chapters:<br />

■ Chapter 11, “Using Actional with <strong>Sonic</strong> Components,” shows how <strong>Sonic</strong> looks<br />

from rthe actional viewpoint..<br />

■ Chapter 12, “Using Actional Trust Zones in <strong>Sonic</strong> <strong>ESB</strong>,” describes how to use it<br />

as an additional layer of security in SOA environments.<br />

14 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Typographical Conventions<br />

Typographical Conventions<br />

This section describes the text formatting conventions used in this guide <strong>and</strong> a description<br />

of notes, warnings, <strong>and</strong> important messages. This guide uses the following typographical<br />

conventions:<br />

● Bold typeface in this font indicates keyboard key names (such as Tab or Enter) <strong>and</strong><br />

the names of windows, menu comm<strong>and</strong>s, buttons, <strong>and</strong> other <strong>Sonic</strong> user interface<br />

elements. For example, “From the File menu, choose Open.”<br />

● Bold typeface in this font emphasizes new terms when they are introduced.<br />

● Monospace typeface indicates text that might appear on a computer screen other than<br />

the names of <strong>Sonic</strong> user-interface elements, including:<br />

■ Code examples <strong>and</strong> code that the user must enter<br />

■ System output such as responses <strong>and</strong> error messages<br />

■ Filenames, pathnames, <strong>and</strong> software component names, such as method names<br />

● Bold monospace typeface emphasizes text that would otherwise appear in monospace<br />

typeface to emphasize some computer input or output in context.<br />

● Monospace typeface in italics or Bold monospace typeface in italics (depending<br />

on context) indicates variables or placeholders for values you supply or that might<br />

vary from one case to another.<br />

This guide uses the following syntax notation conventions:<br />

● Brackets ([ ]) in syntax statements indicate parameters that are optional.<br />

● Braces ({ }) indicate that one (<strong>and</strong> only one) of the enclosed items is required. A<br />

vertical bar (|) separates the alternative selections.<br />

● Ellipses (...) indicate that you can choose one or more of the preceding items.<br />

This guide highlights special kinds of information by shading the information area, <strong>and</strong><br />

indicating the type of alert in the left margin.<br />

Note Note indicates information that complements the main text flow. Such information is<br />

especially important for underst<strong>and</strong>ing the concept or procedure being discussed.<br />

Important Important indicates information that must be acted upon within the given context in order<br />

for the procedure or task (or other) to be successfully completed.<br />

Warning Warning indicates information that can cause loss of data or other damage if ignored.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 15


Preface<br />

<strong>Progress</strong> <strong>Sonic</strong> Documentation<br />

<strong>Sonic</strong> installations always have a welcome page that provides links to <strong>Sonic</strong><br />

documentation, release notes, communities, <strong>and</strong> support. See the release’s Product<br />

Update Bulletin book to see what’s new <strong>and</strong> what’s changed since prior releases.<br />

The <strong>Sonic</strong> documentation set includes the following books <strong>and</strong> API references.<br />

<strong>Sonic</strong> <strong>ESB</strong> Documentation<br />

<strong>Sonic</strong> <strong>ESB</strong> provides the following documentation:<br />

● <strong>Progress</strong> <strong>Sonic</strong> Installation <strong>and</strong> Upgrade <strong>Guide</strong> — Provides information about<br />

installing, updating, <strong>and</strong> upgrading <strong>Sonic</strong> <strong>ESB</strong> components.<br />

● <strong>Progress</strong> <strong>Sonic</strong> Workbench User <strong>Guide</strong> (<strong>Progress</strong> <strong>Sonic</strong> Workbench Online Help) —<br />

Provides information about developing, testing, <strong>and</strong> debugging applications on the<br />

<strong>Progress</strong> <strong>Sonic</strong> Workbench. Describes the <strong>Sonic</strong> Workbench, its editors, <strong>and</strong> tools.<br />

Provides information about how to get started with each component of the <strong>Sonic</strong> <strong>ESB</strong><br />

Product Family <strong>and</strong> describes sample applications.<br />

● <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> — Provides information<br />

about configuring <strong>and</strong> managing components used by the <strong>Sonic</strong> <strong>ESB</strong> Product Family.<br />

Describes deployment configurations for <strong>Sonic</strong> <strong>ESB</strong>, <strong>Sonic</strong> Database Service, <strong>and</strong><br />

<strong>Sonic</strong> BPEL Server<br />

● <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Deployment <strong>Guide</strong> — Provides information about moving<br />

development projects into test <strong>and</strong> production environments. Describes<br />

recommended build procedures, domain mappings, <strong>and</strong> reporting features.<br />

● <strong>Progress</strong> <strong>Sonic</strong> BPEL Server: <strong>Management</strong> API <strong>Guide</strong> — Describes how to use the<br />

management API to programatically access BPEL server functionality.<br />

● <strong>Sonic</strong> <strong>ESB</strong> API Reference — Online JavaDoc compilation of the <strong>Sonic</strong> <strong>ESB</strong> APIs.<br />

16 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Worldwide Technical Support<br />

Worldwide Technical Support<br />

<strong>Progress</strong> Software’s <strong>Sonic</strong> support staff can provide assistance from the resources on their<br />

Web site at www.progress.com/sonic. There you can access technical support for licensed<br />

<strong>Progress</strong> <strong>Sonic</strong> editions to help you resolve technical problems that you encounter when<br />

installing or using <strong>Progress</strong> <strong>Sonic</strong> products.<br />

When contacting Technical Support, please provide the following information:<br />

● The release version number <strong>and</strong> serial number of <strong>Sonic</strong>MQ that you are using. This<br />

information is listed on the license addendum. It is also at the top of the <strong>Sonic</strong>MQ<br />

Broker console window <strong>and</strong> might appear as follows:<br />

<strong>Sonic</strong>MQ Continuous Availability Edition [Serial Number nnnnnnn]<br />

Release nnn Build Number nnn Protocol nnn<br />

● The release version number <strong>and</strong> serial number of <strong>Sonic</strong> <strong>ESB</strong> that you are using. This<br />

information is listed on the license addendum. It is also near the top of the console<br />

window for a <strong>Sonic</strong> <strong>ESB</strong> Container. For example:<br />

<strong>Sonic</strong> <strong>ESB</strong> Continuous Availability Edition [Serial Number: nnnnnnn]<br />

Release nnn Build Number nnn<br />

● The platform on which you are running <strong>Progress</strong> <strong>Sonic</strong> products, <strong>and</strong> any other<br />

relevant environment information.<br />

● The Java Virtual Machine (JVM) your installation uses.<br />

● Your name <strong>and</strong>, if applicable, your company name.<br />

● E-mail address, telephone, <strong>and</strong> fax numbers for contacting you.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 17


Preface<br />

18 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Part I <strong>ESB</strong> <strong>Configuration</strong> Tools<br />

<strong>and</strong> Managed Components<br />

Part I contains the following chapters:<br />

● Chapter 1, “Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools”<br />

● Chapter 2, “<strong>ESB</strong> Containers”<br />

● Chapter 3, “<strong>ESB</strong> Endpoints <strong>and</strong> Connections”<br />

● Chapter 4, “Configuring Web Services”<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 19


20 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Chapter 1 Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong><br />

<strong>and</strong> <strong>Management</strong> Tools<br />

Chapter 1 describes the tools for configuring <strong>and</strong> managing the <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong><br />

product family:<br />

● “Overview” describes how <strong>and</strong> where the <strong>Sonic</strong> <strong>ESB</strong> tools are used.<br />

● “<strong>Sonic</strong> <strong>Management</strong> Console” introduces this tool for managing <strong>and</strong> monitoring<br />

components deployed in containers, including <strong>ESB</strong> Containers <strong>and</strong> <strong>Progress</strong><br />

<strong>Sonic</strong>MQ brokers. This section also describes the <strong>ESB</strong> Configured Objects section,<br />

used for configuring components such as <strong>ESB</strong> Containers, endpoints, services, <strong>and</strong><br />

<strong>ESB</strong> processes, <strong>and</strong> deploying them in an <strong>ESB</strong> Container.<br />

● “<strong>ESB</strong> Admin Tool <strong>and</strong> Comm<strong>and</strong>s” introduces this tool for comm<strong>and</strong> line actions that<br />

configure <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> containers <strong>and</strong> components, <strong>and</strong> manage the lifecycle<br />

of <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> components in management containers.<br />

For information about the <strong>Sonic</strong> <strong>ESB</strong> developmemt environment, see the <strong>Progress</strong> <strong>Sonic</strong><br />

<strong>ESB</strong> Deployment <strong>Guide</strong> in the <strong>Sonic</strong> Workbench’s Eclipse help.<br />

Important This book assumes that you have deployment installations of <strong>Progress</strong> <strong>Sonic</strong> <strong>8.0</strong><br />

products. While the <strong>Sonic</strong> Workbench has the same toolset, <strong>Sonic</strong>’s integration of the<br />

tools into the development environment precludes direct access to these tools. As such, if<br />

you are using the <strong>Sonic</strong> Workbench, you might find some Start menu comm<strong>and</strong>s <strong>and</strong><br />

some screenshots in this chapter inconsistent with those in a Workbench installation. You<br />

should avoid manipulating files that support a <strong>Sonic</strong> Workbench in its Directory Service<br />

unless explicitly instructed to do so, as you could cause unpredictable behavior in your<br />

<strong>Sonic</strong>Workbench.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 21


Chapter 1: Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools<br />

Overview<br />

The tools provided for configuring <strong>and</strong> managing <strong>Sonic</strong> <strong>ESB</strong> are independent of any<br />

<strong>Sonic</strong> domain. The tools are typically installed on systems where runtime components<br />

will not run. They connect to domains over the internet protocols to connect to a<br />

management broker for a domain for viewing <strong>and</strong> maintaining the configuraton objects in<br />

that domain. As a result, administrators can disconnect, relocate, <strong>and</strong> reconnect to diverse,<br />

distributed domains whenever <strong>and</strong> wherever needed.<br />

What’s a <strong>Sonic</strong> domain? — A <strong>Sonic</strong> domain is an administrative grouping of <strong>Progress</strong><br />

<strong>Sonic</strong> management containers, <strong>and</strong> brokers administered by one central management<br />

node, its Domain Manager. The domain manager is defined by its components:<br />

● A management container that provides caching facilities, communicates with its<br />

management node (the broker it hosts), <strong>and</strong> hosts the other components of the domain<br />

manager.<br />

● A broker dedicated to management communications for the domain manager’s two<br />

essential functions, the Directory Service <strong>and</strong> the Agent Manager.<br />

● A Directory Service that provides a centralized point for configuration information,<br />

runtime management, <strong>and</strong> configuration storage.<br />

● An Agent Manager that monitors the state of all management containers in the<br />

domain.<br />

For information about the domain manager, see the “Introduction to <strong>Configuration</strong>”<br />

chapter in the <strong>Progress</strong> <strong>Sonic</strong>MQ <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>and</strong> the<br />

“Distributing Components” chapter in the <strong>Progress</strong> <strong>Sonic</strong>MQ Deployment <strong>Guide</strong>.<br />

To use the <strong>Sonic</strong> <strong>ESB</strong> configuration <strong>and</strong> management tools, you must have a domain<br />

manager installed <strong>and</strong> the administration tools for <strong>Sonic</strong>MQ <strong>and</strong> <strong>Sonic</strong> <strong>ESB</strong> installed. See<br />

the <strong>Progress</strong> <strong>Sonic</strong> Installation <strong>and</strong> Upgrade <strong>Guide</strong> for information on a variety of<br />

installations of these product features.<br />

Once the software is installed <strong>and</strong> acessible, the first step is to start the domain manager.<br />

◆ To start a domain manager:<br />

❖ On Windows, choose:<br />

Start > Programs > <strong>Progress</strong> > <strong>Sonic</strong> <strong>8.0</strong> > Start Domain Manager<br />

❖ On UNIX or Linux, set a console window to the <strong>Progress</strong> <strong>Sonic</strong> installation’s<br />

Containers/Domain1.DomainManager directory, <strong>and</strong> then enter launchcontainer.sh.<br />

22 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


<strong>Sonic</strong> <strong>Management</strong> Console<br />

<strong>Sonic</strong> <strong>Management</strong> Console<br />

The <strong>Sonic</strong> <strong>Management</strong> Console (SMC) provides a graphic interface for configuring,<br />

managing, <strong>and</strong> monitoring configureed objects in the <strong>Sonic</strong> domain as well as launching<br />

supporting tools.<br />

◆ To start the <strong>Sonic</strong> <strong>Management</strong> Console:<br />

❖ On Windows, choose:<br />

Start > Programs > <strong>Progress</strong> > <strong>Sonic</strong> <strong>8.0</strong> > <strong>Sonic</strong> <strong>Management</strong> Console<br />

❖ On UNIX or Linux, set a console window to the <strong>Progress</strong> <strong>Sonic</strong>MQ installation<br />

directory, <strong>and</strong> type ./bin/startmc.sh <strong>and</strong> press Return.<br />

The <strong>Sonic</strong> <strong>Management</strong> Console opens. The Create Connection dialog box opens, as<br />

shown:<br />

A Connection Name, the Domain Name, <strong>and</strong> its Connection URL are required when<br />

security is not enabled on the management broker. When security is enabled on the<br />

management broker, an authentic User Name <strong>and</strong> Password are also required. The<br />

dialog box displays all the default values except the default user’s password:<br />

Administrator.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 23


Chapter 1: Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools<br />

◆ To connect the <strong>Management</strong> Console to the domain:<br />

1. Enter the connection information for the domain:<br />

Property Description<br />

Connection Name Identity to be associated with this connection.<br />

Domain Name Name of the domain.<br />

Connection URL(s) URL(s) of the management broker(s).<br />

User Name The user name for connection.<br />

Password The password of the user.<br />

For information about using the Advanced settings, see the “<strong>Sonic</strong> <strong>Management</strong><br />

Console” chapter in the <strong>Progress</strong> <strong>Sonic</strong>MQ <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong>.<br />

2. Click OK. A Connecting... dialog box <strong>and</strong> the status bar indicate that the <strong>Sonic</strong><br />

<strong>Management</strong> Console is connecting to the management broker for a domain.<br />

The <strong>Sonic</strong> <strong>Management</strong> Console opens a connection window to the domain, <strong>and</strong><br />

shows its objects in the Configure view. The following example shows the <strong>ESB</strong><br />

Containers folder selected:<br />

24 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


3. In the left panel, exp<strong>and</strong> System > DBService > <strong>8.0</strong> > lib:<br />

<strong>Sonic</strong> <strong>Management</strong> Console<br />

These are the supporting files for the configuration objects. They are accessed<br />

through the <strong>Sonic</strong> File System, <strong>Sonic</strong>FS. <strong>Sonic</strong> <strong>ESB</strong> Containers <strong>and</strong> <strong>Sonic</strong><br />

Workbench use the “sonicfs” protocol to reference files in <strong>Sonic</strong>FS, for example,<br />

sonicfs:///System/DBService/<strong>8.0</strong>/lib/openedge.jar.<br />

The Resources folder stores files you create <strong>and</strong> that you will reference by<br />

connecting to the domain manager where they are stored <strong>and</strong> using the syntax<br />

sonicfs:///Resources/myFile. A resource is the term used for a file in <strong>Sonic</strong>FS used<br />

by <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> components. Resources are referenced in parameters for<br />

services, <strong>ESB</strong> processes, endpoints, <strong>and</strong> connections. Resource files can be accessed<br />

from <strong>Sonic</strong>FS. For example, a service can read a script file directly from <strong>Sonic</strong>FS.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 25


Chapter 1: Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools<br />

4. Select the Manage tab <strong>and</strong> exp<strong>and</strong> Containers. The following example shows the<br />

runtime state of several containers:<br />

The containers shown in this figure are:<br />

● DomainManager — The default name of the domain manager’s container makes it<br />

easy to recognize. It is highlighted in green, indicating that it is running <strong>and</strong> all its<br />

hosted components are online.<br />

● Service 1 Container through Service 5 Container — The five management<br />

containers used for services installed in this domain are all running <strong>and</strong> the container<br />

that is exp<strong>and</strong>ed, Service4 Container, shows that its hosted component Service4 <strong>ESB</strong><br />

Container is online.<br />

● VerificationContainer — Hosts the service to verify a container’s setup is offline. See<br />

“Verifying an <strong>ESB</strong> Container Installation” in the <strong>Progress</strong> <strong>Sonic</strong> Installation <strong>and</strong><br />

Upgrade <strong>Guide</strong> for more information about using this container.<br />

26 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


<strong>Sonic</strong> <strong>Management</strong> Console<br />

5. If you have another domain running, connect to it. The following figure shows two<br />

domain connections in a <strong>Sonic</strong> <strong>Management</strong> Console.<br />

The following section explains how to work with the <strong>ESB</strong> Configured Objects section in<br />

the Configure tab of the <strong>Sonic</strong> <strong>Management</strong> Console.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 27


Chapter 1: Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools<br />

<strong>ESB</strong> Configured Objects<br />

The <strong>ESB</strong> Configured Objects section, located in the Configure tab of the <strong>Sonic</strong><br />

<strong>Management</strong> Console, enables you to configure <strong>ESB</strong> Containers, endpoints, services, <strong>and</strong><br />

<strong>ESB</strong> processes. The following procedure describes how to work with the <strong>ESB</strong> Configured<br />

Objects section in the SMC.<br />

Note The <strong>ESB</strong> Configured Objects section is available when:<br />

1. The <strong>Sonic</strong> installation where the <strong>Sonic</strong> <strong>Management</strong> Console (SMC) is launched<br />

includes both the <strong>Sonic</strong>MQ tools <strong>and</strong> the <strong>Sonic</strong> <strong>ESB</strong> tools.<br />

2. A domain where the <strong>Management</strong> Console is connected has been enabled by a <strong>Sonic</strong><br />

<strong>ESB</strong> Tools installation.<br />

If the <strong>Sonic</strong> <strong>ESB</strong> Tools are not installed for this SMC, yet the domain is enabled for <strong>Sonic</strong><br />

<strong>ESB</strong>, the <strong>ESB</strong> Configured Objects section is not shown. You can see the /System files for<br />

<strong>Sonic</strong><strong>ESB</strong> <strong>and</strong> the /<strong>ESB</strong> Containers objects—using a default icon—as shown:<br />

You should not attempt to manipulate these objects under these circumstances.<br />

In the reverse case—the <strong>Sonic</strong> <strong>ESB</strong> tools are installed for this SMC, but the connected<br />

domain is not <strong>Sonic</strong> <strong>ESB</strong> enabled—the <strong>ESB</strong> Configured Objects section is not shown.<br />

See the <strong>Progress</strong> <strong>Sonic</strong> Installation <strong>and</strong> Upgrade <strong>Guide</strong> for information about tools<br />

installations <strong>and</strong> the option to specify a domain to be enabled for the tools.<br />

28 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


◆ To work with the <strong>ESB</strong> Configured Objects section in the SMC:<br />

<strong>ESB</strong> Configured Objects<br />

1. With the <strong>Sonic</strong> <strong>Management</strong> Console connected to a domain that has been enabled<br />

for <strong>Sonic</strong> <strong>ESB</strong>, the <strong>ESB</strong> Configured Objects section is available in the Configure tab:<br />

This section can be exp<strong>and</strong>ed <strong>and</strong> contracted by double-clicking <strong>ESB</strong> Configured<br />

Objects. In this example, the section is shown exp<strong>and</strong>ed.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 29


Chapter 1: Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools<br />

2. In the left panel, click on a container node in the <strong>ESB</strong> Containers folder, as shown:<br />

The services in the selected <strong>ESB</strong> Container are listed in the right panel.<br />

3. Click on a name in the right panel to display its information <strong>and</strong> modifiable<br />

parameters.<br />

See “Overview” on page 52 for more information about <strong>ESB</strong> Containers.<br />

30 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


4. Click on an endpoint name in the Endpoints folder, as shown:<br />

<strong>ESB</strong> Configured Objects<br />

The endpoints for the selected endpoint name are displayed in the right panel.<br />

A tab provides access to the connections for the selected endpoint.<br />

5. Click on an endpoint name in the right panel to display its information <strong>and</strong> modifiable<br />

parameters.<br />

6. Choose the Connections tab to see the connections.<br />

7. Click on a connection in the right panel to display its information <strong>and</strong> modifiable<br />

parameters.<br />

See “Configuring <strong>Progress</strong> <strong>Sonic</strong>MQ Endpoints” on page 97 for more information<br />

about endpoints.<br />

8. In the left panel, click on a service in the Services folder. The services of the selected<br />

Service type are listed in the right panel.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 31


Chapter 1: Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools<br />

9. Click on a service in the right panel to display its information <strong>and</strong> modifiable<br />

parameters, as shown:<br />

Note that each service type shows its own unique set of classloading configurations<br />

<strong>and</strong> initialization parameters.<br />

Some initialization parameters specify explicit values, <strong>and</strong> some specify variables. If<br />

an initialization parameter specifies a variable, <strong>and</strong> the initialization parameter is<br />

editable, you can modify the variable value directly. If you specify a variable, the<br />

system replaces the variable with a parameter value at runtime.<br />

32 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


<strong>ESB</strong> Configured Objects<br />

When a variable is used, the system has to obtain an actual parameter value from a<br />

data source. To determine the data source, the system examines the variable itself. The<br />

variable's syntax indicates where the system can find the parameter value. The syntax<br />

for variables is show below (the dollar sign, braces, <strong>and</strong> colons are literals; the<br />

brackets enclose optional elements):<br />

${variable_source_type:[source_type_qualifier:]parameter_identifier}<br />

where variable_source_type is one of the following string literals:<br />

■ container — The parameter value is defined in the deployment properties of the<br />

<strong>ESB</strong> container into which the service type is deployed.<br />

■ system — The parameter value is defined in a JVM system property.<br />

■ property — The parameter value from a Java properties file.<br />

<strong>and</strong> source_type_qualifier is the following string literal:<br />

■ dynamic — The parameter value is dynamically extracted from a specified<br />

properties file. This qualifier is required if variable_source_type is property <strong>and</strong><br />

you do not want the property file read from a local cache.<br />

<strong>and</strong> parameter_identifier is one of the following:<br />

■ A valid <strong>Sonic</strong>FS URL indicating a property in a Java properties file — for<br />

example:<br />

${property:sonicfs:///workspace/myProject/src/myService.properties#myProp}<br />

■ Name of an <strong>ESB</strong> container property or name of a JVM system property. If it is the<br />

name of an <strong>ESB</strong> container property, variable_source_type must be container. If it<br />

is the name of JVM system property, then variable_source_type must be system.<br />

You can edit variables directly, or you can use the Global Parameter dialog box.<br />

For more information, see the <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Product Family Developer’s <strong>Guide</strong><br />

in the Eclipse help.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 33


Chapter 1: Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools<br />

10. Click on Processes, as shown:<br />

The processes are listed in the right panel. In the right panel, choosing a process<br />

displays its information, modifiable parameters, <strong>and</strong> tracking.<br />

For more information, see the <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Product Family Developer’s <strong>Guide</strong><br />

in the Eclipse help.<br />

34 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


<strong>ESB</strong> Admin Tool <strong>and</strong> Comm<strong>and</strong>s<br />

<strong>ESB</strong> Admin Tool <strong>and</strong> Comm<strong>and</strong>s<br />

While you can perform most configuration <strong>and</strong> administrative tasks with the <strong>Sonic</strong><br />

<strong>Management</strong> Console, you can also use the <strong>ESB</strong> Admin Tool to configure <strong>Progress</strong> <strong>Sonic</strong><br />

<strong>ESB</strong> containers <strong>and</strong> components, <strong>and</strong> to manage the lifecycle of <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong><br />

components deployed in management containers. You can also use the <strong>ESB</strong> Container to<br />

manage the Directory Service (<strong>Sonic</strong>FS). One of the most common uses of the <strong>ESB</strong><br />

Admin Tool is to import <strong>and</strong> export service types, services, endpoints, <strong>and</strong> connections.<br />

See the <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Deployment <strong>Guide</strong> for information on using <strong>ESB</strong> Admin<br />

comm<strong>and</strong>s to move configurations from one domain to another.<br />

◆ To start the <strong>ESB</strong> Admin Tool:<br />

1. Select Start > Programs > <strong>Progress</strong> > <strong>Sonic</strong> <strong>8.0</strong> > Tools > <strong>ESB</strong> Admin Tool.<br />

The <strong>ESB</strong> Admin Tool console window opens.<br />

2. In a default installation, enter the following to connect to the domain manager:<br />

connect Domain1 tcp://localhost:2506 Administrator Administrator<br />

See the following sections <strong>and</strong> the connect comm<strong>and</strong> for additional information.<br />

After using the <strong>ESB</strong> Admin Tool, follow this procedure to stop the session.<br />

◆ To stop an <strong>ESB</strong> Admin Tool session:<br />

❖ In an <strong>ESB</strong> Admin Tool console window, type exit or bye <strong>and</strong> press Enter.<br />

Each of the <strong>ESB</strong> Container comm<strong>and</strong>s is described in the following section.<br />

Note <strong>ESB</strong> Admin Tool comm<strong>and</strong>s are not case sensitive. Many values are case sensistive; for<br />

example, trying to connect to Domain1, yet entering domain1 will not succeed.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 35


Chapter 1: Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools<br />

Basic Comm<strong>and</strong>s<br />

Most of the comm<strong>and</strong>s act on a connected Directory Service store so connect is typically<br />

the first comm<strong>and</strong> entered in an <strong>ESB</strong> Admin session.<br />

connect<br />

connect domain URL [username password] [managementNode]<br />

Connect to the domain manager at the specified URL. For example:<br />

connect Domain1 tcp://myHost:2506 anAdmin aPwd<br />

where:<br />

● Domain is the Directory Service store where administration will occur.<br />

● URL is the IP address or DNS name resolvable to the broker <strong>and</strong> port of a management<br />

broker of Domain in the form protocol://host:port. A URL list can be used when<br />

delimited by commas <strong>and</strong> enclosed in quotes. For example:<br />

connect Domain1 “tcp://myHost:2506,tcp://myHostBackup:2506” anAdmin aPwd<br />

● username password are the administrator credentials for authentication on the broker.<br />

● managementNode is the routing definition name on the non-management broker or<br />

cluster that routes management communications to the management node. For more<br />

information, see the “<strong>Management</strong> Over Dynamic Routing” in the “Multiple Nodes<br />

<strong>and</strong> Dynamic Routing” chapter of the <strong>Progress</strong> <strong>Sonic</strong>MQ Deployment <strong>Guide</strong>.<br />

Note that the syntax of the connect comm<strong>and</strong> requires that, if you need to specify a<br />

managementNode, username <strong>and</strong> password must be specified as well.<br />

disconnect<br />

disconnect<br />

Disconnect from the domain manager.<br />

exit<br />

bye exit<br />

The exit comm<strong>and</strong>s stop the tool <strong>and</strong> close its window.<br />

help<br />

help ?<br />

The help comm<strong>and</strong>s list the available <strong>ESB</strong> Admin comm<strong>and</strong>s <strong>and</strong> their syntax.<br />

36 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


<strong>Sonic</strong>FS Maintenance Comm<strong>and</strong>s<br />

<strong>ESB</strong> Admin Tool <strong>and</strong> Comm<strong>and</strong>s<br />

The following file <strong>and</strong> Directory Service actions are used in maintenance of the <strong>Sonic</strong> File<br />

System, <strong>Sonic</strong>FS.<br />

add file<br />

add file name filename [override]<br />

Add a file as a resource to the domain with the specified name. If a resource already exists<br />

with that name, the comm<strong>and</strong> fails unless you specify override on the comm<strong>and</strong> line.<br />

For example, to import PO.xml to the specified location in <strong>Sonic</strong>FS, creating f1 <strong>and</strong> f2 in<br />

the process:<br />

<strong>ESB</strong>Admin> add file /f1/f2/PO.xml C:\PO.xml<br />

Adding file into Directory Service...<br />

name = /f1/f2/PO.xml<br />

file = C:\PO.xml<br />

override = false<br />

For example, to import C:\PO.xml to /Resources in <strong>Sonic</strong>FS:<br />

<strong>ESB</strong>Admin> add file PO.xml C:\PO.xml<br />

Adding file into Directory Service...<br />

name = PO.xml<br />

file = C:\PO.xml<br />

override = false<br />

add directory<br />

add directory sonicfs_directory source_directory<br />

Recursively add the specified source directory (on disk) to the <strong>Sonic</strong>FS in the Directory<br />

Service store. The sonicfs_directory argument can specify a fully qualified path in<br />

<strong>Sonic</strong>FS. If sonicfs_directory is not fully qualified, it is assumed to be in the /Resources<br />

directory in <strong>Sonic</strong>FS.<br />

For example, to add the local directory, myDir, to <strong>Sonic</strong>FS:<br />

add directory /Resources/myDir c:/myDir<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 37


Chapter 1: Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools<br />

delete file<br />

delete file filename<br />

Delete the file named filename from the domain. If a fully qualified path is not specified,<br />

the file is assumed to be in the /Resources directory in <strong>Sonic</strong>FS.<br />

For example, to delete def.xml from the /Resources directory in <strong>Sonic</strong>FS:<br />

delete file def.xml<br />

delete directory<br />

delete directory sonicfs_directory<br />

Delete the specified directory from domain<br />

Also deletes all subdirectories <strong>and</strong> files in those directories.<br />

export file<br />

export file name filename<br />

Export a file from the domain to the specified file <strong>and</strong> path. The export comm<strong>and</strong> is<br />

supported for all file types <strong>and</strong> supports paths <strong>and</strong> explicitly specified directories. The<br />

name argument can specify a fully qualified path in <strong>Sonic</strong>FS. If name is not fully qualified,<br />

the file is assumed to be in /Resources.<br />

For example, to export def.xml from /Resources in <strong>Sonic</strong>FS to c:\Testfiles, enter:<br />

export file def.xml c:\Testfiles\def.xml<br />

export directory<br />

export directory sonicfs_directory target_directory<br />

Recursively export the specified directory from the domain to the specified target<br />

directory.<br />

38 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


<strong>ESB</strong> Type Maintenance Comm<strong>and</strong>s<br />

<strong>ESB</strong> Admin Tool <strong>and</strong> Comm<strong>and</strong>s<br />

Several comm<strong>and</strong>s that perform actions in the connected domain are qualified by a type<br />

value. The list <strong>and</strong> dump comm<strong>and</strong>s can optionally specify a type. The import, export,<br />

<strong>and</strong> delete comm<strong>and</strong>s require a type parameter to refine the scope of their action.<br />

The following types are valid for the <strong>ESB</strong> Admin Tool comm<strong>and</strong>s that use the type<br />

variable—list, dump, export, import, <strong>and</strong> delete:<br />

Type Value<br />

accessor<br />

connection<br />

connectionType<br />

endpoint<br />

endpointType<br />

file<br />

license<br />

params<br />

process<br />

service<br />

serviceType<br />

xq_container<br />

list<br />

list [type]<br />

List the names of configurations in the domain. For example, to list the available types:<br />

list<br />

To list the service types in sonicfs:///Resources:<br />

list serviceType<br />

The list comm<strong>and</strong> can be constrained to specified directories. For example, to list the<br />

contents of /f1/f2:<br />

list file /f1/f2<br />

If /f1/f2 are subfolders in the /Resources folder, specify the full location:<br />

list file /Resources/f1/f2<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 39


Chapter 1: Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools<br />

dump<br />

dump [type] [name] [filename]<br />

Dump is an advanced comm<strong>and</strong>. You might be requested to use a specified dump syntax<br />

by <strong>Sonic</strong> technical support.<br />

To dump all available types, enter dump.<br />

To dump a type, add the type value you want. For example, to dump the endpoints, enter<br />

dump endpoint. The result is a file on the local file system named dump.txt that has all the<br />

endpoints in XML format. The file is placed in the start directory of the tool,<br />

sonic_install_dir/MQ<strong>8.0</strong>/bin.<br />

dump endpoint <strong>ESB</strong>SampleQ9<br />

Generates a file on the local file system named dump.txt that has only the endpoint<br />

<strong>ESB</strong>SampleQ9 in XML format.<br />

dump endpoint <strong>ESB</strong>sampleQ9 C:\dumpedQ9.txt<br />

Generates a file on the local file system at C:\dumpedQ9.txt that has only the endpoint<br />

<strong>ESB</strong>SampleQ9 in XML format.<br />

A dump in XML format is useful for storing information, but you should use export rather<br />

than dump in deployments.<br />

export<br />

export type name filename<br />

Export a configuration from a specified type into the domain as the specified file.<br />

The export comm<strong>and</strong> supports all configuration types.<br />

import<br />

import type filename [override]<br />

Import a configuration from a specified file into the domain as the specified type. If a<br />

configuration exists with the name defined in the body of the XML file, the comm<strong>and</strong><br />

fails. Specify override to force an overwrite of an existing configuration.<br />

delete<br />

delete type name<br />

Delete a configuration from the domain of the specified type <strong>and</strong> name.<br />

40 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


License Container Comm<strong>and</strong>s<br />

License Container Comm<strong>and</strong>s<br />

You can add or export a <strong>Sonic</strong> <strong>ESB</strong> license key (control number) in the connected domain.<br />

Within a domain, there is a single <strong>ESB</strong> license for each version.<br />

add license container<br />

add license container license_key [version]<br />

Add the <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> license key to <strong>Sonic</strong>FS. The specified license key overwrites<br />

any <strong>Sonic</strong> <strong>ESB</strong> license key already in <strong>Sonic</strong>FS. Use the version parameter to add multiple<br />

licenses. Specify the version in the format, Major.Minor, for example, <strong>8.0</strong>.<br />

export license container<br />

export license container [version]<br />

Display the license container to the console. Use the version parameter to export an earlier<br />

version’s license. Specify the version in the format, Major.Minor, for example, <strong>8.0</strong>.<br />

<strong>ESB</strong>Admin> export license container <strong>8.0</strong><br />

Displaying license key (control number) for version <strong>8.0</strong> ...<br />

Control Number = nnnnnnnnnnnnnnn<br />

<strong>Management</strong> Container Comm<strong>and</strong>s<br />

Information about containers <strong>and</strong> operational actions in the connected domain can be<br />

performed by the <strong>ESB</strong> Container.<br />

container list<br />

container list<br />

Lists the management containers in the domain, with their state, view name, host (when<br />

online), <strong>and</strong> components.<br />

container shutdown<br />

container shutdown container_name<br />

Shuts down the specified management container (not <strong>ESB</strong> Container). For example:<br />

container shutdown containerName<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 41


Chapter 1: Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools<br />

container status<br />

container status container_name<br />

Reports the status of a management container. For example:<br />

<strong>ESB</strong>Admin> container status DomainManager<br />

Container Name = DomainManager, State = Online,<br />

Container Config Name = /Containers/DomainManager,<br />

Host = NBSRUSSO3.bedford.progress.com<br />

Component Name = ActivationDaemon1, State = Online<br />

Component Name = Broker1, State = Online<br />

container [suspend | resume | reload]<br />

container [suspend|resume|reload] container_name component_name<br />

Perform the specified operation on the management container <strong>and</strong> <strong>ESB</strong> Container<br />

(a component of the management container).<br />

Deployment Tool Comm<strong>and</strong>s<br />

Deployment tool comm<strong>and</strong>s are in the following categories:<br />

● Analysis for deployment<br />

● Exporting for deployment<br />

● Tailoring archives for import<br />

● Importing or merging for deployment<br />

Analysis for Deployment<br />

The analysis comm<strong>and</strong>s—diff, mqdepends, mqrevdepends, <strong>and</strong> impact—contrast archive<br />

files, file system structures, <strong>and</strong> Directory Service stores for differences <strong>and</strong><br />

dependencies.<br />

Note The analysis comm<strong>and</strong>s are one aspect of the set of deployment tools used in <strong>Sonic</strong> <strong>ESB</strong><br />

deployments. See the <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Deployment <strong>Guide</strong> for information about this<br />

set of comm<strong>and</strong>s <strong>and</strong> the import <strong>and</strong> export tools that facilitate deployment.<br />

These comm<strong>and</strong>s do not require that a connect comm<strong>and</strong> was executed as they either work<br />

with file systems <strong>and</strong> archives outside the Directory Service or establish their connections<br />

within the comm<strong>and</strong>.<br />

42 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


The general syntax of the analysis comm<strong>and</strong>s is:<br />

● Uses one or more storeType, each with storeParams as follows:<br />

License Container Comm<strong>and</strong>s<br />

■ The first -storeType storeParams identifies the source artifact store, <strong>and</strong><br />

the next -storeType storeParams identifies the target artifact store.<br />

■ storeType is { xar | fs | ds }.<br />

■ storeParams are:<br />

❑ When storeType is xar, the archive location on a file system<br />

❑ When storeType is fs, the root of the hierarchy on a file system<br />

❑ When storeType is ds, the management connection to a domain in the form:<br />

domain url [username password] [managementNode]<br />

● Every analysis comm<strong>and</strong> produces an output file. The out parameter specifies the<br />

preferred location of the .xml file that reports on the analysis. The directory hierarchy<br />

you specify must exist for the comm<strong>and</strong> to succeed.<br />

If you do not specify an output file, a default file is created in the <strong>ESB</strong> Admin Tool’s<br />

working directory as follows:<br />

Analysis Tool Default Output File<br />

diff <strong>Sonic</strong>_Diff.xml<br />

mqdepends <strong>Sonic</strong>_Dependency.xml<br />

mqrevdepends <strong>Sonic</strong>_ReverseDependency.xml<br />

impact <strong>Sonic</strong>_ImpactAnalysis.xml<br />

● Some analysis comm<strong>and</strong>s provide a v switch to enable enhanced verbosity.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 43


Chapter 1: Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools<br />

diff<br />

diff -storeType storeParams -storeType storeParams [-out outFile.xml] [-v]<br />

The diff comm<strong>and</strong> assesses the difference between two artifact stores. Unlike a generic<br />

differencing engine, the <strong>ESB</strong>Admin diff only assesses specific filetypes in certain store<br />

types. The stores can be <strong>Sonic</strong> archive files—XAR files—(-xar store type), file systems<br />

(-fs store type), or Directory Service stores (-ds store type).<br />

Differences include:<br />

● Artifacts that are in both stores yet do not have identical content. You can choose to<br />

identify only that the files are dissimilar or to expose the differences in detail.<br />

● Artifacts that are in the source store but not in the target store<br />

● Artifacts that are in the target store but not in the source store<br />

As an example, a comm<strong>and</strong> comparing a XAR file with a Directory Service store is:<br />

diff -xar sourceStore.xar -ds Domain1 myHost:2506 aUser aPassword<br />

mqdepends<br />

mqdepends -storeType storeParams -out outputFile.xml<br />

[-include artifact1 [artifact2 ...] | -includeFile artifactListFile]<br />

where the optional parameters include:<br />

● artifact1 artifact2 ...(a series of specific files in the store to analyze)<br />

● artifactListFile (a text file that provides a list of files in the store to analyze)<br />

The mqdepends comm<strong>and</strong> assesses a source artifact store to evaluate <strong>and</strong> report on the<br />

dependencies of <strong>ESB</strong> artifacts on <strong>Sonic</strong>MQ configuration objects. You can use this<br />

information to create or verify the existence of the specified dependencies in a target<br />

Directory Service store. The stores can be a <strong>Sonic</strong> archive file, file system, or a Directory<br />

Service store.<br />

<strong>Sonic</strong> <strong>ESB</strong> dependencies on <strong>Sonic</strong>MQ artifacts include:<br />

● Endpoints for their destination dependencies (topics, queues, or routing).<br />

● <strong>ESB</strong> connections for <strong>Sonic</strong>MQ connection parameters (<strong>and</strong>, therefore, the broker<br />

location <strong>and</strong> port where static destinations must be created.<br />

As an example, to produce a dependency report on specified files:<br />

mqdepends -fs C:/myinstalldir/<strong>ESB</strong> -include processA serviceA serviceB<br />

44 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


License Container Comm<strong>and</strong>s<br />

mqrevdepends<br />

mqrevdepends -storeType storeParams [-out outFile.xml]<br />

[-include artifact1 [artifact2 ...] | -includeFile artifactListFile]<br />

where the optional parameters include:<br />

● artifact1 artifact2 ... is a series of specific files in the store to analyze<br />

● artifactListFile is text file that provides a list of files in the store to analyze<br />

The mqrevdepends comm<strong>and</strong> assesses a source artifact store to evaluate <strong>and</strong> report on the<br />

dependencies of <strong>ESB</strong> artifacts on <strong>Sonic</strong>MQ configuration objects. You can use this<br />

information to create or verify the existence of the specified dependencies in a target<br />

Directory Service store.<br />

Reverse dependency produces the same set of information as a dependency. However, the<br />

information indicates a required <strong>Sonic</strong>MQ configuration element, <strong>and</strong> then the <strong>ESB</strong><br />

artifacts that depend on it.<br />

As an example, to produce a reverse dependency report on a list of specific files:<br />

mqrevdepends -fs C:/fileDir/<strong>ESB</strong> -includeFile artifactList.txt<br />

Impact<br />

impact -storeType storeParams -storeType storeParams [-out outFile.xml] [-v]<br />

Assessing impact on a Directory Service store requires a connect comm<strong>and</strong> to establish a<br />

connection to the domain prior to invoking impact.<br />

An impact analysis report combines features of diff <strong>and</strong> mqdepends. Together, these<br />

features define the impact on the target store that would result from merging the source<br />

store into the target store.<br />

Because this report assesses impact, the following information is also included:<br />

● If a binary file type is different, the impact analysis report indicates that the file in the<br />

source store will overwrite the one in the target store.<br />

● If a file exists in the source store but not in the target store, the impact analysis report<br />

indicates that a new file will be added to the target store. However, if a file exists in<br />

the target store but not in the source store, it is not reported as it is not impacted <strong>and</strong><br />

will not be affected by any import actions.<br />

● If a dependency indicates that <strong>Sonic</strong>MQ configuration objects must be created, the<br />

impact analysis report describes the requirement. Conversely, if existing <strong>Sonic</strong>MQ<br />

configuration objects are no longer required, the impact analysis report notes that fact.<br />

As an example, to report on the impact of an archive on a Directory Service store:<br />

impact -xar sourceStore.xar -ds Domain1 myHost:2506 aUser aPwd<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 45


Chapter 1: Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools<br />

Exporting for Deployment<br />

The deployment export comm<strong>and</strong>s create bootfiles <strong>and</strong> exported artifacts for deployment<br />

to other domains. The <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Deployment <strong>Guide</strong> provides information on<br />

using these comm<strong>and</strong>s.<br />

export fs<br />

export fs targetFileSysPath [sourceFileSysPath | exportPropFile | all]<br />

Export to a file system path as a file structure.<br />

export archive<br />

export archive targetArchiveFile [sourceArchiveFile | exportPropFile | all]<br />

Export to a <strong>Sonic</strong> archive file.<br />

export bootfile<br />

export bootfile container_config_name [filename]<br />

Create a boot file to use when starting an <strong>ESB</strong> Container. By default a boot file is created<br />

in the current working directory with the name, bootname.xml Optionally, specify a file<br />

name to have the boot file created elsewhere.<br />

Tailoring Archives for Import<br />

The tailoring comm<strong>and</strong>s create intermediate files that are tuned for a target domain so you<br />

can map archives for import into the domain to the characteristics of the target domain.<br />

The <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Deployment <strong>Guide</strong> provides information on using these<br />

comm<strong>and</strong>s.<br />

createMap<br />

createMap archive_file map_file [rules file]<br />

Create a tailoring map file that is edited <strong>and</strong> then applied to a <strong>Sonic</strong> archive using the<br />

applyMap comm<strong>and</strong>.<br />

applyMap<br />

applyMap input_archive_file map_file output_archive file [log file]<br />

Create a tailored archive from a source archive <strong>and</strong> a tailoring map file.<br />

46 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Importing or Merging for Deployment<br />

License Container Comm<strong>and</strong>s<br />

The import <strong>and</strong> merge comm<strong>and</strong>s transfer the source data into the connected domain.<br />

The <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Deployment <strong>Guide</strong> provides information on using these<br />

comm<strong>and</strong>s.<br />

import fs<br />

import fs sourceFileSysPath [importPropFile | override]<br />

Import into a domain from a file system path as a file structure where:<br />

● sourceFileSysPath is the root of the file system hierarchy that contains the files to be<br />

imported into the connected Directory Service’s store.<br />

● One of the following arguments is used:<br />

■ importPropFile — When an import properties file was created <strong>and</strong> saved, it can<br />

be applied as a parameter of the comm<strong>and</strong> to apply the defined overwrite <strong>and</strong><br />

ignore settings.<br />

■ override — Set overwrite of matching files to true.<br />

import archive<br />

import archive sourceArchiveFile [importPropFile | override]<br />

Import into a domain from a <strong>Sonic</strong> Archive file.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 47


Chapter 1: Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools<br />

merge (st<strong>and</strong>ard form)<br />

merge -storeType storeParams -storeType storeParams [-out outFile.xml] [-v]<br />

where:<br />

● The first -storeType storeParams identifies the source artifact store, <strong>and</strong><br />

the next -storeType storeParams identifies the target artifact store.<br />

● storeType is { xar | fs | ds }.<br />

● storeParams are:<br />

■ When storeType is xar, the archive location on a file system<br />

■ When storeType is fs, the root of the hierarchy on a file system<br />

■ When storeType is ds, the management connection to a domain in the form:<br />

domain url [username password] [managementNode]<br />

● The out parameter lets you specify the preferred location of the .xml file that reports<br />

on the analysis. If you do not specify an output file, a default file (<strong>Sonic</strong>_Merge.xml)<br />

is created in the <strong>ESB</strong> Container’s working directory<br />

● -v requests verbose reporting<br />

For example, to merge an archive into a Directory Service store:<br />

merge -xar sourceStore.xar -ds Domain1 myHost:2506 aUser aPwd -out c:\out.xml<br />

merge (compound form)<br />

A variation in the syntax of the merge comm<strong>and</strong> enables the merger of two source stores<br />

into a target store. As a result, the target store is acted on but the two source stores are<br />

unmodified. The source <strong>and</strong> target stores can be XAR files, file systems, or Directory<br />

Service stores.<br />

The syntax of the advanced merge comm<strong>and</strong> in the <strong>Sonic</strong> <strong>ESB</strong> Admin Tool is:<br />

merge -sourceStore1Type sourceStore1Params<br />

-sourceStore2Type sourceStore2Params<br />

-targetStoreType targetStoreParams<br />

[-out outFile.xml]<br />

[-v]<br />

where the variation from a st<strong>and</strong>ard merge is that sourceStore1 <strong>and</strong> sourceStore2 are two<br />

distinct source types with their respective parameters that will be sequentially merged into<br />

the target store.<br />

For example, to merge a XAR <strong>and</strong> a file system into a target file system:<br />

merge -xar source.xar -fs C:/sourceDir/<strong>ESB</strong> -fs C:/targetDir/<strong>ESB</strong> -out c:\out.xml<br />

48 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Shutting Down <strong>Sonic</strong> Components <strong>and</strong> <strong>Sonic</strong> <strong>ESB</strong> Tools<br />

Shutting Down <strong>Sonic</strong> Components <strong>and</strong> <strong>Sonic</strong> <strong>ESB</strong> Tools<br />

To shut down the tools <strong>and</strong> components in a <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> environment, perform<br />

an orderly shutdown of <strong>Sonic</strong> components, <strong>and</strong> then stop the tools. The following<br />

procedure assumes that you want to stop all the components in connected domains, <strong>and</strong><br />

then stop the tools in the local installation.<br />

If you want to stop all the components that are running on the local system where the tools<br />

were started, connect to that domain so that you can perform actions on its components.<br />

◆ To perform an orderly shut down of <strong>Sonic</strong> components:<br />

In each domain, shut down any running containers:<br />

1. In the <strong>Sonic</strong> <strong>Management</strong> Console, select the Manage tab.<br />

2. Choose the containers folders, typically /Containers<br />

3. Right-click on each container name you want to stop, <strong>and</strong> select<br />

Operations > Shutdown.<br />

4. Be sure to shut down the container named DomainManager last.<br />

The specified configuration objects are stopped.<br />

◆ To shut down <strong>Sonic</strong> <strong>ESB</strong> tools:<br />

1. Shortly after you stop a domain manager where tools are connected, you are prompted<br />

that there is problem trying to resume connection. That is to be expected. Close the<br />

open windows within the <strong>Sonic</strong> <strong>Management</strong> Console to stop their connections.<br />

2. If the JMS Test Client is running, close it.<br />

3. If the <strong>ESB</strong> Container is running, enter bye to stop it.<br />

4. In the <strong>Sonic</strong> <strong>Management</strong> Console, select Action > Exit.<br />

The <strong>Sonic</strong> <strong>ESB</strong> tools are stopped.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 49


Chapter 1: Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools<br />

50 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Chapter 2 <strong>ESB</strong> Containers<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> is a framework composed of classes <strong>and</strong> APIs for architecting,<br />

developing, <strong>and</strong> configuring distributed services. This framework includes an <strong>ESB</strong><br />

Container, a centralized configuration service, <strong>and</strong> key routing <strong>and</strong> processing services.<br />

This chapter explains how to work with <strong>Sonic</strong> <strong>ESB</strong> Containers <strong>and</strong> describes services <strong>and</strong><br />

messages in the <strong>Sonic</strong> <strong>ESB</strong> framework.<br />

This chapter contains the following sections:<br />

● “Overview”<br />

● “Creating <strong>ESB</strong> Containers”<br />

● “Managing the Services Associated with an <strong>ESB</strong> Container”<br />

● “Deploying an <strong>ESB</strong> Container in a <strong>Management</strong> Container”<br />

● “Changing the State of <strong>Management</strong> <strong>and</strong> <strong>ESB</strong> Containers”<br />

● “Monitoring Service Metrics <strong>and</strong> Notifications”<br />

● “Enabling Integration with Actional for Visualization”<br />

● “Logging <strong>and</strong> Tracing”<br />

● “Using Activation Daemons”<br />

Note The tasks in this chapter are oriented toward deployment specialists. <strong>Sonic</strong> <strong>ESB</strong> Product<br />

Family’s development environment, the <strong>Sonic</strong> Workbench, manages <strong>ESB</strong> Containers,<br />

starting <strong>and</strong> stopping them for you, often automatically. When you add or remove<br />

services <strong>and</strong> processes to your development environment, you do not have to perform<br />

most of the tasks described in this chapter. In the <strong>Sonic</strong> Workbench, you can perform<br />

many of these actions in the Containers view. See the <strong>Sonic</strong> <strong>ESB</strong> Product Family:<br />

Developer’s <strong>Guide</strong> in <strong>Sonic</strong> Workbench online help.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 51


Chapter 2: <strong>ESB</strong> Containers<br />

Overview<br />

<strong>ESB</strong> Containers host services, endpoints, <strong>and</strong> <strong>ESB</strong> processes. <strong>Configuration</strong> information<br />

is provided to an <strong>ESB</strong> Container from a centralized Directory Service. The Directory<br />

Service notifies containers of configuration changes <strong>and</strong> updates each container’s cache<br />

of configuration information. An <strong>ESB</strong> Container also provides access to a common log<br />

file for all the services it hosts. In addition to <strong>ESB</strong> processes, services, <strong>and</strong> endpoints, <strong>ESB</strong><br />

Container components include:<br />

● <strong>Management</strong> framework access — Provides access to the centralized configuration<br />

store <strong>and</strong> st<strong>and</strong>ard facilities for managing the container’s assets.<br />

● Connectivity components — Manage connections <strong>and</strong> communication with external<br />

resources, including JMS. They include the endpoint manager for access to existing<br />

endpoints (by name) or creation of new ones.<br />

● Services <strong>and</strong> <strong>ESB</strong> processes — H<strong>and</strong>le the application-level components or services<br />

<strong>and</strong> manage the interaction of service code with the environment, including the<br />

application manager (which controls the lifecycle of <strong>ESB</strong> services,) the service<br />

application (which sets up each instance of a service) <strong>and</strong> the dispatcher (which<br />

passes each message to a service <strong>and</strong> sends processed messages to the next destination<br />

or endpoint.)<br />

● Factory objects — Create instances of objects that services require:<br />

■ MessageFactory — Creates new messages to be sent.<br />

■ EnvelopeFactory — Creates new envelopes to associate messages with addresses.<br />

■ AddressFactory — Creates addresses for envelopes allowing messages to be sent<br />

to an <strong>ESB</strong> process, service, or endpoint.<br />

An <strong>ESB</strong> Container manages the lifecycle of services <strong>and</strong> creates a pool of connections to<br />

JMS endpoints (destinations). Each <strong>ESB</strong> Container within a <strong>Sonic</strong> domain must have a<br />

unique name.<br />

52 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


When an <strong>ESB</strong> Container starts up, it follows this sequence:<br />

Overview<br />

1. The management container reads its local boot file. This file contains the name of the<br />

management container as well as the connection information (URL, username, <strong>and</strong><br />

password) used in enabling the management communications layer. The connection<br />

information must be the same as that used by the Directory Service. This file can be<br />

encrypted (see the “Configuring Framework Components” chapter in the <strong>Progress</strong><br />

<strong>Sonic</strong>MQ <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong>).<br />

2. The container enables management communications <strong>and</strong> makes a request for its basic<br />

configuration information.<br />

3. The Directory Service replies with the name of the <strong>ESB</strong> Container in the management<br />

container (plus other components, such as an Activation Daemon).<br />

4. The configuration of the <strong>ESB</strong> Container is requested.<br />

5. The Directory Service replies with the list of services to be run within the <strong>ESB</strong><br />

Container.<br />

6. The <strong>ESB</strong> Container starts its internal components, including services <strong>and</strong><br />

connections. This often involves additional requests from the Directory Service for<br />

additional configuration information.<br />

7. During startup, the <strong>ESB</strong> Container might make additional JMS connections required<br />

by the services it supports. These connections are independent of the initial<br />

management connection. Typically, the usernames <strong>and</strong> passwords for these<br />

application connections are different from the username <strong>and</strong> password used for<br />

management connections.<br />

A running <strong>ESB</strong> Container continues to make management requests on its own <strong>and</strong><br />

responds to administrative requests from the management tools, such as the <strong>Sonic</strong><br />

<strong>Management</strong> Console. Some reasons for this additional communication include:<br />

● Additional configuration information is needed by a service. These requests are<br />

directed to the Directory Service, (for example, process configurations.)<br />

● <strong>Management</strong> tools send life cycle management comm<strong>and</strong>s to the management<br />

container, for example, to suspend operation, reload configuration information, or<br />

initiate a shutdown operation.<br />

● Requests for status from other components or tools.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 53


Chapter 2: <strong>ESB</strong> Containers<br />

The following events occur as the <strong>ESB</strong> Container manages message transfer:<br />

1. The <strong>ESB</strong> Container reads configuration information from the Directory Service.<br />

2. The <strong>ESB</strong> Container establishes JMS connections to <strong>Progress</strong> <strong>Sonic</strong>MQ destinations<br />

(topics or queues).<br />

3. The <strong>ESB</strong> Container pools JMS connections.<br />

4. Messages arriving on their <strong>Progress</strong> <strong>Sonic</strong>MQ destinations are allocated to services<br />

that implement the XQService interface by calling their service( ) method, using the<br />

predefined Quality of Service (QoS)—EXACTLY_ONCE, AT_LEAST_ONCE, or BEST_EFFORT.<br />

5. Messages are processed by the services.<br />

6. Output messages are generated by the services <strong>and</strong> placed in an OUTBOX.<br />

7. Messages in the OUTBOX are sent to <strong>Sonic</strong>MQ destinations by the services, or to other<br />

services in the container.<br />

An <strong>ESB</strong> Container is deployed as a component in a management container. The<br />

management container caches all the information that it looks up in its domain manager’s<br />

Directory Service store. If the domain manager is not accessible <strong>and</strong> the management<br />

container is not looking up any new configurations (including resources such as<br />

stylesheets, new services, or endpoints) at that time, then the container can continue<br />

running despite the domain manager failure. However, if a new configuration is necessary<br />

that is not cached, it must wait for the Directory Service to be restarted.<br />

In addition to providing configuration information, a management container also provides<br />

access to a common log file for all of the components it hosts. (For information on<br />

container caching <strong>and</strong> logging, see the “Configuring Containers <strong>and</strong> Collections” <strong>and</strong><br />

“Managing Containers <strong>and</strong> Collections” chapters in the <strong>Progress</strong> <strong>Sonic</strong>MQ <strong>Configuration</strong><br />

<strong>and</strong> <strong>Management</strong> <strong>Guide</strong>.)<br />

The following sections describe how to manage installed <strong>ESB</strong> Containers <strong>and</strong> create new<br />

<strong>ESB</strong> Containers. Use the <strong>Sonic</strong> <strong>Management</strong> Console to add <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong><br />

components to a container.<br />

54 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Creating <strong>ESB</strong> Containers<br />

Creating <strong>ESB</strong> Containers<br />

The following procedure describes how to create an <strong>ESB</strong> Container using the <strong>ESB</strong><br />

Configured Objects section of the <strong>Sonic</strong> <strong>Management</strong> Console.<br />

◆ To create a new <strong>ESB</strong> Container:<br />

1. In the left panel in the <strong>Sonic</strong> <strong>Management</strong> Console, under the <strong>ESB</strong> Configured<br />

Objects node, click the <strong>ESB</strong> Containers folder.<br />

2. In the right panel, click New. The entry fields for the <strong>ESB</strong> container are as shown:<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 55


Chapter 2: <strong>ESB</strong> Containers<br />

3. In the <strong>ESB</strong> Container Maintenance section, specify the following properties:<br />

Property Description<br />

Name The name of the <strong>ESB</strong> container.<br />

Intra-container<br />

Messaging<br />

<strong>ESB</strong> (JMS)<br />

Connection<br />

HTTP Routing<br />

Connection<br />

Select to allow the container to bypass the overhead of sending <strong>and</strong><br />

receiving messages to <strong>and</strong> from endpoints when the services in that <strong>ESB</strong><br />

process reside in the same container.<br />

Also used for all OUTBOX processing where dynamic routing is indicated<br />

(when the target destination is a remote destination such as NodeA::T1).<br />

For more information, see the <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Product Family Developer’s <strong>Guide</strong> in the<br />

Eclipse help.<br />

4. In the Actional Integration section, specify the following properties:<br />

Property Description<br />

Enable Actional<br />

Instrumentation<br />

Enable Payload<br />

Capture<br />

Specify the <strong>ESB</strong> connection used to call web services deployed on the<br />

<strong>ESB</strong> (in contrast to those available at an external HTTP address.)<br />

Specify the HTTP routing connection to the <strong>Sonic</strong>MQ broker that is used<br />

for web services with HTTP addresses.<br />

Select this option to enable Actional Server visualization on this <strong>ESB</strong><br />

container. By default, the option is not selected (unchecked). See the<br />

chapter on “Instrumenting <strong>Sonic</strong> <strong>ESB</strong>” in the Actional Interceptor<br />

<strong>Guide</strong>.<br />

When Actional instrumentation is enabled, declares whether the<br />

instrumentation should include the message body.<br />

The Actional Integration feature requires <strong>Progress</strong> Actional software products to<br />

provide visibility, control, <strong>and</strong> enforcement of deployed assets. See their Web site at<br />

www.progress.com/actional.<br />

5. Click Apply to complete the definition of the <strong>ESB</strong> Container you created.<br />

You now need to add services to the <strong>ESB</strong> Container.<br />

56 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


◆ To add services to an <strong>ESB</strong> Container:<br />

Creating <strong>ESB</strong> Containers<br />

1. In the left panel in the <strong>Sonic</strong> <strong>Management</strong> Console, under the <strong>ESB</strong> Configured<br />

Objects node, exap<strong>and</strong> the <strong>ESB</strong> Containers folder.<br />

2. Select the <strong>ESB</strong> Container to which you want to add services, <strong>and</strong> then click New in<br />

the right panel of the <strong>Sonic</strong> <strong>Management</strong> Console. The Select Service or Process to<br />

Add to Container dialog box opens.<br />

To select or create an element to add to your <strong>ESB</strong> Container, see “Adding Services or<br />

<strong>ESB</strong> Process Entry Points to an <strong>ESB</strong> Container” on page 61 for detailed information.<br />

3. Click OK to close the Select Service or Process to Add to Container dialog box.<br />

Note You do not have to add <strong>ESB</strong> Processes to containers unless you want to make them<br />

directly accessible over a JMS Endpoint. This entry endpoint will only be used by<br />

external JMS (or WS-Protocol clients.) <strong>ESB</strong> services sending to a process always go<br />

to the first step.<br />

4. Click Apply in the lower right panel of the <strong>Sonic</strong> <strong>Management</strong> Console to apply the<br />

changes to your <strong>ESB</strong> Container.<br />

The service or <strong>ESB</strong> process you selected appears in the right panel. You can repeat<br />

this step to add services <strong>and</strong> <strong>ESB</strong> processes to your <strong>ESB</strong> Container.<br />

(You can click Reset to restore the previously applied values before you click Apply.)<br />

If you click Undo, any changes made before the previous Apply are undone. The<br />

information reverts to its previous state <strong>and</strong> Redo becomes available. (Undo does not<br />

undo the last change unless Apply has been clicked.)<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 57


Chapter 2: <strong>ESB</strong> Containers<br />

<strong>ESB</strong> Container Intra-container Messaging<br />

Intra-container messaging allows a container to bypass the overhead of sending <strong>and</strong><br />

receiving messages to <strong>and</strong> from services in a process when the next service in an <strong>ESB</strong><br />

Process resides in the same container. When you select intra-container messaging for an<br />

<strong>ESB</strong> Container, a message in the Outbox of one service (that is addressed to another<br />

service in the same <strong>ESB</strong> Container) is sent directly the other service, bypassing the broker.<br />

Messages sent to a <strong>Sonic</strong> <strong>ESB</strong> service where intra-container messaging is enabled bypass<br />

the broker, so any listeners outside the container will not receive these messages. The<br />

Quality of Service (QoS) for the entire message dispatch through a process or chain of<br />

services is dictated by the QoS of the entry endpoint of the service that first receives the<br />

message off the originating JMS destination.<br />

For example, when a service whose entry endpoint has a QoS of EXACTLY_ONCE receives a<br />

message, that message will have QoS of EXACTLY_ONCE throughout the process until it<br />

reaches another JMS destination, regardless of the QoS of any other services it passes<br />

through after the first service. In this example, if a fatal error (such as a container crash,<br />

machine crash, or power failure) occurs, a message that is not committed at the time of<br />

failure will be resent when the container becomes available. The uncommitted message is<br />

resent in this case because it retains the QoS of EXACTLY_ONCE. See “Quality of Service”<br />

on page 105 for more information about QoS.<br />

58 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Viewing or Editing <strong>ESB</strong> Container Properties<br />

Creating <strong>ESB</strong> Containers<br />

Follow this procedure to view <strong>and</strong> edit the properties of installed <strong>ESB</strong> Containers.<br />

◆ To view or edit the properties of installed <strong>ESB</strong> Containers:<br />

1. Start the <strong>Sonic</strong> <strong>Management</strong> Console. (See “Using <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong><br />

<strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> Tools” on page 21.)<br />

2. In the left panel, under the <strong>ESB</strong> Configured Objects node, select the <strong>ESB</strong> Containers<br />

folder.<br />

The right panel lists any installed <strong>ESB</strong> Containers:<br />

In this example, the <strong>ESB</strong> Container VerificationContainer is selected so its properties<br />

are displayed.You can edit the properties for the selected container (except its name),<br />

as described in “Creating <strong>ESB</strong> Containers” on page 55.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 59


Chapter 2: <strong>ESB</strong> Containers<br />

Managing the Services Associated with an <strong>ESB</strong> Container<br />

Services <strong>ESB</strong> Containerare deployed in <strong>ESB</strong> Containers. The following procedure shows<br />

how to view information about the services in an <strong>ESB</strong> Container.<br />

◆ To view the services associated with an <strong>ESB</strong> Container:<br />

1. In the left panel in the <strong>Sonic</strong> <strong>Management</strong> Console, under the <strong>ESB</strong> Configured<br />

Objects node, exp<strong>and</strong> the <strong>ESB</strong> Containers folder <strong>and</strong> select an <strong>ESB</strong> Container. The<br />

right panel displays information for the selected <strong>ESB</strong> Container. For example, select<br />

dev_<strong>ESB</strong>Core.<br />

You can sort the list of services by Name, Type, Listeners, or Entry Endpoint.<br />

2. Select a service to display information for that service, for example, dev.CBR:<br />

60 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Managing the Services Associated with an <strong>ESB</strong> Container<br />

Adding Services or <strong>ESB</strong> Process Entry Points to an <strong>ESB</strong> Container<br />

Follow this procedure to add a service or <strong>ESB</strong> process entry point to an <strong>ESB</strong> Container.<br />

◆ To add a service or <strong>ESB</strong> process entry point to an <strong>ESB</strong> Container:<br />

1. In the left panel in the <strong>Sonic</strong> <strong>Management</strong> Console, under the <strong>ESB</strong> Configured<br />

Objects node, exp<strong>and</strong> the <strong>ESB</strong> Containers folder, <strong>and</strong> then select an <strong>ESB</strong> Container.<br />

2. In the right panel, click New.<br />

The Select Service or Process to Add to Container dialog box opens. To constrain<br />

the list to services or processes, set either the Show Services or the Show Processes<br />

icons.<br />

Show Services<br />

Show Processes<br />

You can select from available services <strong>and</strong> <strong>ESB</strong> processes, or create services <strong>and</strong> <strong>ESB</strong><br />

processes from this dialog box.<br />

You can sort the list by Name, Type, <strong>and</strong>/or Category.<br />

a. Select a service or <strong>ESB</strong> process <strong>and</strong> click OK to return to the <strong>Sonic</strong> <strong>Management</strong><br />

Console.<br />

b. Click Apply. <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> adds your selection to the list in the top right<br />

panel.<br />

3. To add a new service, select New > Service in the Select Service or Process to Add<br />

to Container dialog box, <strong>and</strong> select a service type from the list. The Configure<br />

Service dialog box for that service opens.<br />

a. Enter, accept, or select values for the fields in the Configure Service dialog box.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 61


Chapter 2: <strong>ESB</strong> Containers<br />

b. Click OK to close the Configure Service dialog box. Your new service now<br />

appears in the list of services <strong>and</strong> <strong>ESB</strong> processes in the Select Service or Process<br />

to Add to Container dialog box.<br />

c. Select your new service <strong>and</strong> click OK to close the Select Service or Process to<br />

Add to Container dialog box. Your new service is now set in the Service/Process<br />

Maintenance area.<br />

4. To add an <strong>ESB</strong> process, select New > Process in the Select Service or Process to Add<br />

to Container dialog box, <strong>and</strong> select an <strong>ESB</strong> process type from the list, then click<br />

New.... The Configure Process dialog box opens.<br />

a. Enter, accept, or select values for the fields in the Configure Process dialog box.<br />

Click OK to close the Configure Process dialog box. Your new <strong>ESB</strong> process now<br />

appears in the list of services <strong>and</strong> <strong>ESB</strong> processes in the Select Service or Process<br />

to Add to Container dialog box.<br />

b. Select the new <strong>ESB</strong> process <strong>and</strong> click OK to close the Select Service or Process<br />

to Add to Container dialog box. Your new <strong>ESB</strong> process is now set in the<br />

Service/Process Maintenance area.<br />

Important When you add a service or process to an <strong>ESB</strong> Container, the container must be restarted<br />

to implement the changes.<br />

Deleting <strong>ESB</strong> ContainerServices from an <strong>ESB</strong> Container<br />

Follow this procedure to delete a service from an <strong>ESB</strong> Container.<br />

◆ To delete a service from an <strong>ESB</strong> Container:<br />

1. In the left panel in the <strong>Sonic</strong> <strong>Management</strong> Console, under the <strong>ESB</strong> Configured<br />

Objects node, exp<strong>and</strong> the <strong>ESB</strong> Containers folder <strong>and</strong> select an <strong>ESB</strong> Container.<br />

2. Select the service <strong>and</strong> click Delete.<br />

3. Confirm your selection. <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> removes the selection from the list.<br />

Important When you delete a service or process from an <strong>ESB</strong> Container, the container must be<br />

restarted to implement the changes.<br />

62 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Deploying an <strong>ESB</strong> Container in a <strong>Management</strong> Container<br />

Changing the Number of Listeners on Services in <strong>ESB</strong> Containers<br />

You can edit a service to change the number of listeners. Each listener is a thread.<br />

◆ To edit the number of listeners on a service associated with an <strong>ESB</strong> Container:<br />

1. In the left panel in the <strong>Sonic</strong> <strong>Management</strong> Console, under the <strong>ESB</strong> Configured<br />

Objects node, exp<strong>and</strong> the <strong>ESB</strong> Containers folder <strong>and</strong> select an <strong>ESB</strong> Container.<br />

2. In the right panel, select a service whose listeners you want to edit.<br />

3. Change the number of listeners to the value you prefer.<br />

4. After you make a change, click Apply to commit the changes.<br />

Important When you modify a service or process in an <strong>ESB</strong> Container, the container must be<br />

restarted to implement the changes.<br />

Deploying an <strong>ESB</strong> Container in a <strong>Management</strong> Container<br />

An <strong>ESB</strong> Container is deployed as a component in a management container. A component<br />

is a software object meant to interact with other components, <strong>and</strong> encapsulating certain<br />

functionality. A component has clearly defined interfaces <strong>and</strong> conforms to a prescribed<br />

behavior common to all similar components within an architecture.<br />

The following table lists the appropriate sections in the “Configuring Containers <strong>and</strong><br />

Collections” chapter in the <strong>Progress</strong> <strong>Sonic</strong>MQ <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong><br />

that describe how to deploy an <strong>ESB</strong> Container in a container <strong>and</strong> other information about<br />

containers.<br />

Topic Section<br />

Creating a management container “Configuring Containers”<br />

Adding an <strong>ESB</strong> Container as a component in a<br />

management container<br />

“Configuring Container Components”<br />

Generating a management container boot file “Generating Container Boot Files”<br />

Using fault tolerant (backup) management containers<br />

(Also see the <strong>Sonic</strong>MQ Deployment <strong>Guide</strong> chapter<br />

“Fault Tolerant Application Containers.”)<br />

Note that there is no configuration for a fault tolerant<br />

<strong>ESB</strong> Container.<br />

“Generating Containers”<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 63


Chapter 2: <strong>ESB</strong> Containers<br />

Setting Test Mode for <strong>ESB</strong> Containers Used in Development<br />

To use a new <strong>ESB</strong> Container, the <strong>Sonic</strong> Workbench requires that you set the <strong>ESB</strong><br />

Container’s property TEST_CONTAINER_MODE to true.<br />

◆ To set an <strong>ESB</strong> Container to Test Mode:<br />

1. Create an <strong>ESB</strong> Container, <strong>and</strong> then create a management container.<br />

2. Add the <strong>ESB</strong> Container to the management container as a component.<br />

3. Click on the management container. On the right panel, right-click on the <strong>ESB</strong><br />

Container component, <strong>and</strong> then choose Properties.<br />

4. Choose the Deployment Parameters tab, <strong>and</strong> then click Add.<br />

5. In the New Deployment Parameter dialog box, enter the Name TEST_CONTAINER_MODE<br />

<strong>and</strong> the Value true. Click OK.<br />

6. The deployment parameter appears as shown:<br />

7. Click OK to apply the setting.<br />

64 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Adding JAR files to an <strong>ESB</strong> Container<br />

Deploying an <strong>ESB</strong> Container in a <strong>Management</strong> Container<br />

When you have JAR files used by the <strong>ESB</strong> Container, you need to import the .jar files<br />

into the domain, <strong>and</strong> then set the classpath for each <strong>ESB</strong> Container that references classes<br />

in those archives. The following procedure explains how to import a .jar file <strong>and</strong> set the<br />

classpath for an <strong>ESB</strong> Container.<br />

◆ To import a .jar file <strong>and</strong> set the classpath for an <strong>ESB</strong> Container:<br />

1. In the <strong>Sonic</strong> <strong>Management</strong> Console’s Configure tab, select the configuration path<br />

where you want to locate the .jar file.<br />

2. Select Action > Import. The archive is imported into the domain. In the following<br />

example, a folder named myJars was created in the Resources folder, <strong>and</strong> then, with<br />

the new folder selected, the archive myJarOne.jar was imported from the file system.<br />

3. Exp<strong>and</strong> the <strong>ESB</strong> Containers folder, right-click on the <strong>ESB</strong> Container for which you<br />

want to add the classpath, <strong>and</strong> select Properties.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 65


Chapter 2: <strong>ESB</strong> Containers<br />

4. Click the Resources tab, <strong>and</strong> then click Add. Navigate to your imported .jar file.<br />

The sonicfs:/// prefix is added when you browse to the file location, as shown:<br />

5. Click OK to close the Add Classpath dialog box, then click OK to close the<br />

Edit <strong>Sonic</strong> <strong>ESB</strong> Containers Properties dialog box. The .jar file is now on the<br />

container classpath.<br />

6. Reload the container. You do not have to restart it.<br />

Note You usually import archives <strong>and</strong> their classpath reference during the import process of<br />

the service type.<br />

66 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Changing the State of <strong>Management</strong> <strong>and</strong> <strong>ESB</strong> Containers<br />

Changing the State of <strong>Management</strong> <strong>and</strong> <strong>ESB</strong> Containers<br />

Follow this procedure to view <strong>and</strong> change the state of management containers <strong>and</strong> <strong>ESB</strong><br />

Containers.<br />

◆ To view <strong>and</strong> change the state of management containers <strong>and</strong> <strong>ESB</strong> Containers:<br />

1. Select the Manage tab in <strong>Sonic</strong> <strong>Management</strong> Console <strong>and</strong> select the folder that<br />

contains the management containers.<br />

Container state can be Online, Offline, or Unavailable.<br />

You can sort the list of management containers by Name, State, or Last Error.<br />

For each management container, you can view its <strong>ESB</strong> containers; <strong>and</strong> for each <strong>ESB</strong><br />

container, you can view its <strong>ESB</strong> services <strong>and</strong> <strong>ESB</strong> processes.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 67


Chapter 2: <strong>ESB</strong> Containers<br />

2. You can select a management container, right click, <strong>and</strong> select Operations to:<br />

Operation Description<br />

Launch Launches the container (provided that management container is<br />

on the activation list of a running Activation Daemon deployed<br />

where the management container is deployed.)<br />

Choosing to launch lets you choose the activation <strong>and</strong> then the<br />

container to launch.<br />

Restart Restarts the container<br />

Shutdown Shuts down the container<br />

Reset Metrics Resets container-wide metrics<br />

Invoke Diagnostics... Opens the <strong>Sonic</strong> Diagnostics dialog box.<br />

For more information on management container operations, see the “Managing<br />

Containers <strong>and</strong> Collections” chapter in the <strong>Progress</strong> <strong>Sonic</strong>MQ <strong>Configuration</strong> <strong>and</strong><br />

<strong>Management</strong> <strong>Guide</strong>.<br />

Warning Do not include an external jndi.properties file in the classpath of an <strong>ESB</strong> Container (or<br />

even the classpath of the JVM used to launch the container), as this will prevent starting<br />

the management container hosting the <strong>ESB</strong> Container.<br />

3. You can select a management container, right click, <strong>and</strong> select Container Log to:<br />

Operation Description<br />

View Views the contents of the container log.<br />

Clear Clear the contents of the container log.<br />

Save to File... Saves the container log to a file.<br />

68 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Changing the State of <strong>Management</strong> <strong>and</strong> <strong>ESB</strong> Containers<br />

4. Select the management container you want to view. In this example, the management<br />

container, dev_<strong>ESB</strong>Core, contains an <strong>ESB</strong> container of the same name<br />

(dev_<strong>ESB</strong>Core), whose state is Online:<br />

An <strong>ESB</strong> Container’s state is Online, Offline, or Unavailable.<br />

You can sort the list of <strong>ESB</strong> Containers by Name, State, or Last Error. For each <strong>ESB</strong><br />

container, you can view its <strong>ESB</strong> services <strong>and</strong> <strong>ESB</strong> processes. The color of each <strong>ESB</strong><br />

service or process indicates its state (green indicates the service or process is online,<br />

<strong>and</strong> red indicates the service or process is offline or in an error state.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 69


Chapter 2: <strong>ESB</strong> Containers<br />

5. To perform operations on an <strong>ESB</strong> Container, right click on it, then select Operations:<br />

Operation Description<br />

Start Starts the <strong>ESB</strong> Container<br />

Stop Stops the <strong>ESB</strong> Container<br />

Reload Unloads the <strong>ESB</strong> Container, reloads configuration information, <strong>and</strong><br />

restarts services in the <strong>ESB</strong> Container<br />

Abort Aborts the <strong>ESB</strong> container, its <strong>ESB</strong> services, <strong>and</strong> its <strong>ESB</strong> processes.<br />

Clear Error Clears the last error.<br />

Reset Metrics Resets container-wide metrics.<br />

For more information on component operations (<strong>ESB</strong> Containers are components in<br />

management containers), see the “Managing Containers <strong>and</strong> Collections” chapter in<br />

the <strong>Progress</strong> <strong>Sonic</strong>MQ <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>and</strong> the Contaniers<br />

view in the <strong>Sonic</strong> Workbench.<br />

6. To perform operations on an <strong>ESB</strong> service, right click on it, then select Operations:<br />

Operation Description<br />

Start Starts the <strong>ESB</strong> service.<br />

Stop Stops the <strong>ESB</strong> service.<br />

Abort Aborts the <strong>ESB</strong> service.<br />

For more information on <strong>ESB</strong> container <strong>and</strong> <strong>ESB</strong> service lifecycle operations, see the<br />

<strong>Progress</strong> <strong>Sonic</strong> Workbench User <strong>Guide</strong> in the <strong>Sonic</strong> Workbench online help.<br />

70 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Monitoring Service Metrics <strong>and</strong> Notifications<br />

Monitoring Service Metrics <strong>and</strong> Notifications<br />

All <strong>ESB</strong> services deployed in an <strong>ESB</strong> container support st<strong>and</strong>ard metrics <strong>and</strong><br />

notifications.<br />

St<strong>and</strong>ard Metrics<br />

All <strong>ESB</strong> services deployed in an <strong>ESB</strong> container support the following metrics:<br />

● esb.service.messages.Received — Records the number of message envelopes<br />

received—that is, the number of times service has been invoked on the service<br />

instance. This metric includes any messages received intracontainer, through<br />

dynamically registered entry endpoints, <strong>and</strong> so on.<br />

● esb.service.messages.ReceivedIntraContainer — Records the number of message<br />

envelopes received intracontainer.<br />

● esb.service.messages.ReceivedPerSecond — Records the rate per second at which<br />

this service has been invoked over the collection interval.<br />

● esb.service.messages.ReceivedPerMinute — Records the rate per minute at which<br />

this service has been invoked over the collection interval.<br />

● esb.service.messages.ReceivedPerHour — Records the rate per hour at which this<br />

service has been invoked over the collection interval.<br />

● esb.service.messages.Rejected — Records the number of message envelopes that<br />

were rejected by the service instance.<br />

● esb.service.messages.Faulted — Records the number of message envelopes that<br />

produced faults. This metric does not record the actual number of fault messages<br />

produced, as in some cases a single invocation can result in many fault messages.<br />

● esb.service.messages.AverageProcessingTime — Records the average time (in ms) it<br />

has taken to process a message. This measures the time for the service instance to<br />

return from a call to service; it does not account for processing time before the <strong>ESB</strong><br />

framework passes the message to the service instance, or processing time after the<br />

service instance has returned control to the <strong>ESB</strong> framework.<br />

● esb.service.messages.SentWithDispatch — Records the number of messages sent<br />

using XQDispatch.<br />

● esb.service.messages.SentToOutbox — Records the number of messages sent to the<br />

service outbox. A single message received may result in zero, one, or many messages<br />

in the outbox.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 71


Chapter 2: <strong>ESB</strong> Containers<br />

◆ To enable a service metric:<br />

1. Open the <strong>Sonic</strong> <strong>Management</strong> Console, <strong>and</strong> connect to the domain you are managing.<br />

2. Select the Configure tab to specify persistent settings, or select the Manage tab to<br />

specify temporary or overriding settings.<br />

3. Select a running <strong>ESB</strong> Container.<br />

4. Right-click on the <strong>ESB</strong> container <strong>and</strong> select Metrics.... The Monitoring dialog box<br />

opens with its Metrics tab:<br />

5. Select one metric or a group of metrics (by selecting the parent folder) <strong>and</strong> select<br />

Enable. The <strong>Sonic</strong> <strong>Management</strong> Console enables the metrics you selected, for<br />

example, the entire group of message metrics:<br />

If you select an individual metric, more options become available. You can disable<br />

the metric or watch the metric in a Metrics Watcher window in both a bar chart <strong>and</strong><br />

72 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Monitoring Service Metrics <strong>and</strong> Notifications<br />

line graph. For information on setting metrics using instances, patterns, <strong>and</strong> groups,<br />

as well as general information on metrics, see the “Monitoring” chapter in the<br />

<strong>Progress</strong> <strong>Sonic</strong>MQ <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong>.<br />

St<strong>and</strong>ard Notifications<br />

Notifications are associated with the delivery of event information. The <strong>ESB</strong> Container<br />

registers service notifications with the management container. The <strong>Sonic</strong> <strong>Management</strong><br />

Console subscribes to notifications <strong>and</strong> can display notifications in a Watch window.<br />

The following st<strong>and</strong>ard service notifications are supported:<br />

● Service started successfully<br />

● Service failed to start<br />

● Service stopped successfully<br />

● Service failed to stop<br />

● Service aborted<br />

◆ To monitor notifications:<br />

1. Open the <strong>Sonic</strong> <strong>Management</strong> Console <strong>and</strong> select the Manage tab.<br />

2. Select a running <strong>ESB</strong> Container, right-click on the container, <strong>and</strong> select<br />

Notifications... . The Monitoring dialog box opens with its Notifications tab:<br />

3. You can select one or more notifications, <strong>and</strong> for each notification, select Watch <strong>and</strong><br />

select whether to watch:<br />

■ By Component (<strong>ESB</strong> Container)<br />

■ By Container (management container)<br />

■ By Domain<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 73


Chapter 2: <strong>ESB</strong> Containers<br />

The <strong>Sonic</strong> <strong>Management</strong> Console marks notifications that are being watched:<br />

The <strong>Sonic</strong> <strong>Management</strong> Console opens a Notification Watcher.<br />

For general information on notifications <strong>and</strong> on watching notifications <strong>and</strong> viewing<br />

notification attributes, see the “Monitoring” chapter in the <strong>Progress</strong> <strong>Sonic</strong>MQ<br />

<strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong>.<br />

See also the <strong>Progress</strong> <strong>Sonic</strong>MQ Administrative Programming <strong>Guide</strong> <strong>and</strong> the <strong>Progress</strong><br />

<strong>Sonic</strong> Event Monitor User’s <strong>Guide</strong> documentation for information on other options for<br />

tracking these notifcations.For information on watching <strong>and</strong> disabling metrics, as well as<br />

general information on metrics, see the “Monitoring” chapter in the <strong>Progress</strong> <strong>Sonic</strong>MQ<br />

<strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong>.<br />

Enabling Integration with Actional for Visualization<br />

An <strong>ESB</strong> Container can integrate with Actional, the enterprise-class management <strong>and</strong><br />

runtime governance solution that enables users to secure, govern <strong>and</strong> manage Web<br />

services <strong>and</strong> SOA processes from end to end. Actional gathers message data <strong>and</strong> enforces<br />

policy as messages flow through the Services Network, dynamically mapping each <strong>and</strong><br />

every transaction.<br />

The Actional Agent is a separately licensed component in the Actional product family.<br />

The Actional Agent software includes interceptors (included in an <strong>ESB</strong> installation) <strong>and</strong><br />

the st<strong>and</strong>alone Analyzer which must be installed separately. The interceptor monitors<br />

traffic flowing through the <strong>ESB</strong>, while the Analyzer collects information from the<br />

interceptor <strong>and</strong> forwards statistical information to an instance of the Looking Glass Server<br />

(also available separately).<br />

74 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Enabling Integration with Actional for Visualization<br />

The Actional Agent can analyze Web service <strong>and</strong> JMS traffic on the Enterprise Service<br />

Bus. When you enable Actional’s interceptor technology on existing <strong>ESB</strong> infrastructures,<br />

the Analyzer lets you gather data from this interceptor <strong>and</strong> communicate with an instance<br />

of Actional Server.<br />

The Actional <strong>ESB</strong> Interceptor is included in an <strong>ESB</strong> installation; however, it is not<br />

enabled by default. To use the Actional Agent to manage <strong>ESB</strong> services <strong>and</strong> processes,<br />

connect the <strong>Sonic</strong> <strong>Management</strong> Console to a <strong>Sonic</strong> domain you want to instrument, <strong>and</strong><br />

then select the option to Enable Actional Instrumentation on each <strong>ESB</strong> Container you<br />

want to enable, as shown:<br />

To activate an enabled interceptor requires that the Actional Agent is installed <strong>and</strong><br />

running, <strong>and</strong> that the Agent node is under management by an Actional Server.<br />

If the Actional Agent is not running before the instrumented <strong>Sonic</strong> <strong>ESB</strong> Containers are<br />

started, you must restart the enabled <strong>Sonic</strong> <strong>ESB</strong> Containers to activate the Actional<br />

visualization feature.<br />

Important If the Actional Agent is installed with a non-default \link directory (the directory where<br />

the Actional Agent creates Uplink.cfg), you must specify the path to the link directory<br />

as a Java system property on the Environment tab of each management container’s<br />

properties with the Variable name com.actional.lg.interceptor.config <strong>and</strong>, for the<br />

Value, the complete path, such as usr1/aUser/Actional/ActionalAgent/LG.Interceptor.<br />

Note When using Actional to view an <strong>ESB</strong> process that makes a SOAP web service call, the<br />

display might not be correct if that web service is running on a machine which is under<br />

Actional management. The process <strong>and</strong> the remote web service might appear to be<br />

disconnected. To view these interactions properly, remove the web service from<br />

management through the Actional Server administration interface. Web services that are<br />

running on unmanaged Actional nodes are not affected by this <strong>and</strong> render correctly.<br />

See www.progress.com/actional for more information. The “Instrumenting <strong>Sonic</strong> <strong>ESB</strong>”<br />

chapter in the Actional Interceptor <strong>Guide</strong> in the Actional Agent documentation set<br />

provides details <strong>and</strong> illustrations of this feature.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 75


Chapter 2: <strong>ESB</strong> Containers<br />

Logging <strong>and</strong> Tracing<br />

You can turn debug tracing on <strong>and</strong> off for <strong>ESB</strong> Containers <strong>and</strong> specify logging categories<br />

to send messages to the container’s message log. The following procedures describe how<br />

to specify logging <strong>and</strong> tracing <strong>and</strong> how to make the settings permanent.<br />

For more information on logging <strong>and</strong> tracing, see the “Managing Containers <strong>and</strong><br />

Collections” chapter in the <strong>Progress</strong> <strong>Sonic</strong>MQ <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong>.<br />

◆ To specify logging <strong>and</strong> tracing for an <strong>ESB</strong> Container:<br />

1. In the <strong>Sonic</strong> <strong>Management</strong> Console, select the Manage tab <strong>and</strong> select the management<br />

container that hosts the <strong>ESB</strong> Container.<br />

2. Right-click on the <strong>ESB</strong> Container <strong>and</strong> select Properties.<br />

3. The identity <strong>and</strong> status of the <strong>ESB</strong> Container is displayed:<br />

76 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Logging <strong>and</strong> Tracing<br />

4. Select the Tracing tab <strong>and</strong> then select tracing bit masks. In this example, Verbose, Set<br />

Attributes, <strong>and</strong> Enable Debug Messages are selected.:<br />

These settings include:<br />

■ Enable Debug Messages (16) — Enables application code to generate log output<br />

■ <strong>ESB</strong> Invocation Script Tracing (64) — Logs generic script engine events<br />

■ Message Dispatch Tracing (128) — Traces in, out, <strong>and</strong> fault messages<br />

■ JMS Endpoint Tracing (256) — Traces events related to endpoint creation <strong>and</strong><br />

usage<br />

■ <strong>ESB</strong> Container Tracing (512) — Traces <strong>ESB</strong> Container-specific events, for<br />

example, lifecycle events<br />

5. Click OK to apply the settings.<br />

Setting tracing on the running container sets it only for the current execution of the<br />

container. Restarting the container resets the tracing selections to their st<strong>and</strong>ard<br />

configuration values.<br />

The following procedure describes how to set st<strong>and</strong>ard configuration values so that the<br />

tracing options are set whenever the <strong>ESB</strong> Container starts.<br />

Important While tracing provides valuable information, the logs grow faster than usual when tracing<br />

settings are always active. Try some tracing settings <strong>and</strong> observe the amount of data that<br />

they add to the logs. Then, try to reserve verbose settings to debugging activities only.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 77


Chapter 2: <strong>ESB</strong> Containers<br />

◆ To make logging <strong>and</strong> tracing for an <strong>ESB</strong> Container permanent:<br />

1. On the Configure tab in the <strong>Sonic</strong> <strong>Management</strong> Console, select the management<br />

container that hosts the <strong>ESB</strong> Container on which you want to maintain logging <strong>and</strong><br />

tracing.<br />

2. In the right panel, right-click on the <strong>ESB</strong> Container,<strong>and</strong> then select Properties.<br />

3. In the Edit Container Component Properties dialog box, enter the sum of the integer<br />

values for each tracing bit you want to set, as specified in the Edit <strong>Sonic</strong> <strong>ESB</strong><br />

Container Properties dialog box.<br />

In this example, Verbose (1), Set Attributes (2), <strong>and</strong> Enable Debug Messages(16) are<br />

intended so the sum of 1+2+16, 19 is entered as the Tracing Mask value as shown:<br />

These tracing bits are set in the runtime whenever this container starts.<br />

4. Click OK to apply the setting. The changed value is immediately applied to the<br />

runtime settings.<br />

Note Tracing options are also available on the management container as temporary runtime<br />

overrides <strong>and</strong> st<strong>and</strong>ard settings that are re-established when the management container<br />

restarts.<br />

78 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Using Activation Daemons<br />

Using Activation Daemons<br />

Using an Activation Daemon is a way to launch new containers as spawned processes of<br />

the container hosting the Activation Daemon. This allows new containers to be launched<br />

by remote administrative clients without the administrator having to log on to that host. A<br />

typical use would be to have the container hosting the Activation Daemon launched as a<br />

Windows service on Windows platforms or a startup process under UNIX.<br />

An Activation Daemon monitors the health of its spawned containers <strong>and</strong>, depending on<br />

configured rules, restarts those containers upon failure. Normally, one Activation Daemon<br />

is deployed per host. Multiple Activation Daemons can be created per domain.<br />

Containers can be launched by the Activation Daemon:<br />

● At Activation Daemon startup time<br />

● At a configured time<br />

● After a container failure (up to a configurable number of retries)<br />

● On dem<strong>and</strong> from the <strong>Sonic</strong> <strong>Management</strong> Console or through the Activation<br />

Daemon’s management API (see the “Using the Runtime API for the <strong>Sonic</strong><br />

<strong>Management</strong> Environment” chapter in the <strong>Progress</strong> <strong>Sonic</strong>MQ Administrative<br />

Programming <strong>Guide</strong>)<br />

This section demonstrates how to create <strong>and</strong> configure an Activation Daemon to start an<br />

<strong>ESB</strong> Container. As an example, the procedures describe how to create an Activation<br />

Daemon to automatically start the Service5 container when the Activation Daemon’s<br />

container starts. See the “Configuring Framework Components” chapter in the <strong>Progress</strong><br />

<strong>Sonic</strong>MQ <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> for detailed information on using<br />

Activation Daemons. The steps required to create, configure, <strong>and</strong> test the Activation<br />

Daemon are:<br />

1. “Creating an Activation Daemon” on page 80<br />

2. “Adding an Activation Daemon to a <strong>Management</strong> Container” on page 80<br />

3. “Adding an <strong>ESB</strong> Container to an Activation Daemon’s Activation List” on page 82<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 79


Chapter 2: <strong>ESB</strong> Containers<br />

Creating an Activation Daemon<br />

Create an Activation Daemon from the <strong>Sonic</strong> <strong>Management</strong> Console, as shown in the<br />

following procedure. As an example, this procedure creates AD_for_Services.<br />

◆ To create an Activation Daemon:<br />

1. Start the domain manager where you want to manage the configurations.<br />

2. Start the <strong>Sonic</strong> <strong>Management</strong> Console, <strong>and</strong> then connect to the domain manager.<br />

See “Overview” on page 22 for instructions.<br />

3. In the <strong>Sonic</strong> <strong>Management</strong> Console’s Configure tab, right-click the folder where you<br />

want to create the new configurations. For this example, choose Containers.<br />

4. Right-click on the folder, <strong>and</strong> then choose New > <strong>Configuration</strong> > <strong>Sonic</strong> <strong>Management</strong><br />

Environment > Activation Daemon. For this example, name it AD_for_Services.<br />

The New Activation Daemon dialog box opens.<br />

5. Specify the name of the Activation Daemon in the Name field.<br />

6. Click OK.<br />

Adding an Activation Daemon to a <strong>Management</strong> Container<br />

The following procedure shows how to add an Activation Daemon to a management<br />

container. Typically, an Activation Daemon hosts the Activation Daemon in a<br />

management container of its own <strong>and</strong> to assign other management containers to the<br />

Activation Daemon’s activation list (which will, in turn, start their hosted components.<br />

(See “Using Activation Daemons” in the <strong>Progress</strong> <strong>Sonic</strong> Installation <strong>and</strong> Upgrade <strong>Guide</strong><br />

for an illustration.)<br />

As an example, this procedure adds a new Activation Daemon named AD_Services to a<br />

new management container. When the management container starts, it will start this<br />

Activation Daemon, <strong>and</strong> the daemon will launch its hosted components.<br />

80 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


◆ To add an activation daemon to a management container:<br />

Using Activation Daemons<br />

1. In the <strong>Sonic</strong> <strong>Management</strong> Console’s Configure tab, right-click the folder where you<br />

want to create the new configurations. For this example, choose Containers.<br />

2. Choose New > <strong>Configuration</strong> > Shortcut to Container. For this example, name the<br />

container AD_for_Services_on_myHost. Adjust the connection URL <strong>and</strong> the<br />

username <strong>and</strong> password for management communications in the domain.<br />

3. Right-click on the container you created, <strong>and</strong> select Add Component. In the New<br />

Container Component dialog box’s General tab specify:<br />

Property Description<br />

Name The name of the component you want to add to the container.<br />

For this example, enter AD_for_Services.<br />

Component Click ... to open the Choose Component dialog box. For this example,<br />

choose /Containers/AD_for_Services.<br />

Auto Start Specifies whether to automatically start the component when the hosting<br />

container starts. For this example, check Auto Start.<br />

Tracing Mask Enter the tracing mask integer for this component.<br />

For this example, the New Container Component dialog box should look like this:<br />

4. Click OK to add the component to the container.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 81


Chapter 2: <strong>ESB</strong> Containers<br />

Adding an <strong>ESB</strong> Container to an Activation Daemon’s Activation List<br />

The following procedure describes how to add a management container that hosts an <strong>ESB</strong><br />

Container an Activation Daemon’s activation list. As an example, this procedure adds the<br />

Service5 management container which hosts an <strong>ESB</strong> Container of the same name.<br />

◆ To add an <strong>ESB</strong> Container to an Activation Daemon’s activation list:<br />

1. In the <strong>Sonic</strong> <strong>Management</strong> Console’s Configure tab, navigate to the Activation<br />

Daemon you created, then right-click on it.<br />

2. Choose Add Container to Activation List.<br />

3. Under the General tab, specify the following properties:<br />

Property Description<br />

Container Name of the container to associate with the Activation Daemon.<br />

For this example, select ... then select Containers\Service5 Container <strong>and</strong><br />

click OK.<br />

Number of<br />

Retries<br />

Number of times the <strong>ESB</strong> ContainerActivation Daemon should attempt to<br />

restart the spawned container. For this example, use the value 4 instead of<br />

the default value, 0.<br />

Retry Interval Number of seconds between attempts by the Activation Daemon to restart<br />

the spawned container. For this example, use the value 15 instead of the<br />

default value, 0.<br />

For this example, your Add Container to Activation List dialog box looks like this:<br />

82 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Using Activation Daemons<br />

4. Click OK. The <strong>Sonic</strong> <strong>Management</strong> Console associates the Activation Daemon with<br />

the container you selected.<br />

In this example, Service5 Container is added to the list of management containers for<br />

AD_for_Services <strong>and</strong> will try to start four times at fifteen second intervals.<br />

Note Setting JVM System Properties on a <strong>Management</strong> Container<br />

You can maintainthe JVM system properties for a management container that is on an<br />

Activation Daemon’s activation list by using the <strong>Sonic</strong> <strong>Management</strong> Console to open the<br />

management container’s Properties, <strong>and</strong> then choosing the Environment tab.<br />

For example to specify the JNDI Initial Naming Context, specify the JVM system<br />

property java.naming.factory.initial <strong>and</strong> set it to the<br />

valuecom.sonicsw.xqimpl.jndi.spi.XQTNSContextFactory<br />

Additional classpath settings are also set in the management container configuration.<br />

For more information on management containers <strong>and</strong> their environment settings, see the<br />

“Configuring Containers <strong>and</strong> Collections” chapter in the <strong>Progress</strong> <strong>Sonic</strong>MQ<br />

<strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong>.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 83


Chapter 2: <strong>ESB</strong> Containers<br />

84 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Chapter 3 <strong>ESB</strong> Endpoints <strong>and</strong> Connections<br />

This chapter first references to endpoints <strong>and</strong> <strong>ESB</strong> addresses, <strong>and</strong> then shows how they<br />

are configured. Then connections are presented <strong>and</strong> shows how they are configured.<br />

The chapter contains the following sections:<br />

● “Overview”<br />

● “<strong>ESB</strong> Addresses <strong>and</strong> References to Endpoints”<br />

● “Evaluating Endpoint Requirements on JMS Destinations”<br />

● “Configuring <strong>Progress</strong> <strong>Sonic</strong>MQ Endpoints”<br />

● “Fault Tolerant Connections <strong>and</strong> Reconnection”<br />

● “Every endpoint has an associated connection. The following procedure describes<br />

how to view existing connections <strong>and</strong> configure a new connection.”<br />

Note In the development environment, the <strong>Sonic</strong> Workbench h<strong>and</strong>les the creation of endpoints<br />

<strong>and</strong> connections. For more information, see the <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Product Family<br />

Developer’s <strong>Guide</strong> in the Eclipse help.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 85


Chapter 3: <strong>ESB</strong> Endpoints <strong>and</strong> Connections<br />

Overview<br />

<strong>ESB</strong> endpoints <strong>and</strong> connections enable communication among services. Endpoints are<br />

destinations where <strong>ESB</strong> services send <strong>and</strong> receive messages. The definition of an endpoint<br />

includes its connection, the URL address where the destination resides. An application<br />

accesses a service by sending a request to the service’s entry endpoint.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> endpoints include Java Messaging Service (JMS) destinations—<br />

queues <strong>and</strong> topics—that are accessed through connections to <strong>Sonic</strong>MQ messaging<br />

brokers. Endpoints provide queuing <strong>and</strong> persistence between services. This persistence<br />

allows an <strong>ESB</strong> process to be fault-tolerant <strong>and</strong> provides an overall Quality of Service<br />

(QoS) that can guarantee processing in case of provider failure.<br />

Endpoints are defined by three sets of properties:<br />

● Name — A globally unique name for accessing the endpoint<br />

● Connection — The logical connection that instantiates the endpoint<br />

● Parameters — The specific parameters within the logical connection that distinguish<br />

the endpoint (for example, the name of a <strong>Progress</strong> <strong>Sonic</strong>MQ queue or topic)<br />

The following view of an endpoint in the <strong>ESB</strong> Configured Objectssection of the <strong>Sonic</strong><br />

<strong>Management</strong> Console shows some of the properties:<br />

86 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


<strong>ESB</strong> Addresses <strong>and</strong> References to Endpoints<br />

Note Information for service developers — <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> uses endpoints when it<br />

creates listeners for a service Inbox, or when it delivers messages from the Outbox.<br />

However, as a service developer, you can also send messages directly to an endpoint from<br />

inside a service:<br />

● To send messages as the output of the service, you simply place the message in the<br />

service’s Outbox with the appropriate address.<br />

● To send messages synchronously (to wait for a reply on a temporary JMSReplyTo<br />

destination), use the call( ) method on the endpoint.<br />

● To send messages asynchronously, use the XQDispatch.<br />

<strong>ESB</strong> Addresses <strong>and</strong> References to Endpoints<br />

When <strong>ESB</strong> services <strong>and</strong> <strong>ESB</strong> processes are configured, they are associated with an<br />

endpoint that is used to receive messages (the entry endpoint). When messages are<br />

delivered to a service (by the dispatcher), the message is placed in an envelope with an<br />

address. An address is a generic term for <strong>ESB</strong> processes, services, or endpoints that can<br />

serve as destinations for a service or process exit, fault, or regular message endpoint.<br />

There is also a special REPLY_TO address for services configured as Request/Reply. If the<br />

message sender is a service, the address is interpreted as an endpoint. Messages can be<br />

sent directly to a <strong>ESB</strong> process or service (as well as to the endpoint itself).<br />

<strong>ESB</strong> addresses include:<br />

● Endpoints — A specific destination on a defined connection.<br />

● <strong>ESB</strong> processes — Specifies binding to defined endpoints in their definition. That<br />

endpoint is used in their first step (bypassing the entry endpoint)<br />

● Services — Specifies binding to a defined entry endpoint of the service, or the service<br />

itself when intra-container messaging is in use.<br />

When you define a service or <strong>ESB</strong> process or adapt a service or <strong>ESB</strong> process to a target<br />

domain, you specify four categories of <strong>ESB</strong> addresses: entry, exit, fault, <strong>and</strong> rejected<br />

message. The following sections discuss each of these categories.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 87


Chapter 3: <strong>ESB</strong> Endpoints <strong>and</strong> Connections<br />

Entry Endpoint<br />

An entry endpoint always uses an endpoint address, a destination associated with an<br />

underlying JMS topic or queue used as the entry into an <strong>ESB</strong> process or service. You can<br />

use intra-container messaging to bypass the entry endpoint if the caller is in the same<br />

container (see “<strong>ESB</strong> Container Intra-container Messaging” on page 58). Services that<br />

must be accessed from remote JMS or HTTP clients or from itineraries that start in other<br />

containers should have a JMS-capable entry endpoint.<br />

Exit Endpoint<br />

An exit endpoint can be any type of <strong>ESB</strong> address (or list of addresses.) It is the configured<br />

last destination of an <strong>ESB</strong> process or service. The exit endpoint is typically configured as<br />

REPLY_TO, a specially named endpoint that uses as the reply to destination name set on the<br />

message that started the service operation or <strong>ESB</strong> process. The exit endpoint setting can<br />

be overridden by an <strong>ESB</strong> process.<br />

Fault Endpoint<br />

A fault endpoint can be any type of <strong>ESB</strong> address. It is an endpoint to which application<br />

messages with recoverable errors are sent. Messages are sent to the fault endpoint if<br />

requested by the service.<br />

Each service can have an optional fault endpoint for those messages it cannot h<strong>and</strong>le. The<br />

service decides which messages are sent to the fault endpoint as part of normal<br />

processing. The fault endpoint can contain any valid message<br />

The fault endpoint h<strong>and</strong>les recoverable processing errors (for example, an out-of-stock<br />

notice), <strong>and</strong> interruptions in the normal process that must be h<strong>and</strong>led at the application<br />

level.<br />

The fault endpoint inherits the Quality of Service (QoS) settings of the service application<br />

or <strong>ESB</strong> process.<br />

The fault endpoint is often set as an address to another service or <strong>ESB</strong> process. It might<br />

also be an endpoint (<strong>Progress</strong> <strong>Sonic</strong>MQ destination) or a REPLY_TO destination.<br />

88 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Rejected Message Endpoint<br />

<strong>ESB</strong> Addresses <strong>and</strong> References to Endpoints<br />

The rejected message endpoint (RME) can be any valid XQAddress object including, an<br />

endpoint, a service, <strong>and</strong> an <strong>ESB</strong> process. It h<strong>and</strong>les messages that are an invalid type for<br />

the process, messages that throw exceptions in the service() method of the service, <strong>and</strong><br />

messages that failed to send to their Fault or Outbox addresses. Messages that cannot be<br />

processed are sent to the RME in the event of processing failures. This provides a similar<br />

function to the <strong>Sonic</strong>MQ Dead Message Queue (DMQ).<br />

Every service can have an RME. Messages that cannot be processed are always sent to the<br />

RME in the event of processing failures. The messages are sent to the RME by the<br />

services framework, not directly by the services.<br />

The RME h<strong>and</strong>les:<br />

● Messages that throw exceptions in the service( ) method of the service<br />

● Messages that were in the services Fault box or Outbox, but which could not be<br />

delivered (for example, the queue underlying the <strong>ESB</strong> endpoint does not exist.)<br />

When a message is sent to a rejected message endpoint, it is sent as a multipart message.<br />

The first part provides information about the rejected message, <strong>and</strong> the balance of the<br />

messages is the original message. If the original rejected message was itself a multipart<br />

message, the first part is the information section <strong>and</strong> the other parts follow it in the same<br />

sequence as the original message parts.<br />

The first part is a text/xml message with three sections:<br />

● rejectedCode — A String identifier pointing to the reason for rejection (a list of<br />

rejected codes is available in com.sonicsw.xq.ErrorCodes)<br />

● rejectedLocation — The location of the failure; it can have these optional attributes:<br />

■ locationName —The name of the computer where the rejection occurred<br />

■ containerName — The name of the <strong>ESB</strong> Container that rejected the message<br />

■ serviceName — The name of the service that rejected the message<br />

■ processName — The name of the <strong>ESB</strong> process that was performing the action<br />

■ stepName — The name of the process step at which the message was rejected<br />

● rejectedString — Details of the failure, including a stack trace of the failure or<br />

exceptions causing the rejected message<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 89


Chapter 3: <strong>ESB</strong> Endpoints <strong>and</strong> Connections<br />

Rejected Message Behavior Under Failure Conditions<br />

This section describes the behavior of the process framework under various failure<br />

conditions. Where appropriate, the com.sonicsw.xq.ErrorCode value is provided (the<br />

value of the XXXX element of the rejectedMessageInfo<br />

message).<br />

A service should h<strong>and</strong>le all generated exceptions itself. Normal service exit occurs<br />

through the Outbox. All exception cases are h<strong>and</strong>led by the Fault box.<br />

Abnormal behavior is h<strong>and</strong>led by the dispatcher using the RME. If the service( ) method<br />

throws any exception or error (anything throwable, either java.lang.RuntimeException or<br />

an XQServiceException), the original message is sent to the RME.<br />

The rejectedMessageInfo\rejectedString is the stack trace of linked exceptions:<br />

rejectedCode = XQ_SERVICE_EXCEPTION<br />

Any processing error that occurs in the dispatcher before the message is delivered to the<br />

service( ) method invokes the same RejectedMessageEndpoint behavior. The<br />

rejectedMessageInfo is the stack trace of linked exceptions:<br />

rejectedCode = MESSAGE_RECEIPT_FAILURE<br />

When a QoS discrepancy occurs in the dispatcher between the QoS of the entry endpoint<br />

<strong>and</strong> the QoS of the <strong>ESB</strong> process using it, the rejectedMessageInfo contains the intended<br />

QoS:<br />

rejectedCode = PROCESS_QOS_UNSUPPORTED_AT_ENDPOINT<br />

An error outside the service( ) method, delivering Inbox or Outbox messages, is also<br />

sent to the RME.<br />

The following scenarios result in rejected message processing:<br />

● If the address on an XQMessage in the Outbox or Fault box is invalid or empty:<br />

rejectedCode = SEND_NULL_ADDRESS<br />

● If there is an error sending a message returned from the XQEndpoint.send( ) method:<br />

rejectedCode = XQ_ENDPOINT_EXCEPTION<br />

● If some other error occurs in the dispatcher processing the message:<br />

rejectedCode = MESSAGE_SEND_FAILURE<br />

Time to live for an <strong>ESB</strong> process is checked when the message arrives at the service. If the<br />

current time by the local system clock (measured in GMT) is greater than the <strong>ESB</strong> process<br />

entry timestamp plus timeToLive, the RME is used:<br />

rejectedCode = TIME_TO_LIVE_EXPIRED<br />

Messages sent to the RME have the same QoS as the service from which they are rejected.<br />

90 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Evaluating Endpoint Requirements on JMS Destinations<br />

Evaluating Endpoint Requirements on JMS Destinations<br />

When configuring JMS destinations for your applications, there are several factors to<br />

consider as you prepare to configure the domain. The abstraction of <strong>ESB</strong> services <strong>and</strong><br />

processes from the specifics of the domain architecture make promotion of artifacts<br />

through a series of stages or across various domains a fundamental task reserved for the<br />

deployment manager rather than the developer.<br />

Factors such estimated traffic volumes, available computing resources, the service level<br />

requirements, the topology of the resources—these all contribute to the overall design of<br />

the systems that broker the endpoints.<br />

● Will you run multiple instances of a service for scalability <strong>and</strong> reliability?<br />

■ If so, use queues, or topics with shared subscriptions. Normal topic subscriptions<br />

broadcast a copy of all messages to each service instance.<br />

See “Using Shared Subscriptions to Topics” on page 93.<br />

● What quality of service (QoS) is required?<br />

■ For EXACTLY_ONCE or AT_LEAST_ONCE QoS, messages can be sent PERSISTENT, <strong>and</strong><br />

topic subscribers should be durable.<br />

See “Using Concurrent Durable Subscriptions to Topics” on page 93.<br />

● Are the destinations queues or topics?<br />

■ If other applications are already sending to a destination, you cannot change that<br />

destination.<br />

■ If other applications are listening on the same destinations, you must use topics.<br />

See “When to Use Topics, When to Use Queues” on page 92.<br />

● Does your deployment architecture have multiple brokers, clusters, or nodes?<br />

■ When using queues, decide whether they should be global <strong>and</strong>/or clustered.<br />

■ When using topics, decide whether they should be shared.<br />

See “Multiple Brokers, Clusters, <strong>and</strong> Nodes” on page 95.<br />

The recommended best practice for configuring JMS destinations is to use concurrent<br />

durable subscriptions, which provide durability, scalability, <strong>and</strong> the ability to monitor<br />

your applications.<br />

Note In the <strong>Sonic</strong> development environment, endpoints are, by default, configured as<br />

nonpersistent topics in the underlying <strong>Sonic</strong>MQ domain. That helps ensure that a run or<br />

test of a project does not interfere with subsequent runs after some services have failed<br />

or became unavailable.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 91


Chapter 3: <strong>ESB</strong> Endpoints <strong>and</strong> Connections<br />

Table 1 maps the destination configurations to destination requirements.<br />

Table 1. Mapping Destination Requirements<br />

QoS<br />

AT_LEAST_ONCE<br />

or<br />

EXACTLY_ONCE<br />

Destination<br />

Type Multiple Services Single Service Instances<br />

Topic ● Concurrent durable subscription =<br />

true<br />

● Shared subscriptions = true<br />

● Number of listeners = any number<br />

● Durable subscription name must be<br />

non-null<br />

When to Use Topics, When to Use Queues<br />

● Concurrent durable subscription =<br />

false<br />

● Shared subscriptions = false<br />

● Number of listeners = 1<br />

● Durable subscription name must be<br />

non-null<br />

Queue ● No additional configuration required ● No additional configuration required<br />

BEST_EFFORT Topic ● Concurrent durable subscription =<br />

true<br />

● Shared subscriptions = true<br />

● Number of listeners = any number<br />

● Durable subscription name must be<br />

null<br />

● Concurrent durable subscription =<br />

false<br />

● Shared subscriptions = false<br />

● Number of listeners = 1<br />

● Durable subscription name must be<br />

null<br />

Queue ● No additional configuration required ● No additional configuration required<br />

When deciding whether to use queues or topics in your applications, consider that the<br />

underlying <strong>Progress</strong> <strong>Sonic</strong>MQ layer provides some queue-like behavior for topics. The<br />

shared subscription feature enables you to have persistent, load balanced topic subscribers<br />

in your applications, while still allowing other subscribers on the topics.<br />

If you use topics, other services can receive <strong>and</strong> process messages without interfering with<br />

message flow through a process. Using this implementation, you can monitor business<br />

activity with a monitoring service subscribed to one topic, while message flow continues<br />

uninterrupted through a service subscribed to a different topic. This implementation is<br />

also useful in debugging <strong>and</strong> testing your applications <strong>and</strong> processes.<br />

See the <strong>Progress</strong> <strong>Sonic</strong>MQ Application Programming <strong>Guide</strong> for a detailed discussion of<br />

the features <strong>and</strong> benefits of using queues or topics in your applications. If you use topics,<br />

there are other considerations in defining the endpoints that relate to the number of service<br />

instances <strong>and</strong> the QoS. The following sections describe implementing concurrent durable<br />

subscriptions <strong>and</strong> shared subscriptions on topics in <strong>Sonic</strong> <strong>ESB</strong>.<br />

92 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Using Shared Subscriptions to Topics<br />

Evaluating Endpoint Requirements on JMS Destinations<br />

With topic subscriptions there can be cases where one application acting as a topic<br />

subscriber cannot process messages as fast as messages are being published. This leads to<br />

a bottleneck, where the subscribing application falls farther <strong>and</strong> farther behind.<br />

You can establish groups of topic subscribers that share subscriptions to allocate the<br />

message load among them. Within these groups, each message is delivered to, <strong>and</strong><br />

consumed by, only one member of the group. These group members can be located on<br />

dispersed computers over diverse JMS connections. The implementation is compatible<br />

with clusters of brokers so that the members of a consumer group can connect to different<br />

brokers in a <strong>Sonic</strong>MQ cluster. Regular subscribers, durable subscribers, <strong>and</strong> participants<br />

in a shared subscription can be active concurrently on a broker.<br />

<strong>Sonic</strong> <strong>ESB</strong> prepends the service name to the topic name when defining subscribers within<br />

a group: [[ServiceName]]topicName. When you select a destination for a shared<br />

subscription, <strong>Sonic</strong> <strong>ESB</strong> automatically prepends the service name to the topic you select<br />

(if shared subscriptions are enabled for the service, which is the default condition).<br />

For detailed information on implementing shared subscriptions, see the “Publish <strong>and</strong><br />

Subscribe Messaging” chapter in the <strong>Progress</strong> <strong>Sonic</strong>MQ Application Programming<br />

<strong>Guide</strong>.<br />

Using Concurrent Durable Subscriptions to Topics<br />

You can configure the entry endpoint of a service to define a durable subscription to a<br />

topic. In <strong>Sonic</strong> <strong>ESB</strong>, multiple service instances can concurrently process messages sent to<br />

a durable subscription.<br />

Durable subscriptions are created using a unique prefix appended to the subscription<br />

name configured on the JMS endpoint. The unique prefix consists of the management<br />

container name, the name of the <strong>ESB</strong> service configuration (the service name), <strong>and</strong> the ID<br />

of the message listener.<br />

The Concurrent Durable Subscription setting on an endpoint is a boolean value:<br />

● When set to False, the number of listeners to is limited to one. Also, only one instance<br />

of the service can be running anywhere in your <strong>ESB</strong>. This setting is preferred if you<br />

care about guaranteeing order in processing. The effect is similar to setting Exclusive<br />

on a queue.<br />

● When set to True, the default value, multiple containers are allowed to run the service,<br />

<strong>and</strong> each of those containers can have multiple listeners. This setting is appropriate<br />

when you want to load-balance <strong>and</strong> scale processing, <strong>and</strong> are not concerned about<br />

order in processing.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 93


Chapter 3: <strong>ESB</strong> Endpoints <strong>and</strong> Connections<br />

For detailed information on implementing durable subscriptions, see the “Publish <strong>and</strong><br />

Subscribe Messaging” chapter in the <strong>Progress</strong> <strong>Sonic</strong>MQ Application Programming<br />

<strong>Guide</strong>.<br />

The following example illustrates <strong>Sonic</strong> <strong>ESB</strong>’s naming convention for this feature:<br />

● A service named Service1 is deployed in MFContainer1 <strong>and</strong> MFContainer2.<br />

Service1 has:<br />

■ Two listeners in MFContainer1<br />

■ One listener in MFContainer2<br />

● The subscription name is myDurableSub<br />

● The topic that is subscribed to myDurableSub is T1<br />

● These services share a subscription to the topic name [[Service1]]T1 (concurrent<br />

durable subscriptions in <strong>Sonic</strong> <strong>ESB</strong> have shared subscriptions enabled by default)<br />

● The dynamically generated subscription names are:<br />

■ MFContainer1:Service1:1:myDurableSub<br />

■ MFContainer1:Service1:2:myDurableSub<br />

■ MFContainer2:Service1:1:myDurableSub<br />

Three durable subscriptions are created. Distribution to the durable subscriptions is based<br />

on factors including the number of active clients <strong>and</strong> flow control status.<br />

Each listener on a single service accesses the same, shared durable subscription, thus<br />

improving the throughput of a deployed service instance by enabling concurrent message<br />

processing. When a listener is eliminated, its durable subscription is not automatically<br />

eliminated, which causes that durable subscription to remain inactive until the subscriber<br />

returns .<br />

Note In conjunction with the shared subscription functionality, messages for a shared durable<br />

subscription that might be str<strong>and</strong>ed in these now-defunct subscriptions are re-allocated<br />

to whichever shared subscribers are connected, whether durable or nondurable.<br />

There is an advantage to using only durable subscribers in a shared subscription as a<br />

failure of a regular subscriber without acknowledgement of a delivered message has no<br />

mechanism for restarting <strong>and</strong> re-allocating the indoubt message.<br />

94 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Multiple Brokers, Clusters, <strong>and</strong> Nodes<br />

Evaluating Endpoint Requirements on JMS Destinations<br />

The ability to access services over the underlying <strong>Sonic</strong>MQ messaging layer is an<br />

important consideration when a <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> service calls out to other services <strong>and</strong><br />

expects a reply, or when a <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> process connects many <strong>ESB</strong> services.<br />

<strong>Sonic</strong>’s Dynamic Routing Architecture (DRA) is a robust, secure way to send messages<br />

through a broker or cluster of brokers to a destination on another broker or cluster. (In<br />

routing, each broker or cluster is a routing node. For more information on DRA, clusters,<br />

<strong>and</strong> routing nodes, see the “Multiple Nodes <strong>and</strong> Dynamic Routing” <strong>and</strong> “Clustered<br />

Brokers” chapters in the <strong>Progress</strong> <strong>Sonic</strong>MQ Deployment <strong>Guide</strong>.)<br />

In multi-node domains, <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> uses DRA to make fewer direct connections<br />

to remote nodes by using the <strong>ESB</strong> (JMS) connection <strong>and</strong> DRA routes to send to remote<br />

nodes. (Every <strong>ESB</strong> Container has an <strong>ESB</strong> (JMS) connection. See “Creating <strong>ESB</strong><br />

Containers” on page 55 for information on specifying the <strong>ESB</strong> Container connection.)<br />

When a message is sent to a node-qualified destination, the <strong>ESB</strong> (JMS) connection is used<br />

to send the message to the broker associated with the <strong>ESB</strong> Container on the bus. You<br />

configure an endpoint using a node-qualified queue or topic name to reference a queue or<br />

topic on a remote node to which the client (<strong>ESB</strong> service) is not connected. For example,<br />

you can configure the <strong>ESB</strong> (JMS) connection to NodeA (a routing node) <strong>and</strong> an endpoint<br />

based on queue, NodeB::Q2. Messages travel over the DRA connection of NodeA to NodeB.<br />

<strong>Progress</strong> recommends using this node-qualified syntax as a best practice, as it avoids<br />

making new connections from an <strong>ESB</strong> Container to all the remote nodes. <strong>Progress</strong><br />

recommends using the node-qualified syntax even if you are not running over DRA—<br />

doing so eases the transition if you decide to implement DRA in the future.<br />

The bus connection broker must have DRA routes defined for each of the remote nodes<br />

that can be sent to. If not, sent messages go to the broker’s dead message queue (DMQ).<br />

Important If the DRA connection fails, the message goes to the DMQ rather than to the rejected<br />

message endpoint (RME), provided the message is sent PERSISTENT <strong>and</strong><br />

JMS_<strong>Sonic</strong>MQ_preserveUndelivered <strong>and</strong> JMS_<strong>Sonic</strong>MQ_notifyUndelivered are set to true<br />

(the <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> QoS is AT_LEAST_ONCE or EXACTLY_ONCE on the process.) For<br />

more information, see the <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> Product Family Developer’s <strong>Guide</strong> in the<br />

Eclipse help.<br />

The only time the bus connection is not used is when the node is sonic.http, an HTTP<br />

outbound routing node. In this case, the <strong>ESB</strong> Container’s HTTP connection is used, as in<br />

outbound web service invocations. (For more information, see the <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong><br />

Product Family Developer’s <strong>Guide</strong> in the Eclipse help.)<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 95


Chapter 3: <strong>ESB</strong> Endpoints <strong>and</strong> Connections<br />

Table 2 lists JMS destinations for endpoints when using queues or topics in the same<br />

management domain. The table shows different configurations for brokers, clusters, <strong>and</strong><br />

nodes used by entry endpoints of called or invoked services.<br />

Table 2. Destination Definition Conventions Within a Domain<br />

Deployment Queue Definition Topic Definition<br />

One broker Use non-clustered queues Use normal or shared topics<br />

One cluster, multiple<br />

brokers<br />

Multiple nodes with<br />

some nodes as<br />

clusters, some as<br />

brokers<br />

Use clustered queues Use normal or shared topics<br />

Use global, clustered queues<br />

Use node-qualified entry endpoint<br />

names, for example, Node::aQueue<br />

Use either:<br />

When choosing JMS destinations for queues, consider the following:<br />

● For clustered brokers, you should use clustered queues<br />

● Node-qualified entry endpoint names,<br />

for example, Node::aTopic (shared<br />

subscriptions are not allowed)<br />

● GSA <strong>and</strong> no overlapping topic names<br />

● For multiple nodes, you should use global queues <strong>and</strong> entry endpoints that are<br />

qualified by the node name<br />

When choosing JMS destinations for topics, consider the following:<br />

● All topics are clustered <strong>and</strong> global<br />

● For multiple nodes, either use node-qualified names for the entry endpoint or use<br />

global subscription architecture (GSA) <strong>and</strong> global subscription nodes. (For<br />

information on GSA, see the “Multiple Nodes <strong>and</strong> Dynamic Routing” chapter in the<br />

<strong>Progress</strong> <strong>Sonic</strong>MQ Deployment <strong>Guide</strong>.<br />

96 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Configuring <strong>Progress</strong> <strong>Sonic</strong>MQ Endpoints<br />

Configuring <strong>Progress</strong> <strong>Sonic</strong>MQ Endpoints<br />

The following procedure describes how to view existing <strong>Progress</strong> <strong>Sonic</strong>MQ endpoints<br />

<strong>and</strong> configure a <strong>Progress</strong> <strong>Sonic</strong>MQ endpoint.<br />

◆ To view <strong>and</strong> configure <strong>Progress</strong> <strong>Sonic</strong>MQ endpoints:<br />

1. In the <strong>ESB</strong> Configured Objects section of the <strong>Sonic</strong> <strong>Management</strong> Console, exp<strong>and</strong><br />

the Endpoints folder, then click <strong>Progress</strong> <strong>Sonic</strong>MQ Endpoint. The right panel lists<br />

the available endpoints on the Endpoints tab.<br />

2. Select an endpoint from the list.<br />

The <strong>ESB</strong> Configured Objects section of the <strong>Sonic</strong> <strong>Management</strong> Console displays the<br />

properties of the selected endpoint, as shown:<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 97


Chapter 3: <strong>ESB</strong> Endpoints <strong>and</strong> Connections<br />

3. Click New.<br />

The right panel clears the endpoint property fields in the Endpoint Maintenance area.<br />

Required properties in the Endpoint Maintenance <strong>and</strong> Init Parameters areas are<br />

marked with an asterisk (*).<br />

4. Enter, accept, or select values for the following fields:<br />

Property Description<br />

Endpoint Name A unique name.<br />

Connection You must define at least one connection for each endpoint type. (The Connections tab lists<br />

the currently defined connections. You can select one of the connections that ships with<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong>, jms_defaultConnection or http_defaultConnection)<br />

Quality of Service Select one:<br />

● Best Effort — The default. Messages are sent NON_PERSISTENT. There is no guarantee<br />

that a message will not be lost. However, messages can be duplicated.<br />

● At Least Once — Messages are sent PERSISTENT. Messages cannot be lost. However,<br />

some services might have some messages redelivered in the event of a system failure;<br />

others might not.<br />

● Exactly Once — The most reliable processing. Messages are sent PERSISTENT.<br />

Messages are not lost, <strong>and</strong> services do not receive duplicate messages. EXACTLY_ONCE<br />

is supported for endpoints that map to JMS destinations in either JMS domain as<br />

supported by JMS1.1 (topic or queue) on the same JMS connection.<br />

WSDL URL Optional (to associate an endpoint with a WSDL document that describes its interaction<br />

model).<br />

Enter the WSDL URL or click ... to open the Choose WSDL File Resource dialog box <strong>and</strong><br />

choose a WSDL file.<br />

JMS Destination<br />

Type<br />

Select Queue or Topic.<br />

98 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Property Description<br />

Configuring <strong>Progress</strong> <strong>Sonic</strong>MQ Endpoints<br />

Destination Name The name of a <strong>Progress</strong> <strong>Sonic</strong>MQ topic or queue. You can either enter the name of an<br />

existing destination in this field, or click New Queue... to create a new queue within a<br />

specified broker or cluster. (Topics cannot be created in this way.)<br />

When you click New Queue... the Create JMS Queue dialog box opens. Enter a<br />

meaningful, unique Queue Name, <strong>and</strong> select a broker or cluster from the Create In list, then<br />

click OK to create the queue in the named broker or cluster.<br />

For information on configuring queues, see the “Configuring Queues” chapter in the<br />

<strong>Progress</strong> <strong>Sonic</strong>MQ <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong>.<br />

See “Using Shared Subscriptions to Topics” on page 93 for information about destination<br />

names when using shared subscriptions on topics.<br />

Message Selector Allows a consumer on the endpoint to filter <strong>and</strong> categorize messages in the message<br />

header <strong>and</strong> properties with expression strings created with a subset of SQL-92 semantics.<br />

This property is a java.lang.String that is evaluated left to right within precedence level.<br />

(This property is not validated here.)<br />

See the “Message Producers <strong>and</strong> Consumers” chapter in the <strong>Progress</strong> <strong>Sonic</strong>MQ<br />

Application Programming <strong>Guide</strong> for detailed information about message selectors <strong>and</strong><br />

syntax.<br />

Concurrent<br />

Durable<br />

Subscription<br />

Durable<br />

Subscription<br />

Name<br />

Specifies whether the endpoint has a concurrent durable subscription to its destination<br />

topic. This property ensures a unique subscription name so the topic can have multiple<br />

listeners (this property does not dictate whether the subscription is durable). This property<br />

is only relevant for topic-based endpoints. Multiple listeners in multiple service instances<br />

can subscribe to the same durable subscription. This setting is optional, either True or<br />

False; the default is True.<br />

Name of the <strong>Progress</strong> <strong>Sonic</strong>MQ durable subscription.<br />

See “Using Concurrent Durable Subscriptions to Topics” on page 93 for information<br />

about durable subscription names.<br />

Priority Optional. The priority at which <strong>Progress</strong> <strong>Sonic</strong>MQ sends messages from this endpoint.<br />

Enter a numeric value from 1 to 9 or Inherited; the default is Inherited:<br />

● Inherited — The priority of messages sent from this endpoint is set to the value with<br />

which the message was received. New messages that are created <strong>and</strong> sent from this<br />

endpoint have a priority of 4.<br />

● 1 to 9 — All messages sent to this endpoint have a priority equal to that value.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 99


Chapter 3: <strong>ESB</strong> Endpoints <strong>and</strong> Connections<br />

Property Description<br />

Time to Live The lifetime of messages within <strong>Progress</strong> <strong>Sonic</strong>MQ sent from this endpoint. This optional<br />

numeric value in milliseconds can be any positive integer:<br />

● Setting the value to 0 retains the message indefinitely.<br />

Message Prefetch<br />

Count<br />

Message Prefetch<br />

Threshold<br />

Shared<br />

Subscriptions<br />

● Setting the value to an integer greater than 0 causes expired messages to be sent to the<br />

DMQ if the QoS of the entry endpoint is AT_LEAST_ONCE or EXACTLY_ONCE. (For more<br />

information on QoS, see “Quality of Service” on page 105.)<br />

● Setting the value to an integer greater than 0 causes expired messages to be lost if the<br />

QoS of the entry endpoint is BEST_EFFORT.<br />

The number of messages the endpoint will consume in a single request from a <strong>Progress</strong><br />

<strong>Sonic</strong>MQ queue when the endpoint is used as an entry endpoint. This property is only<br />

relevant to queue-based endpoints. It is an optional numeric value; the default is 1. It can<br />

override the value specified in <strong>Progress</strong> <strong>Sonic</strong>MQ.<br />

An optional numeric value to specify that when the number of messages waiting to be<br />

processed by the endpoint falls to, or below, this threshold, a new batch of messages will<br />

be fetched. This number cannot exceed the Message Prefetch Count. This property is only<br />

relevant for queue-based endpoints.<br />

Allows automatic load balancing (the default is True, enabling shared subscriptions).<br />

For more information on shared subscriptions, see “Using Shared Subscriptions to Topics”<br />

on page 93 <strong>and</strong> the “Publish <strong>and</strong> Subscribe Messaging” chapter in the <strong>Progress</strong> <strong>Sonic</strong>MQ<br />

Application Programming <strong>Guide</strong>.<br />

Flow To Disk Specifies whether messages sent to this endpoint flow to disk. This feature allows<br />

messages to continue to flow when a subscriber to this endpoint is slower than the<br />

publisher <strong>and</strong> the buffer of the subscriber is full. Specify one of the following settings:<br />

● USE_BROKER_SETTING — No setting on the endpoint (the broker setting for this<br />

feature is used). The default setting is USE_BROKER_SETTING.<br />

● ON — All messages to this endpoint will flow to disk.<br />

● OFF — No messages to this endpoint will flow to disk.<br />

Send Timeout The time interval, in milliseconds, to attempt to send a message from this endpoint. The<br />

default value is 360000 — 6 minutes. If the timeout expires, a runtime or JMS exception<br />

could cause the message to get rejected.<br />

5. After you configure the properties, click Apply. The <strong>Sonic</strong> <strong>Management</strong> Console<br />

displays the new endpoint in the Endpoints tab.<br />

100 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Fault Tolerant Connections <strong>and</strong> Reconnection<br />

(You can click Reset to restore the previously applied values before you click Apply.)<br />

If you click Undo, any changes made before the previous Apply are undone. The<br />

information reverts to its previous state <strong>and</strong> Redo becomes available. (Undo does not<br />

undo the last change unless Apply has been clicked.)<br />

Deleting <strong>Progress</strong> <strong>Sonic</strong>MQ Endpoints<br />

The following procedure describes how to delete a <strong>Progress</strong> <strong>Sonic</strong>MQ endpoint.<br />

◆ To delete a <strong>Progress</strong> <strong>Sonic</strong>MQ endpoint:<br />

1. In the left panel in the <strong>Sonic</strong> <strong>Management</strong> Console, under the <strong>ESB</strong> Configured<br />

Objects node, exp<strong>and</strong> the Endpoints folder <strong>and</strong> click <strong>Progress</strong> <strong>Sonic</strong>MQ Endpoint.<br />

The upper right panel lists the endpoints in the Endpoints tab.<br />

2. Select the endpoint you want to delete, <strong>and</strong> then click Delete.<br />

3. Confirm the selection. <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> deletes the selected endpoint.<br />

Fault Tolerant Connections <strong>and</strong> Reconnection<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> provides fault tolerant client connections that allow <strong>ESB</strong> services to<br />

become failure resistant when used in a replicated broker environment. Enabling fault<br />

tolerant connections allows your <strong>ESB</strong> services to recover connections without message<br />

loss or duplication in the following circumstances:<br />

● Reconnect to the same broker if the connection is lost due to network failure<br />

● Reconnect to the same broker through redundant network interfaces if the connection<br />

in lost due to network failure<br />

● Reconnect to a broker that is configured as a backup broker if the primary broker fails<br />

● Reconnect to a broker that crashes <strong>and</strong> recovers from the log if that broker is<br />

configured with full broker crash recovery<br />

The fault tolerant <strong>and</strong> reconnect properties you can set for a connection are:<br />

Connection Parameter <strong>Sonic</strong> <strong>Management</strong> Console<br />

Property<br />

faultTolerant Enable Fault Tolerant Connection False<br />

Default Value<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 101


Chapter 3: <strong>ESB</strong> Endpoints <strong>and</strong> Connections<br />

Connection Parameter <strong>Sonic</strong> <strong>Management</strong> Console<br />

Property<br />

Inbound <strong>and</strong> Outbound Connections<br />

In <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong>, connections are not created until needed. For inbound (entry<br />

endpoint) connections, the connection attempt starts (but does not finish) at service<br />

initialization time. For outbound (exit, fault, <strong>and</strong> rejected message endpoint (RME))<br />

connections, the connection attempt starts when a service first sends a message over a<br />

given connection. As a result, two connections that have the same URL list might connect<br />

to different brokers in the list. Once a connection is created it can be re-used <strong>and</strong> can be<br />

shared across multiple sessions within the container. The maximum number of sessions<br />

that share a connection is configurable.<br />

Fault Tolerant Connections<br />

Default Value<br />

initialConnectTimeout Initial Connect Timeout 30 seconds<br />

faultTolerantReconnectTimeout Fault Tolerant Reconnect Timeout 60 seconds<br />

Set the faultTolerant connection parameter to true to enable fault tolerant connections.<br />

When enabled, <strong>Sonic</strong>MQ fault tolerance occurs before the <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> reconnect<br />

logic is triggered. Only after the <strong>Sonic</strong>MQ client fails to establish or re-establish a<br />

connection using the fault tolerance mechanism will the <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> reconnect<br />

process start.<br />

To use fault tolerant connections, the broker to which a client connects should be<br />

configured, started, <strong>and</strong> sychronized as a replication broker or a fully crash recoverable<br />

broker (see “Configuring Broker Replication” in the <strong>Progress</strong> <strong>Sonic</strong>MQ <strong>Configuration</strong><br />

<strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>and</strong> “Achieving Continuous Availability” in the <strong>Progress</strong><br />

<strong>Sonic</strong>MQ Deployment <strong>Guide</strong> for information about using fault tolerant connections <strong>and</strong><br />

replication brokers). Otherwise, only the transient network recovery or redundant network<br />

recovery feature can be used at runtime.<br />

<strong>Progress</strong> recommends that a fault tolerant connection to a replicated broker should specify<br />

primary <strong>and</strong> backup broker URLs in the URL list. This ensures that both primary <strong>and</strong><br />

backup URLs are tried for a successful initial connection. The Connection URL list is<br />

only used when creating the initial connection, not for fault tolerant reconnection<br />

attempts. Fault tolerant reconnection URLs are provided by the broker servicing the <strong>ESB</strong><br />

102 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Fault Tolerant Connections <strong>and</strong> Reconnection<br />

Container at the time a disconnect occurs. See the “Configuring Routings” chapter in the<br />

<strong>Progress</strong> <strong>Sonic</strong>MQ <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> for more information.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 103


Chapter 3: <strong>ESB</strong> Endpoints <strong>and</strong> Connections<br />

Reconnection<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> endpoints appear as <strong>Sonic</strong>MQ clients. From the perspective of<br />

<strong>Sonic</strong>MQ, the <strong>ESB</strong> reconnect implementation is a customized client reconnect<br />

implementation.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> always tries to reconnect when a connection fails, regardless of<br />

whether the faultTolerant connection parameter is set to true or false.<br />

The following sections explain how initial connections are created <strong>and</strong> how interrupted<br />

connections are reconnected.<br />

Initial Connections<br />

The initialConnectTimeout value specifies for how many seconds an <strong>ESB</strong> endpoint will<br />

try to establish an initial connection. This value is the total time during which the initial<br />

connection is attempted, not the time spent attempting to connect to each URL. This<br />

means that some URLs in the URL list might not be attempted. For non-fault tolerant<br />

connections, this parameter is ignored <strong>and</strong> the endpoint tries each URL once.<br />

Note Two special timeout values, 0 <strong>and</strong> -1, are available in <strong>Sonic</strong>MQ but are not available in<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong>, where configurations are limited to a value range of 1-3600.<br />

If the <strong>Sonic</strong>MQ initial connection cannot be established within the timeout period, the<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> reconnect logic will retry. This retry looks like the initial connection<br />

attempt to the <strong>Sonic</strong>MQ implementation. The retry starts trying to establish connections<br />

again, starting with the first URL in the initial connection list. The <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong><br />

retry will continue until the container is shut down.<br />

Interrupted Connections<br />

The faultTolerantReconnectTimeout value specifies how many seconds an <strong>ESB</strong> endpoint<br />

will allow for reconnecting a broken connection to the primary or backup broker using the<br />

fault tolerant mechanism. If the connection is re-established before the timeout expires,<br />

the endpoint will not be connected to a broker outside the original fault tolerant pair.<br />

If the connection is not re-established within the reconnect timeout period, <strong>Sonic</strong>MQ<br />

signals that the connection failed <strong>and</strong> the <strong>Sonic</strong> <strong>ESB</strong> reconnect logic tries to create a new<br />

connection using the initial connection process described previously. In this case, it is<br />

possible that a connection can be established to a broker that is not a member of the<br />

original fault tolerant pair.<br />

104 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Fault Tolerant Connections <strong>and</strong> Reconnection<br />

The <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> reconnect logic continues to attempt to re-establish an<br />

interrupted connection until the container is shut down. After 20 retries, a delay is inserted<br />

between each retry. The delay increases with each retry to a maximum delay of 30<br />

seconds. Each retry cycles through all the URLs in the connection URL list.<br />

Like the initialConnectTimeout value, the faultTolerantReconnectTimeout value is<br />

limited to a range of 1-3600. The faultTolerantReconnectTimeout value is ignored for<br />

non-fault tolerant connections; an interrupted non-fault tolerant connection will<br />

immediately trigger the <strong>Sonic</strong> <strong>ESB</strong> reconnect logic.<br />

Quality of Service<br />

In the case of an interrupted connection, the <strong>ESB</strong> reconnect creates a new connection <strong>and</strong><br />

the connection state is lost. (In a fault tolerant connection, the state is preserved <strong>and</strong> the<br />

connection never appears interrupted). This behavior has the following impact on QoS:<br />

● Best Effort — Messages may be lost, no Fault or RME message is guaranteed.<br />

● At Least Once — If the connection is lost before a message is acknowledged, the<br />

acknowledgement fails, but messages already sent to the Outbox <strong>and</strong> Fault box are<br />

still processed. A copy of an incoming message that is not acknowledged is sent to<br />

the RME. The unacknowledged message is redelivered to the service (for queues), or<br />

to the durable subscription endpoints (for topics).<br />

● Exactly Once — If the connection is lost while a message is being processed, a copy<br />

of incoming message is sent to the RME. The message is redelivered to the service<br />

(for queues), or to the durable subscription endpoints (for topics). Messages sent to<br />

the Outbox <strong>and</strong> Fault box are not processed in this case.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 105


Chapter 3: <strong>ESB</strong> Endpoints <strong>and</strong> Connections<br />

Setting the Ping Interval<br />

You can enable or disable sending active pings on a connection by setting the<br />

pingInterval connection property. When used where messages are sent to the endpoint at<br />

a low frequency, the ping can detect a connection drop <strong>and</strong> trigger reconnect logic to keep<br />

the connection alive. However, when large messages are sent on a slow network, a small<br />

ping interval can cause a response failure that can be interpreted as a connection drop.<br />

Consider the size <strong>and</strong> frequency of messages that will be sent to the endpoint when setting<br />

this property:<br />

● For non-fault tolerant connections, the default pingInterval value is 90 seconds.<br />

● For fault tolerant connections, the default pingInterval value is 30 seconds.<br />

Ping interval behavior for fault tolerant connections differs from that of non-fault tolerant<br />

connections in that the ping does not require a response from the broker in fault tolerant<br />

connections. A lack of response from the broker does not result in a connection failure in<br />

this case.<br />

Configuring Connections<br />

Every endpoint has an associated connection. The following procedure describes how to<br />

view existing connections <strong>and</strong> configure a new connection.<br />

◆ To view connections <strong>and</strong> configure a connection:<br />

1. In the <strong>ESB</strong> Configured Objects section of the <strong>Sonic</strong> <strong>Management</strong> Console, exp<strong>and</strong><br />

the Endpoints folder, then select <strong>Progress</strong> <strong>Sonic</strong>MQ Endpoint.<br />

2. In the right panel, click the Connections tab to view available connections.<br />

106 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Configuring Connections<br />

3. Select a connection. The lower right panel displays the properties of the selected<br />

connection, as shown:<br />

4. Click New. The connection property fields in the Connection Maintenance panel are<br />

cleared. Required properties in the Connection Maintenance <strong>and</strong> Init Parameters<br />

sections are marked with an asterisk (*).<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 107


Chapter 3: <strong>ESB</strong> Endpoints <strong>and</strong> Connections<br />

5. Enter, accept, or select values for the following properties:<br />

Property Description<br />

Connection Name A unique, meaningful name.<br />

Connection Type Accept the required value, <strong>Progress</strong> <strong>Sonic</strong>MQ Connection.<br />

Connection URLs One or a comma-delimited list of URLs for the <strong>Progress</strong> <strong>Sonic</strong>MQ<br />

brokers to make connections are made (in the format<br />

[protocol://]hostname[:port]).<br />

User Name The user name to authenticate with the <strong>Progress</strong> <strong>Sonic</strong>MQ broker.<br />

Password The password to authenticate with the <strong>Progress</strong> <strong>Sonic</strong>MQ broker.<br />

Login SPI<br />

Classname<br />

Optionally, you can pass the Login SPI classname to the <strong>Sonic</strong>MQ<br />

connection factory.<br />

108 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


6. Set the maximum sessions for this connection:<br />

Property Description<br />

Maximum Receive<br />

Sessions Per<br />

Connection<br />

Maximum<br />

BEST_EFFORT<br />

Sessions<br />

Maximum<br />

AT_LEAST_ONCE<br />

Sessions<br />

Maximum<br />

EXACTLY_ONCE<br />

Sessions<br />

Maximum<br />

Web Service<br />

Sessions<br />

Configuring Connections<br />

When configuring a connection, you specify the number of sessions<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> creates on an underlying <strong>Progress</strong> <strong>Sonic</strong>MQ<br />

connection for <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> entry endpoints:<br />

● Unlimited — The default for a single connection configuration.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> creates one underlying <strong>Progress</strong> <strong>Sonic</strong>MQ<br />

connection. All <strong>Progress</strong> <strong>Sonic</strong>MQ sessions that <strong>Progress</strong> <strong>Sonic</strong><br />

<strong>ESB</strong> creates for endpoints share that single connection. There is<br />

an unlimited number of receiving <strong>Progress</strong> <strong>Sonic</strong>MQ sessions per<br />

<strong>Progress</strong> <strong>Sonic</strong>MQ connection.<br />

● Single — <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> creates a dedicated <strong>Progress</strong><br />

<strong>Sonic</strong>MQ connection for each <strong>Progress</strong> <strong>Sonic</strong>MQ session that it<br />

creates for endpoints. There is a single receiving <strong>Progress</strong><br />

<strong>Sonic</strong>MQ session per <strong>Progress</strong> <strong>Sonic</strong>MQ connection. This setting<br />

provides enhanced performance, but results in greater memory<br />

<strong>and</strong> resource consumption throughput.<br />

The size of the pool of <strong>Progress</strong> <strong>Sonic</strong>MQ sessions created for<br />

sending messages at a BEST_EFFORT QoS level. This number should<br />

grow as the number of listeners grows. Specify a numeric value. The<br />

default is 3.<br />

The size of the pool of <strong>Progress</strong> <strong>Sonic</strong>MQ sessions created for<br />

sending messages at an AT_LEAST_ONCE QoS level. This number<br />

should grow as the number of listeners grows. Specify a numeric<br />

value. The default is 3.<br />

The size of the pool of <strong>Progress</strong> <strong>Sonic</strong>MQ sessions created for<br />

sending messages at an EXACTLY_ONCE QoS level. This number should<br />

grow as the number of listeners grows. Specify a numeric value. The<br />

default is 3.<br />

The number of pooled sessions that can be used for Web service<br />

invocations. Specify a positive integer value. The default value is 10.<br />

Important <strong>Sonic</strong> <strong>ESB</strong> creates a <strong>Sonic</strong>MQ temporary destination for each pooled session at the<br />

time that each connection is created.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 109


Chapter 3: <strong>ESB</strong> Endpoints <strong>and</strong> Connections<br />

7. Set the ping interval <strong>and</strong> fault tolerant connection parameters:<br />

Property Description<br />

Ping Interval The interval in seconds for sending active pings on the connection.<br />

Specify a numeric value:<br />

● The default for non-fault tolerant connections is 90.<br />

● The default for fault tolerant connections is 30.<br />

A value of 0 or any negative number disables the ping. See “Setting the<br />

Ping Interval” on page 106 for more information.<br />

Enable Fault<br />

Tolerant<br />

Connection<br />

Initial Connect<br />

Timeout<br />

Fault Tolerant<br />

Reconnect<br />

Timeout<br />

JMS<br />

Connection ID<br />

Specifies whether to enable fault tolerant connections for the endpoint.<br />

This setting is optional, either True or False; the default is False. See<br />

“Fault Tolerant Connections <strong>and</strong> Reconnection” on page 101 for more<br />

information.<br />

The interval in seconds during which a client can try to establish an initial<br />

connection. Specify a numerical value; the default is 30 seconds. See<br />

“Fault Tolerant Connections <strong>and</strong> Reconnection” on page 101 for more<br />

information.<br />

The interval in seconds that a client will allow for reconnection. Specify<br />

a numerical value; the default is 60 seconds. See “Fault Tolerant<br />

Connections <strong>and</strong> Reconnection” on page 101 for more information.<br />

When a JMS Connection ID is entered ( a non-empty string), fault<br />

tolerant clients can reconnect to a broker before the broker’s pending<br />

reconnect timeout is reached. However, taking advantage of this<br />

functionality will not allow multiple, simultaneous JMS connections<br />

using use the same JMS connection ID. See “Fault Tolerant Connections<br />

<strong>and</strong> Reconnection” on page 101 for more information.<br />

110 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Configuring Connections<br />

8. Scroll down in the Connection Maintenance area to set the Secure Socket Layer<br />

(SSL) properties. Set these properties only if you are using certificate-based<br />

authentication:<br />

Property Description<br />

SSL CA Certificates<br />

Location<br />

SSL Certificate Chain<br />

File<br />

Specifies the location of the Certificate Authority (CA) certificate<br />

used to connect to the <strong>Progress</strong> <strong>Sonic</strong>MQ broker.<br />

Specifies the pathname that points to the file containing the<br />

<strong>Progress</strong> <strong>Sonic</strong>MQ broker certificate chain for SSL.<br />

SSL Private Key File Provides the pathname that points to the file containing the brokerencrypted<br />

private key for SSL.<br />

SSL Private Key<br />

Password<br />

SSL Certificate Chain<br />

Form<br />

Provides the password to encrypt the broker private key for SSL.<br />

Specifies the format of the file containing the broker certificate<br />

chain:<br />

● PKCS7<br />

● PKCS12<br />

● LIST<br />

SSL Cipher Suites The value is a comma-delimited list of all cipher suites, in priority<br />

order, supported by the <strong>Progress</strong> <strong>Sonic</strong>MQ broker connection. For<br />

broker-client communications the broker that initiates the<br />

connection negotiates to the highest-priority cipher suite they both<br />

support. The default is SSL_RSA_WITH_3DES_EDE_CBC_SHA.<br />

SSL Provider Class Specifies the <strong>Progress</strong> <strong>Sonic</strong>MQ adapter class name of the SSL<br />

implementation. The supported adapters are:<br />

● progress.message.net.ssl.jsafe.jsafeSSLImpl<br />

(the default)<br />

● progress.message.net.ssl.jsse.JSSEImpl<br />

Note For information on the supported cipher suites, see “Implementing Security” in the <strong>Progress</strong><br />

<strong>Sonic</strong>MQ Deployment <strong>Guide</strong>.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 111


Chapter 3: <strong>ESB</strong> Endpoints <strong>and</strong> Connections<br />

9. After you configure the properties, click Apply. The <strong>Sonic</strong> <strong>Management</strong> Console<br />

displays the new connection in the Connections tab.<br />

(You can click Reset to restore the previously applied values before you click Apply.)<br />

If you click Undo, any changes made before the previous Apply are undone. The<br />

information reverts to its previous state <strong>and</strong> Redo becomes available. (Undo does not<br />

undo the last change unless Apply has been clicked.)<br />

Deleting <strong>Progress</strong> <strong>Sonic</strong>MQ Connections<br />

The following procedure describes how to delete a <strong>Progress</strong> <strong>Sonic</strong>MQ connection.<br />

◆ To delete a connection:<br />

1. In the left panel in the <strong>Sonic</strong> <strong>Management</strong> Console, under the <strong>ESB</strong> Configured<br />

Objects node, exp<strong>and</strong> the Endpoints folder, click the <strong>Progress</strong> <strong>Sonic</strong>MQ Endpoint<br />

folder.<br />

2. In the right panel, click the Connections tab. The <strong>Sonic</strong> <strong>Management</strong> Console lists<br />

the available connections under the Connections tab.<br />

3. Select a connection <strong>and</strong> click Delete.<br />

4. Confirm the selection. <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> deletes the connection.<br />

112 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Chapter 4 Configuring Web Services<br />

This chapter describes how to configure Web Services using WS-* st<strong>and</strong>ards in the<br />

following sections:<br />

● “Overview”<br />

● “Configuring WebService Protocols for <strong>ESB</strong> Processes”<br />

● “Related <strong>Configuration</strong> Documentation”<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 113


Chapter 4: Configuring Web Services<br />

Overview<br />

<strong>Sonic</strong> <strong>ESB</strong> processes can invoke <strong>and</strong> implement web services that conform to the<br />

WS-Security <strong>and</strong> WS-ReliableMessaging specifications. To enable this functionality, an<br />

administrator must correctly configure messaging brokers, acceptors, <strong>and</strong> routings.<br />

<strong>Sonic</strong> <strong>ESB</strong> leverages WS-Security <strong>and</strong> WS-ReliableMessaging support built into<br />

<strong>Sonic</strong>MQ. An overview of how this feature is supported in <strong>Sonic</strong>MQ is described in the<br />

“Using HTTP Direct for Web Services” chapter of the <strong>Progress</strong> <strong>Sonic</strong>MQ Deployment<br />

<strong>Guide</strong>. This chapter discusses the behavior of JMS clients that invoke or implement web<br />

services. The configuration issues are the same for <strong>ESB</strong> processes as they are for JMS<br />

clients, with one exception regarding the configuration of WebService protocols.<br />

Configuring WebService Protocols for <strong>ESB</strong> Processes<br />

The configuration of Web service protocols is documented in detail in the “Configuring<br />

Acceptors” chapter of the <strong>Progress</strong> <strong>Sonic</strong>MQ <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong>.<br />

This chapter contains a “Configuring HTTP(S) Direct Web Service Protocol H<strong>and</strong>lers”<br />

section that describes how to configure Endpoint URLs for web services. This section<br />

refers to the following the dialog box, which is used to configure endpoint URLs:<br />

114 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Related <strong>Configuration</strong> Documentation<br />

An endpoint URL is used by SOAP/HTTP clients to access a web service implemented<br />

by an <strong>ESB</strong> process. A URL extension can be mapped to a JMS destination or a URL. If it<br />

is mapped to a URL, the URL must be either a JNDI URL or a sonic URL of the form:<br />

sonic:///node_name/process_name<br />

where node_name is either the literal string local or a valid node name where the process<br />

is deployed.<br />

If you specify the URL of an <strong>ESB</strong> process, the process must have an entry endpoint <strong>and</strong><br />

be deployed in an <strong>ESB</strong> Container.<br />

Related <strong>Configuration</strong> Documentation<br />

For more information about configuring Web services, see the following <strong>Sonic</strong>MQ<br />

documents:<br />

Table 3. Configuring <strong>Sonic</strong>MQ for WS-Security <strong>and</strong> WS-ReliableMessaging<br />

Configurable<br />

Element Location<br />

HTTP Direct Acceptor<br />

Web Service Protocol<br />

HTTP Web Service<br />

Protocol Routing<br />

See the “Configuring Acceptors” chapter of the <strong>Progress</strong> <strong>Sonic</strong>MQ<br />

<strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong>.<br />

See the “Configuring Routings” chapter of the <strong>Progress</strong> <strong>Sonic</strong>MQ<br />

<strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong>.<br />

Broker See the “Configuring <strong>Sonic</strong>MQ Brokers” chapter of the <strong>Progress</strong><br />

<strong>Sonic</strong>MQ <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong>.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 115


Chapter 4: Configuring Web Services<br />

116 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Part II Configuring Database Services<br />

Part II contains the following chapters:<br />

● Chapter 5, “Using the Database Service JDBC Drivers”<br />

● Chapter 6, “Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong>”<br />

● Chapter 7, “SQL Escape Sequences for JDBC”<br />

● Chapter 8, “Configuring SQL Server Windows Authentication”<br />

Note This section provides information for the JDBC drivers bundled with <strong>Progress</strong> <strong>Sonic</strong><br />

Database Service. If your installation uses a different JDBC Driver, consult the vendor’s<br />

documentation for their configuration guidelines.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 117


118 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Chapter 5 Using the Database Service JDBC Drivers<br />

Chapter 5 includes information on failover, load balancing, <strong>and</strong> error h<strong>and</strong>ling for<br />

<strong>Progress</strong> <strong>Sonic</strong> Database Service connections. This chapter includes the following<br />

sections:<br />

● “JDBC Driver Connection Properties <strong>and</strong> the Database Service” — Explains how to<br />

configure <strong>and</strong> deploy third-party JDBC drivers for use with <strong>Sonic</strong> Database Service.<br />

● “Load Balancing, Failover, <strong>and</strong> Connection Retry” — Explains how these features are<br />

implemented <strong>and</strong> provides references to appendixes where the connection properties<br />

for each of the JDBC drivers are listed.<br />

● “Using Activation Daemons” — Shows how to use Activation Daemons with<br />

Database Services.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 119


Chapter 5: Using the Database Service JDBC Drivers<br />

JDBC Driver Connection Properties <strong>and</strong> the Database<br />

Service<br />

The Database Service reconnect timeout might expire while the JDBC driver failover or<br />

retry is taking place. In this event, if the JDBC driver failover or connection retry<br />

operations exceed the Database Service connection Timeout limit, the connection will not<br />

succeed <strong>and</strong> the associated Database Service operation will fail, resulting in an error<br />

message being sent to the rejected message endpoint (RME.)<br />

The Database Service reconnect is not the same as the JDBC driver connection retry. The<br />

Database Service is not aware of a connection failure until the JDBC driver connection<br />

retry is unsuccessful. When the Database Service attempts a reconnection, the JDBC<br />

driver acts as if this is a new database connection <strong>and</strong> the driver load balancing, failover,<br />

<strong>and</strong> connection retry parameters are all used as if an initial database connection is being<br />

established.<br />

Load Balancing, Failover, <strong>and</strong> Connection Retry<br />

To optimize performance, you can implement client load balancing, connection failover,<br />

<strong>and</strong> connection retry in your Database Service connection properties. To do this, specify<br />

both primary <strong>and</strong> alternate servers in the connection URL. The following sections explain<br />

these features:<br />

● “Client Load Balancing” on page 122<br />

● “Connection Failover” on page 123<br />

● “Connection Retry” on page 124<br />

120 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Load Balancing, Failover, <strong>and</strong> Connection Retry<br />

For details on configuring load balancing, failover, <strong>and</strong> connection retry properties for<br />

each of the JDBC drivers available with <strong>Sonic</strong> Database Service, see the following<br />

sections:<br />

Table 4. Documentation for JDBC Driver Connection Properties <strong>and</strong> Alternate Servers<br />

JDBC Driver Connection Properties Documentation<br />

<strong>Progress</strong> Open Edge ● “<strong>Progress</strong> OpenEdge Database” on page 130<br />

● “<strong>Progress</strong> OpenEdge Connection Failover Properties” on page 135<br />

● “Specifying Alternate Servers for the <strong>Progress</strong> OpenEdge Driver” on page 136<br />

● “<strong>Progress</strong> OpenEdge Driver Data Types” on page 138<br />

DB2 ● “DB2 Driver Connection Properties” on page 139<br />

● “DB2 Driver Connection Failover Properties” on page 152<br />

● “Specifying Alternate Servers for the DB2 Driver” on page 152<br />

● “DB2 Driver Data Types” on page 154<br />

Informix ● “Informix Driver Connection Properties” on page 155<br />

● “Informix Driver Connection Failover Properties” on page 163<br />

● “Specifying Alternate Servers for the Informix Driver” on page 163<br />

● “Informix Driver Data Types” on page 164<br />

Oracle ● “Oracle Driver Connection Properties” on page 166<br />

● “Oracle Driver Connection Failover Properties” on page 177<br />

● “Specifying Alternate Servers for the Oracle Driver” on page 178<br />

● “Oracle Driver Data Types” on page 179<br />

Microsoft SQL<br />

Server<br />

● “Microsoft SQL Server Driver Connection Properties” on page 181<br />

● “Microsoft SQL Server Driver Connection Failover Properties” on page 192<br />

● “Specifying Alternate Servers for the Microsoft SQL Server Driver” on page 192<br />

● “Microsoft SQL Server Driver Data Types” on page 194<br />

Sybase ● “Sybase Driver Connection Properties” on page 196<br />

● “Sybase Driver Connection Failover Properties” on page 206<br />

● “Specifying Alternate Servers for the Sybase Driver” on page 206<br />

● “Sybase Driver Data Types” on page 208<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 121


Chapter 5: Using the Database Service JDBC Drivers<br />

Client Load Balancing<br />

Client load balancing helps distribute new connections to multiple servers in your<br />

environment so that no one server is overwhelmed with connection requests. When client<br />

load balancing is enabled, the order in which primary <strong>and</strong> alternate database servers are<br />

tried is r<strong>and</strong>om. For example, suppose that client load balancing is enabled as shown in<br />

Figure 1.<br />

<strong>Sonic</strong> Database Service<br />

Figure 1. Client Load Balancing Example<br />

In the example in Figure 1, when client load balancing is enabled the Database Service<br />

first attempts to connect to Database Server B (1). The Database Service then attempts a<br />

connection to Database Server C (2), followed by a connection attempt to Database<br />

Server A (3). In contrast, if client load balancing was not enabled in this scenario, each<br />

database server would be tried in sequential order, primary server first, then each alternate<br />

server based on their entry order in the alternate servers list.<br />

To use client load balancing, specify the following properties in the form property=value<br />

in your connection URL:<br />

● LoadBalancing — Set this property to true to enable load balancing.<br />

● AlternateServers — See “Specifying Primary <strong>and</strong> Alternate Servers” on page 126.<br />

122 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong><br />

3<br />

1<br />

2<br />

Database Server A<br />

(Primary)<br />

Database Server B<br />

(First Alternate)<br />

Database Server C<br />

(Second Alternate)


Connection Failover<br />

Load Balancing, Failover, <strong>and</strong> Connection Retry<br />

Connection failover allows an application to connect to an alternate, or backup, database<br />

server if the primary database server is unavailable, for example, because of a hardware<br />

failure or traffic overload. Connection failover ensures that the data your critical JDBC<br />

applications depend on is always available.<br />

You can customize the Database Service JDBC drivers for connection failover by<br />

configuring a list of alternate database servers that are tried if the primary server is not<br />

accepting connections. Connection attempts continue until a connection is successfully<br />

established or until all the alternate database servers have been tried the specified number<br />

of times.<br />

For example, suppose you have the environment shown in Figure 2 with multiple database<br />

servers: Database Server A, B, <strong>and</strong> C. Database Server A is designated as the primary<br />

database server, Database Server B is the first alternate server, <strong>and</strong> Database Server C is<br />

the second alternate server.<br />

<strong>Sonic</strong> Database Service<br />

Figure 2. Connection Failover Example<br />

In the example shown in Figure 2, the Database Service first attempts to connect to the<br />

primary database server, Database Server A (1). If connection failover is enabled <strong>and</strong><br />

Database Server A fails to accept the connection, the Database Service then attempts to<br />

connect to Database Server B (2). If that connection attempt also fails, the Database<br />

Service attempts to connect to Database Server C (3).<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 123<br />

1<br />

2<br />

3<br />

Database Server A<br />

(Primary)<br />

Database Server B<br />

(First Alternate)<br />

Database Server C<br />

(Second Alternate)


Chapter 5: Using the Database Service JDBC Drivers<br />

In this example, it is probable that at least one connection attempt will succeed, but if no<br />

connection attempt succeeds, the driver can retry each database server (primary <strong>and</strong><br />

alternates) for a specified number of attempts. The JDBC drivers allow you to customize<br />

the connection retry feature to specify the number of attempts that are made.<br />

A JDBC driver fails over to the next alternate database server only if a successful<br />

connection cannot be established with the current alternate server. If the driver<br />

successfully establishes communication with a database server <strong>and</strong> the connection request<br />

is rejected by the database server because the login information is invalid, for example,<br />

the driver does not try to connect to the next database server in the list <strong>and</strong> generates an<br />

exception.<br />

Connection failover provides protection for new connections only <strong>and</strong> does not preserve<br />

states for transactions or queries.<br />

To use connection failover, see the appropriate section for your database for a list of<br />

property=value pairs to add to your connection URL:<br />

● “<strong>Progress</strong> OpenEdge Connection Failover Properties” on page 135<br />

● “DB2 Driver Connection Failover Properties” on page 152<br />

● “Informix Driver Connection Failover Properties” on page 163<br />

● “Oracle Driver Connection Failover Properties” on page 177<br />

● “Microsoft SQL Server Driver Connection Failover Properties” on page 192<br />

● “Sybase Driver Connection Failover Properties” on page 206<br />

Connection Retry<br />

Connection retry allows the JDBC driver to retry connections to a list of database servers<br />

(primary <strong>and</strong> alternate) until a successful connection is established. Use the<br />

ConnectionRetryCount <strong>and</strong> ConnectionRetryDelay properties to enable <strong>and</strong> control how<br />

connection retry works.<br />

In the following examples for the different JDBC drivers, if a successful connection is not<br />

established on the driver’s first pass through the list of database servers (primary <strong>and</strong><br />

alternate), the driver retries the list of servers in the same sequence twice<br />

(ConnectionRetryCount=2). If a successful connection is not established on the first retry<br />

pass through the list of servers, the driver makes another pass through the list of servers.<br />

Because the connection retry delay has been set to five seconds<br />

(ConnectionRetryDelay=5), the driver waits five seconds between retry passes.<br />

124 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Load Balancing, Failover, <strong>and</strong> Connection Retry<br />

Connection Retry Example for <strong>Progress</strong> OpenEdge Driver<br />

jdbc:sonic::datadirect:openedge://server1:2003;HostName=TestServer;<br />

DatabaseName=TestServer;User=test;Password=secret;<br />

AlternateServers=(server2:2003;DatabaseName=TEST2,server3:2003;<br />

DatabaseName=TEST3);ConnectionRetryCount=2;ConnectionRetryDelay=5<br />

Connection Retry Example for DB2 Driver<br />

jdbc:sonic:db2://server1:50000;DatabaseName=TEST;<br />

AlternateServers=(server2:50000;DatabaseName=TEST2,<br />

server3:50000;DatabaseName=TEST3);ConnectionRetryCount=2;<br />

ConnectionRetryDelay=5<br />

Connection Retry Example for Informix Driver<br />

jdbc:sonic:informix://server1:2003;InformixServer=TestServer;<br />

DatabaseName=TestServer;<br />

AlternateServers=(server2:2003;DatabaseName=TEST2,server3:2003;<br />

DatabaseName=TEST3);ConnectionRetryCount=2;<br />

ConnectionRetryDelay=5<br />

Connection Retry Example for Oracle Driver<br />

jdbc:sonic:oracle://server1:1521;ServiceName=TEST;<br />

AlternateServers=(server2:1521;ServiceName=TEST2,<br />

server3:1521;ServiceName=TEST3);ConnectionRetryCount=2;<br />

ConnectionRetryDelay=5<br />

Connection Retry Example for Microsoft SQL Server Driver<br />

jdbc:sonic:sqlserver://server1:1433;DatabaseName=TEST;<br />

AlternateServers=(server2:1433;DatabaseName=TEST2,<br />

server3:1433;DatabaseName=TEST3);ConnectionRetryCount=2;<br />

ConnectionRetryDelay=5<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 125


Chapter 5: Using the Database Service JDBC Drivers<br />

Connection Retry Example for Sybase Driver<br />

jdbc:sonic:sybase://server1:4100;DatabaseName=TEST;<br />

AlternateServers=(server2:4100;DatabaseName=TEST2,<br />

server3:4100;DatabaseName=TEST3);ConnectionRetryCount=2;<br />

ConnectionRetryDelay=5<br />

Specifying Primary <strong>and</strong> Alternate Servers<br />

The <strong>Sonic</strong> Database Service JDBC drivers allow you to specify a list of alternate database<br />

servers that are tried at connection time if the primary server is not accepting connections<br />

using the AlternateServers property. Connection attempts continue until a connection is<br />

successfully established or until all the database servers (primary <strong>and</strong> alternate) have been<br />

tried the specified number of times.<br />

Connection information for alternate servers is specified using the AlternateServers<br />

property in a connection URL. The value of the AlternateServers property is a string that<br />

has the format:<br />

(servername1[:port1][;property=value[;...]],servername2[:port2]<br />

[;property=value[;...]],...)<br />

where:<br />

● servername1 is the IP address or server name of the first alternate database server,<br />

servername2 is the IP address or server name of the second alternate database server,<br />

<strong>and</strong> so on. The IP address or server name is required for each alternate server entry.<br />

● port1 is the port number on which the first alternate database server is listening, port2<br />

is the port number on which the second alternate database server is listening, <strong>and</strong> so<br />

on. Port numbers are optional for each alternate server entry. If unspecified, the port<br />

number specified for the primary server is used. If a port number is unspecified for<br />

the primary server, the default port number is used (see Table 4 on page 121 to locate<br />

the appendix containing information on the default PortNumber values for the JDBC<br />

drivers).<br />

● property=value is an optional connection property, based on the JDBC driver to<br />

which you are connecting.<br />

126 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Using Activation Daemons<br />

See the following sections for examples that describe how to specify primary <strong>and</strong> alternate<br />

servers for different JDBC drivers:<br />

● “Specifying Alternate Servers for the <strong>Progress</strong> OpenEdge Driver” on page 136<br />

● “Specifying Alternate Servers for the DB2 Driver” on page 152<br />

● “Specifying Alternate Servers for the Informix Driver” on page 163<br />

● “Specifying Alternate Servers for the Oracle Driver” on page 178<br />

● “Specifying Alternate Servers for the Microsoft SQL Server Driver” on page 192<br />

● “Specifying Alternate Servers for the Sybase Driver” on page 206<br />

Using Activation Daemons<br />

Using an Activation Daemon is a way to launch new containers as spawned processes of<br />

the container hosting the Activation Daemon. This allows new containers to be launched<br />

by remote administrative clients without the administrator having to log on to that host. A<br />

typical use would be to have the container hosting the Activation Daemon launched as a<br />

Windows service on Windows platforms or a startup process under UNIX.<br />

An Activation Daemon monitors the health of its spawned containers <strong>and</strong>, depending on<br />

configured rules, restarts those containers upon failure. Normally one Activation Daemon<br />

is deployed per host. Multiple Activation Daemons can be created per domain. Containers<br />

can be launched by the Activation Daemon:<br />

● At Activation Daemon startup time<br />

● At a configured time<br />

● After a container failure (up to a configurable number of retries)<br />

● On dem<strong>and</strong> from the <strong>Sonic</strong> <strong>Management</strong> Console or via the Activation Daemon’s<br />

management API<br />

You can create <strong>and</strong> configure an Activation Daemon to start an <strong>ESB</strong> Container hosting a<br />

Database Service. The steps required to create, configure, <strong>and</strong> test the Activation Daemon<br />

are:<br />

1. Create an Activation Daemon<br />

2. Add the Activation Daemon to a management container<br />

3. Add a container to an Activation Daemon’s activation list<br />

“Using Activation Daemons” on page 79 provides information about how to complete the<br />

steps to create <strong>and</strong> configure an Activation Daemon to start an <strong>ESB</strong> Container hosting a<br />

service.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 127


Chapter 5: Using the Database Service JDBC Drivers<br />

128 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Chapter 6 Driver Connection Properties <strong>and</strong><br />

Data Types by Database Br<strong>and</strong><br />

This chapter contains driver connection properties, connection failover properties, <strong>and</strong><br />

driver data types for the following database br<strong>and</strong>s:<br />

● “<strong>Progress</strong> OpenEdge Database”<br />

● “DB2”<br />

● “Informix”<br />

● “Oracle”<br />

● “Microsoft SQL Server”<br />

● “Sybase”<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 129


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

<strong>Progress</strong> OpenEdge Database<br />

The following sections describe settings for the <strong>Sonic</strong> Database Service’s <strong>Progress</strong><br />

OpenEdge driver:<br />

● “<strong>Progress</strong> OpenEdge Connection Properties”<br />

● “<strong>Progress</strong> OpenEdge Connection Failover Properties”<br />

● “Specifying Alternate Servers for the <strong>Progress</strong> OpenEdge Driver”<br />

● “<strong>Progress</strong> OpenEdge Driver Data Types”<br />

See the DataDirect Connect for JDBC <strong>Progress</strong> OpenEdge Driver User’s <strong>Guide</strong> <strong>and</strong><br />

Reference for more information.<br />

<strong>Progress</strong> OpenEdge Connection Properties<br />

Table 5 describes the JDBC connection properties supported by the <strong>Progress</strong> OpenEdge<br />

driver. The properties have the format: property=value<br />

Table 5. Connection Properties for the <strong>Progress</strong> OpenEdge Driver<br />

Property Description<br />

AlternateServers<br />

Default: No default<br />

Data type: String<br />

A comma-separated list of alternate database servers that the driver will try to<br />

connect to if the primary database server is unavailable. The value of this<br />

property is a string that specifies each alternate server. This string has the<br />

format:<br />

(servername1[:port1][;property=value],servername2[:port2][;property=value],...)<br />

The server name is required for each alternate server entry. Port number <strong>and</strong><br />

connection properties (property=value) are optional for each alternate server<br />

entry. If the port is unspecified, the port number of the primary server is used.<br />

The driver only allows one optional property, DatabaseName. For example:<br />

jdbc:datadirect:openedge://server1:4100;<br />

DatabaseName=TEST;User=test;Password=secret<br />

AlternateServers=(server2:4100;DatabaseName=TEST2,<br />

server3:4100;DatabaseName=TEST3)<br />

contains alternate server entries for server2 <strong>and</strong> server3. The alternate server<br />

entries contain the optional DatabaseName property.<br />

130 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 5. Connection Properties for the <strong>Progress</strong> OpenEdge Driver (continued)<br />

Property Description<br />

ConnectionRetryCount<br />

Default: 5<br />

Data type: int<br />

ConnectionRetryDelay<br />

Default: 1<br />

Data type: int<br />

<strong>Progress</strong> OpenEdge Database<br />

The number of times the driver retries connections to the primary database<br />

server, <strong>and</strong> if specified, alternate servers until a successful connection is<br />

established. Valid values are 0 <strong>and</strong> any positive integer.<br />

If set to 0, the driver does not try to reconnect after the initial unsuccessful<br />

attempt.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:2003,server3:2003,server4:2003)<br />

<strong>and</strong><br />

ConnectionRetryCount=1<br />

If a connection is not successfully established on the driver’s first pass through<br />

the list of database servers, the driver retries all the servers in the list only once.<br />

If an application sets a login timeout value (for example, using<br />

DataSource.loginTimeout or DriverManager.loginTimeout), the login timeout<br />

takes precedence over this property. For example, if the login timeout expires,<br />

any connection attempts to alternate servers stop.<br />

If the LoadBalancing property is set to true, the driver may sequence through the<br />

list of servers (primary <strong>and</strong> alternate) in a different order each time.<br />

The ConnectionRetryDelay property specifies the wait interval, in seconds, used<br />

between attempts.<br />

The number of seconds the driver waits before retrying connections to the<br />

primary database server, <strong>and</strong> if specified, alternate servers when<br />

ConnectionRetryCount is set to a positive integer.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:2003,server3:2003,server4:2003)<br />

<strong>and</strong><br />

ConnectionRetryCount=2<br />

<strong>and</strong><br />

ConnectionRetryDelay=3<br />

If a connection is not successfully established on the driver’s first pass through<br />

the list of database servers, the driver retries the list of servers twice. It waits 3<br />

seconds between the first connection retry attempt <strong>and</strong> the second connection<br />

retry attempt.<br />

If the LoadBalancing property is set to true, the driver may sequence through the<br />

list of servers (primary <strong>and</strong> alternate) in a different order each time.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 131


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 5. Connection Properties for the <strong>Progress</strong> OpenEdge Driver (continued)<br />

Property Description<br />

DatabaseName<br />

Default: No default<br />

Data type: String<br />

HostName<br />

Default: No default<br />

Data type: String<br />

InsensitiveResultSet<br />

BufferSize<br />

Default: 2048<br />

Data type: int<br />

The name of the database to which you want to connect.<br />

The name of the <strong>Progress</strong> OpenEdge database server to which you want to<br />

connect.<br />

Specifies either the IP address or the server name (if your network supports<br />

named servers) of the primary database server. For example, 122.23.15.12 or<br />

HostName.<br />

This property is supported only for DataSource connections<br />

{-1 | 0 | x}<br />

Determines the amount of memory used by the driver to cache insensitive result<br />

set data. It must have one of the following values:<br />

If set to -1, the driver caches all insensitive result set data in memory. If the size<br />

of the result set exceeds available memory, an OutOfMemoryException is<br />

generated. Because the need to write result set data to disk is eliminated, the<br />

driver processes the data more efficiently.<br />

If set to 0, the driver caches all insensitive result set data in memory, up to a<br />

maximum of 2 GB. If the size of the result set data exceeds available memory,<br />

the driver pages the result set data to disk. Because result set data may be written<br />

to disk, the driver may have to reformat the data to write it correctly to disk.<br />

If set to x, where x is a positive integer, the driver caches all insensitive result set<br />

data in memory, using this value to set the size (in KB) of the memory buffer for<br />

caching insensitive result set data. If the size of the result set data exceeds the<br />

buffer size, the driver pages the result set data to disk. Because the result set data<br />

may be written to disk, the driver may have to reformat the data to write it<br />

correctly to disk. Specifying a buffer size that is a power of 2 results in more<br />

efficient memory use.<br />

132 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 5. Connection Properties for the <strong>Progress</strong> OpenEdge Driver (continued)<br />

Property Description<br />

LoadBalancing<br />

Default: false<br />

Data type: boolean<br />

MaxPooledStatements<br />

Default: 0<br />

Data type: int<br />

Password<br />

REQUIRED<br />

Default: No default<br />

Data type: String<br />

{true | false}<br />

<strong>Progress</strong> OpenEdge Database<br />

Determines whether the driver will use client load balancing in its attempts to<br />

connect to a list of database servers (primary <strong>and</strong> alternate). The list of alternate<br />

servers is specified by the AlternateServers property.<br />

If set to true, client load balancing is used <strong>and</strong> the driver attempts to connect to<br />

the list of database servers (primary <strong>and</strong> alternate servers) in r<strong>and</strong>om order.<br />

If set to false (the default), client load balancing is not used <strong>and</strong> the driver<br />

connects to each server based on their sequential order (primary server first,<br />

then, alternate servers in the order they are specified).<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:4100,server3:4100,server4:4100)<br />

<strong>and</strong><br />

LoadBalancing=true<br />

The driver r<strong>and</strong>omly selects from the list of primary <strong>and</strong> alternate servers which<br />

server to connect to first. If that connection fails, the driver again r<strong>and</strong>omly<br />

selects from this list of servers until all servers in the list have been tried or a<br />

connection is successfully established.<br />

The maximum number of pooled prepared statements for this connection.<br />

Setting MaxPooledStatements to an integer greater than zero (0) enables the<br />

<strong>Progress</strong> OpenEdge driver’s internal prepared statement pooling, which is<br />

useful when the driver is not running from within an application server or<br />

another application that provides its own prepared statement pooling.<br />

If set to a positive number, the driver uses that value to cache a certain number<br />

of prepared statements created by an application. For example, if the value of<br />

this property is set to 20, the driver caches the last 20 prepared statements<br />

created by the application. If the value set for this property is greater than the<br />

number of prepared statements used by the application, all prepared statements<br />

created by the application are cached. Because CallableStatement is a sub-class<br />

of PreparedStatement, CallableStatements also are pooled.<br />

The case-sensitive password used to connect to your OpenEdge database. A<br />

password is required only if security is enabled on your database. If so, contact<br />

your system administrator to obtain your password.<br />

The password is automatically encrypted.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 133


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 5. Connection Properties for the <strong>Progress</strong> OpenEdge Driver (continued)<br />

Property Description<br />

PortNumber<br />

REQUIRED<br />

Default: Varies with<br />

operating system<br />

Data type: int<br />

SpyAttributes<br />

Default: No default<br />

Data type: String<br />

User<br />

REQUIRED<br />

Default: No default<br />

Data type: String<br />

The TCP port of the primary database server that is listening for connections to<br />

the <strong>Progress</strong> OpenEdge database.<br />

This property is supported only for DataSource connections.<br />

Enables DataDirect Spy, a tool that can be used to log detailed information about<br />

calls issued by a running application to any DataDirect Connect for JDBC<br />

driver. The format for the value of this property is:<br />

(spy_attribute[;spy_attribute]...)<br />

where spy_attribute is any valid DataDirect Spy attribute.<br />

For example:<br />

SpyAttributes=(log=(file)/tmp/spy.log;linelimit=80)<br />

logs all JDBC activity to a file using a maximum of 80 characters for each line.<br />

NOTE: If coding a path on Windows to the log file in a Java string, the backslash<br />

character (\) must be preceded by the Java escape character, a backslash. For<br />

example: log=(file)C:\\temp\\spy.log.<br />

DataDirect Spy is not enabled by default.<br />

The case-insensitive user name used to connect to your OpenEdge database. A<br />

user name is required only if security is enabled on your database. If so, contact<br />

your system administrator to get your user name.<br />

134 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


<strong>Progress</strong> OpenEdge Connection Failover Properties<br />

<strong>Progress</strong> OpenEdge Database<br />

Table 6 summarizes the connection properties that control how connection failover works<br />

with the Database Service <strong>Progress</strong> OpenEdge driver. See Table 5 for details about<br />

configuring each property.<br />

Table 6. Connection Failover Properties for the <strong>Progress</strong> Open Edge Driver<br />

Property Description<br />

AlternateServers List of alternate database servers. An IP address or server name identifying each<br />

server is required. Port number <strong>and</strong> the DatabaseName connection property are<br />

optional. If the port number is unspecified, the port number specified for the primary<br />

server is used.<br />

ConnectionRetryCount Number of times the driver retries the primary database server, <strong>and</strong> if specified,<br />

alternate servers until a successful connection is established. The default is 5.<br />

ConnectionRetryDelay Wait interval, in seconds, between connection retry attempts when the<br />

ConnectionRetryCount property is set to a positive integer. The default is 1.<br />

DatabaseName Name of the <strong>Progress</strong> OpenEdge database server to which you want to connect.<br />

LoadBalancing Sets whether the driver will use client load balancing in its attempts to connect to the<br />

list of database servers (primary <strong>and</strong> alternate). If client load balancing is enabled,<br />

the driver uses a r<strong>and</strong>om pattern instead of a sequential pattern in its attempts to<br />

connect. The default is false (client load balancing is disabled).<br />

PortNumber Port listening for connections on the primary database server. This property is<br />

supported only for DataSource connections. The default port number varies,<br />

depending on operating system.<br />

See “Client Load Balancing” on page 122 <strong>and</strong> “Connection Failover” on page 123 for<br />

overviews of these features.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 135


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Specifying Alternate Servers for the <strong>Progress</strong> OpenEdge Driver<br />

The following connection URL for the <strong>Progress</strong> OpenEdge driver specifies connection<br />

information for the primary <strong>and</strong> alternate servers:<br />

jdbc:datadirect:openedge://server1:2003;HostName=TestServer;<br />

DatabaseName=TestServer;User=test;Password=secret;<br />

AlternateServers=(server2:2003;HostName=TestServer2,server3:2003)<br />

In this example:<br />

...server1:2003;HostName=TestServer;<br />

DatabaseName=TestServer...<br />

is the part of the connection URL that specifies connection information for the primary<br />

server. Alternate servers are specified using the AlternateServers property. For example:<br />

...;AlternateServers=(server2:2003;<br />

HostName=TestServer2,server3:2003)<br />

Similarly, connection information for the primary server specified using a JDBC data<br />

source would look something like this:<br />

OpenedgeDataSource mds = new OpenedgeDataSource();<br />

mds.setDescription("My OpenedgeDataSource");<br />

mds.setServerName("server1");<br />

mds.setPortNumber(2003);<br />

mds.setHostName("TestServer");<br />

mds.setDatabaseName("TestServer");<br />

mds.setUser("test");<br />

mds.setPassword("secret");<br />

mds.setAlternateServers=(server2:2003;HostName=<br />

TestServer2,server3:2003)<br />

In this example, connection information for the primary server is specified using the<br />

ServerName, PortNumber, HostName, <strong>and</strong> DatabaseName properties. Connection<br />

information for alternate servers is specified using the AlternateServers property.<br />

136 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Using the AlternateServers Property<br />

<strong>Progress</strong> OpenEdge Database<br />

Connection information for alternate servers is specified using the AlternateServers<br />

property with either a connection URL through the JDBC Driver Manager or a JDBC data<br />

source. The value of the AlternateServers property is a string that has the format:<br />

(servername1[:port1][;property=value[;...]],servername2[:port2]<br />

[;property=value[;...]],...)<br />

where:<br />

servername1 is the IP address or server name of the first alternate database server,<br />

servername2 is the IP address or server name ofthe second alternate database server, <strong>and</strong><br />

so on. The IP address or server name is required for each alternate server entry.<br />

port1 is the port number on which the first alternate database server is listening, port2 is<br />

the port number on which the second alternate database server is listening, <strong>and</strong> so on. The<br />

port number is optional for each alternate server entry. If unspecified, the port number<br />

specified for the primary server is used.<br />

property=value is either of the following connection properties: DatabaseName or<br />

HostName. These connection properties are optional for each alternate server entry.<br />

For example:<br />

jdbc:datadirect:openedge://server1:2003;HostName=TestServer;<br />

DatabaseName=TestServer;User=test;Password=secret;<br />

AlternateServers=(server2:2003;HostName=TestServer2;<br />

DatabaseName=TestServer,server3:2003)<br />

If you do not specify an optional connection property in an alternate server entry, the<br />

connection to that alternate server uses the property specified in the URL. For example, if<br />

youspecify HostName=TestServer <strong>and</strong> DatabaseName=TestServer for the primary server,<br />

but do not specify the HostName <strong>and</strong> DatabaseName properties in the alternate server<br />

entry as shown in the following URL, the driver uses the HostName <strong>and</strong> DatabaseName<br />

specified for the primary server <strong>and</strong> tries to connect to the TestServer database on the<br />

<strong>Progress</strong> OpenEdge server TestServer:<br />

jdbc:datadirect:openedge://server1:2003;HostName=TestServer;<br />

DatabaseName=TestServer;AlternateServers=(server2:2003,server3:2003)<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 137


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

<strong>Progress</strong> OpenEdge Driver Data Types<br />

Table 7 lists the data types supported by the <strong>Progress</strong> OpenEdge driver <strong>and</strong> describes how<br />

they are mapped to JDBC data types.<br />

Table 7. <strong>Progress</strong> OpenEdge (OED) Data Types<br />

<strong>Progress</strong> OpenEdge Data Type JDBC Data Type<br />

bigint BIGINT<br />

binary BINARY<br />

bit BIT<br />

blob BLOB<br />

char CHAR<br />

clob CLOB<br />

date DATE<br />

decimal DECIMAL<br />

float FLOAT<br />

int8 BIGINT<br />

integer INTEGER<br />

longvarbinary LONGVARBINARY<br />

longvarchar LONGVARCHAR<br />

numeric NUMERIC<br />

real REAL<br />

smallint SMALLINT<br />

time TIME<br />

timestamp TIMESTAMP<br />

timestamp with time zone CHAR<br />

tinyint TINYINT<br />

varbinary VARBINARY<br />

varchar VARCHAR<br />

138 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


DB2<br />

The following sections describe settings for the <strong>Sonic</strong> Database Service DB2 driver:<br />

● “DB2 Driver Connection Properties”<br />

● “DB2 Driver Connection Failover Properties”<br />

● “Specifying Alternate Servers for the DB2 Driver”<br />

● “DB2 Driver Data Types”<br />

DB2 Driver Connection Properties<br />

Table 8 describes the JDBC connection properties supported by the DB2 driver. The<br />

properties have the format:<br />

property=value<br />

Note All connection property names are case-insensitive. For example, Password is the same<br />

as password.<br />

Table 8. DB2 Connection Properties<br />

Property Description<br />

AddToCreateTable<br />

OPTIONAL<br />

AlternateID<br />

OPTIONAL<br />

A string that is appended to the end of all CREATE statements. This property<br />

typically is used to add an in database clause.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 139<br />

DB2<br />

The default schema name that is used to qualify unqualified database<br />

objects in dynamically prepared database queries. Valid values depend on<br />

your DB2 database:<br />

● DB2 UDB <strong>and</strong> DB2 iSeries — Sets the value in the DB2 CURRENT<br />

SCHEMA special register. The value of this property must be a valid<br />

DB2 schema name. DB2 UDB <strong>and</strong> DB2 iSeries do not validate values<br />

specified for the CURRENT SCHEMA register.<br />

● DB2 OS/390 — Sets the value in the DB2 CURRENT SQLID special<br />

register. The value of this property is validated by the server. Refer to<br />

your IBM documentation for valid values for the CURRENT SQLID<br />

register.


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 8. DB2 Connection Properties (continued)<br />

Property Description<br />

AlternateServers<br />

OPTIONAL<br />

A list of alternate database servers that the driver will try to connect to if<br />

the primary database server is unavailable. The value of this property is a<br />

string that specifies each alternate server. This string has the format:<br />

(servername1[:port1][;property=value[;...]],<br />

servername2[:port2][;property=value[;...]],...)<br />

The server name is required for each alternate server entry. Port number<br />

<strong>and</strong> connection properties (property=value) are optional for each<br />

alternate server entry. If the port is unspecified, the port number of the<br />

primary server is used. If the port number of the primary server is<br />

unspecified, the default port number of 50000 is used. Optional connection<br />

properties for the driver are DatabaseName (for DB2 UDB) <strong>and</strong><br />

LocationName (for DB2 OS/390 <strong>and</strong> iSeries). For example:<br />

jdbc:sonic:db2://server1:50000;DatabaseName=TEST;<br />

AlternateServers=(server2:50000;DatabaseName=TEST2,<br />

server3:50000;DatabaseName=TEST3)<br />

contains alternate server entries for server2 <strong>and</strong> server3. The alternate<br />

server entries contain the optional DatabaseName property.<br />

Other properties are:<br />

● ConnectionRetryCount — Controls the number of times the driver<br />

retries the list of servers (primary <strong>and</strong> alternate) while attempting to<br />

establish a connection.<br />

● ConnectionRetryDelay — Sets the wait interval, in seconds, between<br />

retry attempts.<br />

● LoadBalancing — Controls the order in which the driver sequences<br />

through the list of servers (primary <strong>and</strong> alternate) while attempting to<br />

establish a connection.<br />

See “Specifying Primary <strong>and</strong> Alternate Servers” on page 126 for more<br />

information about specifying connection information for primary <strong>and</strong><br />

alternate servers.<br />

140 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 8. DB2 Connection Properties (continued)<br />

Property Description<br />

BatchPerformanceWorkaround<br />

OPTIONAL<br />

CatalogIncludesSynonyms<br />

OPTIONAL<br />

CatalogSchema<br />

OPTIONAL<br />

{true | false}<br />

For DB2 UDB 8.1, the native DB2 batch mechanism is used. This<br />

property determines whether certain restrictions are enforced to facilitate<br />

data conversions as follows:<br />

● false — The methods used to set the parameter values of a batch<br />

operation performed using a PreparedStatement must match the<br />

database data type of the column the parameter is associated with.<br />

This is because DB2 servers do not perform implicit data conversions.<br />

● true — This restriction is removed; however, parameter sets may not<br />

be executed in the order they were specified.<br />

The default is false.<br />

{true | false}<br />

This property value determines behavior as follows:<br />

● true — Synonyms are included in the result sets returned from the<br />

DatabaseMetaData.getColumns method.<br />

● false — Synonyms are omitted from result sets.<br />

The default is true.<br />

This property is only applicable for DB2 UDB 7.1 <strong>and</strong> 7.2, DB2 OS/390,<br />

<strong>and</strong> DB2 iSeries. This property is ignored for DB2 UDB 8.1. The driver<br />

always returns synonyms for the DatabaseMetaData.getColumns method<br />

when connected to DB2 UDB 8.1.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 141<br />

DB2<br />

The DB2 schema to use for catalog functions. The value must be the name<br />

of a valid DB2 schema.<br />

The default is SYSCAT for DB2 UDB, SYSIBM for DB2 OS/390, <strong>and</strong><br />

QSYS2 for DB2 iSeries.<br />

To improve performance, views of system catalog tables can be created in<br />

a schema other than the default catalog schema. Setting this property to a<br />

schema that contains views of the catalog tables allows the driver to use<br />

those views. To ensure that catalog methods function correctly, views for<br />

specific catalog tables must exist in the specified schema. The views that<br />

are required depend on your DB2 database.


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 8. DB2 Connection Properties (continued)<br />

Property Description<br />

CharsetFor65535<br />

OPTIONAL<br />

CodePageOverride<br />

OPTIONAL<br />

CollectionId<br />

OPTIONAL<br />

The code page to use to convert character data stored as bit data in<br />

character columns (Char, Varchar, Longvarchar, Char for Bit Data,<br />

Varchar for Bit Data, Longvarchar for Bit Data) defined with CCSID<br />

65535. All character data stored as bit data retrieved from the database<br />

using columns defined with CCSID 65535 is converted using the specified<br />

code page. The value must be a string containing the name of a valid code<br />

page supported by your Java Virtual Machine, for example,<br />

CharsetFor65535=CP950. This property has no effect when writing data to<br />

character columns defined with CCSID 65535.<br />

A code page to be used to convert Character <strong>and</strong> Clob data. The specified<br />

code page overrides the default database code page. All Character <strong>and</strong><br />

Clob data retrieved from or written to the database is converted using the<br />

specified code page. The value must be a string containing the name of a<br />

valid code page supported by your Java Virtual Machine, for example,<br />

CodePageOverride=CP950.<br />

The name of the collection or library (group of packages) to which DB2<br />

packages are bound.<br />

The default is NULLID.<br />

This property is ignored for DB2 UDB.<br />

142 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 8. DB2 Connection Properties (continued)<br />

Property Description<br />

ConnectionRetryCount<br />

OPTIONAL<br />

The number of times the driver retries connection attempts to a list of<br />

database servers (primary <strong>and</strong> alternate) until a successful connection is<br />

established. Valid values are 0 <strong>and</strong> any positive integer.<br />

If set to 0, the driver does not retry connections if a successful connection<br />

is not established on the driver’s first pass through the list.<br />

The default is 0.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:50000,server3:50000,server4:50000)<br />

<strong>and</strong><br />

ConnectionRetryCount=1<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 143<br />

DB2<br />

if a connection is not successfully established on the driver’s first pass<br />

through the list of database servers, the driver retries all the servers in the<br />

list only once.<br />

If an application sets a login timeout value (for example, using<br />

DriverManager.loginTimeout), the login timeout takes precedence over<br />

this property. For example, if the login timeout expires, any connection<br />

attempts stop.<br />

The ConnectionRetryDelay property specifies the wait interval, in<br />

seconds, used between retry attempts.<br />

See “Connection Retry” on page 124 for more information about<br />

specifying connection information for primary <strong>and</strong> alternate servers.


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 8. DB2 Connection Properties (continued)<br />

Property Description<br />

ConnectionRetryDelay<br />

OPTIONAL<br />

CreateDefaultPackage<br />

OPTIONAL<br />

The number of seconds the driver will wait between connection retry<br />

attempts when ConnectionRetryCount is set to a positive integer.<br />

The default is 3.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:50000,server3:50000,server4:50000)<br />

<strong>and</strong><br />

ConnectionRetryCount=2<br />

<strong>and</strong><br />

ConnectionRetryDelay=3<br />

if a connection is not successfully established on the driver’s first pass<br />

through the list of database servers, the driver retries the list of servers<br />

twice. The driver waits 3 seconds between the first connection retry<br />

attempt <strong>and</strong> the second connection retry attempt.<br />

See “Connection Retry” on page 124 for more information about<br />

specifying connection information for primary <strong>and</strong> alternate servers.<br />

{true | false}<br />

This property determines behavior as follows:<br />

● true — The DB2 driver automatically creates any required DB2<br />

packages.<br />

● false — The driver creates the required DB2 packages automatically<br />

only if they do not already exist.<br />

The default is false.<br />

For DB2 UDB, this property must be used in conjunction with the<br />

ReplacePackage property.<br />

For DB2 OS/390 <strong>and</strong> DB2 iSeries, DB2 packages are created in the<br />

collection or library specified by the CollectionId property.<br />

DatabaseName The name of the database to which you want to connect.<br />

This property is supported only for DB2 UDB.<br />

144 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 8. DB2 Connection Properties (continued)<br />

Property Description<br />

DiagnosticFilename<br />

OPTIONAL<br />

DynamicSections<br />

OPTIONAL<br />

Grantee<br />

OPTIONAL<br />

GrantExecute<br />

OPTIONAL<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 145<br />

DB2<br />

The path <strong>and</strong> filename of the file to which you want state information<br />

logged when an exception is generated. If the file does not already exist,<br />

it will be created the first time state information is generated. If this<br />

property is not specified, state information is not logged. When you<br />

contact Technical Support with a problem, you might be asked to generate<br />

a state information log.<br />

Your application should ensure that the driver is granted read/write<br />

permission to the specified file.<br />

The number of statements in the DB2 package that the DB2 driver will<br />

prepare for a single user.<br />

The default is 200.<br />

The name of the schema to which you want to grant EXECUTE privileges for<br />

DB2 packages. The value must be a valid DB2 schema. This property is<br />

ignored if the GrantExecute property is set to false.<br />

The default is PUBLIC.<br />

{true | false}<br />

Determines which DB2 schema is granted EXECUTE privileges for DB2<br />

packages as follows:<br />

● true — EXECUTE privileges are granted to the schema specified by the<br />

Grantee property.<br />

● false — EXECUTE privileges are granted to the schema that created the<br />

DB2 packages.<br />

The default is true.


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 8. DB2 Connection Properties (continued)<br />

Property Description<br />

InsensitiveResultSetBufferSize<br />

OPTIONAL<br />

{-1 | 0 | x}<br />

Determines the amount of memory used by the driver to cache insensitive<br />

result set data as follows:<br />

● -1 — The driver caches all insensitive result set data in memory. If the<br />

size of the result set exceeds available memory, an<br />

OutOfMemoryException is generated. Because the need to write result<br />

set data to disk is eliminated, the driver processes the data more<br />

efficiently.<br />

● 0 — The driver caches all insensitive result set data in memory, up to<br />

a maximum of 2 GB. If the size of the result set data exceeds available<br />

memory, the driver pages the result set data to disk. Because result set<br />

data may be written to disk, the driver may have to reformat the data<br />

to write it correctly to disk.<br />

● x, where x is a positive integer — The driver caches all insensitive<br />

result set data in memory, using this value to set the size (in KB) of<br />

the memory buffer for caching insensitive result set data. If the size of<br />

the result set data exceeds the buffer size, the driver pages the result<br />

set data to disk. Because the result set data may be written to disk, the<br />

driver may have to reformat the data to write it correctly to disk.<br />

Specifying a buffer size that is a power of 2 results in more efficient<br />

memory use.<br />

The default is 2048 (KB).<br />

146 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 8. DB2 Connection Properties (continued)<br />

Property Description<br />

LoadBalancing<br />

OPTIONAL<br />

{true | false}<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 147<br />

DB2<br />

Determines whether the driver will use client load balancing in its<br />

attempts to connect to a list of database servers (primary <strong>and</strong> alternate).<br />

The list of alternate servers is specified by the AlternateServers property.<br />

The LoadBalancing property determines behavior as follows:<br />

● true — Client load balancing is used <strong>and</strong> the driver attempts to<br />

connect to the list of database servers (primary <strong>and</strong> alternate servers)<br />

in r<strong>and</strong>om order.<br />

● false — Client load balancing is not used <strong>and</strong> the driver connects to<br />

each server based on their sequential order (primary server first, then,<br />

alternate servers in the order they are specified).<br />

The default is false.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:50000,server3:50000,server4:50000)<br />

<strong>and</strong><br />

LoadBalancing=true<br />

the driver r<strong>and</strong>omly selects from the list of primary <strong>and</strong> alternate servers<br />

which server to connect to first. If that connection fails, the driver again<br />

r<strong>and</strong>omly selects from this list of servers until all servers in the list have<br />

been tried or a connection is successfully established.<br />

See “Client Load Balancing” on page 122 for more information about<br />

specifying connection information for primary <strong>and</strong> alternate servers.<br />

LocationName The name of the DB2 location that you want to access.<br />

This property is supported only for DB2 OS/390 <strong>and</strong> iSeries.


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 8. DB2 Connection Properties (continued)<br />

Property Description<br />

MaxPooledStatements<br />

OPTIONAL<br />

PackageOwner<br />

OPTIONAL<br />

The maximum number of pooled prepared statements for this connection.<br />

MaxPooledStatements property values determine behavior as follows:<br />

● An integer greater than zero (0) — Enables the DB2 driver’s internal<br />

prepared statement pooling, which is useful when the driver is not<br />

running from within an application server or another application that<br />

provides its own prepared statement pooling. The driver uses this<br />

value to cache a certain number of prepared statements created by an<br />

application. For example, if the value of this property is set to 20, the<br />

driver caches the last 20 prepared statements created by the<br />

application.<br />

● A value greater than the number of prepared statements used by the<br />

application — All prepared statements created by the application are<br />

cached.<br />

Because CallableStatement is a sub-class of PreparedStatement,<br />

CallableStatements also are pooled.<br />

The default is 0.<br />

The owner to be used for any DB2 packages that are created.<br />

The default is NULL.<br />

Password A case-sensitive password used to connect to your DB2 database. A<br />

password is required only if security is enabled on your database. Contact<br />

your system administrator to obtain your password.<br />

PortNumber<br />

OPTIONAL<br />

ReplacePackage<br />

OPTIONAL<br />

The TCP port of the primary database server that is listening for<br />

connections to the DB2 database.<br />

The default is 50000.<br />

{true | false}<br />

Specifies whether the current bind process will replace the existing DB2<br />

packages used by the driver. For DB2 UDB, this property must be used in<br />

conjunction with the CreateDefaultPackage property.<br />

The default is false.<br />

148 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 8. DB2 Connection Properties (continued)<br />

Property Description<br />

SecurityMechanism<br />

OPTIONAL<br />

{ClearText | EncryptedPassword | EncryptedUIDPassword}<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 149<br />

DB2<br />

Determines the security method the driver uses to authenticate the user to<br />

the DB2 server when establishing a connection. If the specified<br />

authentication method is not supported by the DB2 server, the connection<br />

fails <strong>and</strong> the driver generates an exception. This property determines<br />

behavior as follows:<br />

● ClearText — The driver sends the password in clear text to the DB2<br />

server for authentication.<br />

● EncryptedPassword — The driver sends an encrypted password to the<br />

DB2 server for authentication.<br />

● EncryptedUIDPassword — The driver sends an encrypted user ID <strong>and</strong><br />

password to the DB2 server for authentication.<br />

The default is ClearText.


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 8. DB2 Connection Properties (continued)<br />

Property Description<br />

SendStreamAsBlob<br />

OPTIONAL<br />

{true | false}<br />

Determines whether binary stream data that is less than 32K bytes is sent<br />

to the database as Long Varchar for Bit Data or Blob data. Binary stream<br />

data that is less than 32K bytes can be inserted into a Long Varchar for<br />

Bit Data column, which has a maximum length of 32K bytes, or a Blob<br />

column. Binary streams that are larger than 32K bytes can only be inserted<br />

into a Blob column. The driver always sends binary stream data larger than<br />

32K bytes to the database as Blob data. This property determines behavior<br />

as follows:<br />

● true — The driver sends binary stream data that is less than 32K to<br />

the database as Blob data. If the target column is a Long Varchar for<br />

Bit Data column <strong>and</strong> not a Blob column, the Insert or Update<br />

statement fails. The driver automatically retries the Insert or Update<br />

statement, sending the data as Long Varchar for Bit Data, if the<br />

stream passed into the driver is resettable. Sending binary stream data<br />

that is less than 32K bytes in length initially as a Blob significantly<br />

improves performance if the Insert or Update column is a Blob<br />

column.<br />

● false — The driver sends binary stream data that is less than 32K to<br />

the database as Long Varchar for Bit Data data. If the target column<br />

is a Blob column <strong>and</strong> not a Long Varchar for Bit Data column, the<br />

Insert or Update statement fails. The driver retries the Insert or<br />

Update statement, sending the data as Blob data.<br />

The default is false.<br />

ServerName Specifies either the IP address or the server name (if your network<br />

supports named servers) of the primary database server. For example,<br />

122.23.15.12 or DB2Server.<br />

150 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 8. DB2 Connection Properties (continued)<br />

Property Description<br />

StripNewlines<br />

OPTIONAL<br />

UseCurrentSchema<br />

OPTIONAL<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 151<br />

DB2<br />

{true | false}<br />

Specifies whether new-line characters in a database operation are sent to<br />

the DB2 server:<br />

● true — The DB2 driver removes all new-line characters from<br />

database operations.<br />

● false — If you know that the database operations used in your<br />

application do not contain new-line characters, setting StripNewLines<br />

to false eliminates parsing by the DB2 server <strong>and</strong> improves<br />

performance.<br />

The default is true.<br />

{true | false}<br />

Specifies whether results are restricted to the tables in the current schema<br />

if a DatabaseMetaData.getTables call is called without specifying a<br />

schema or if the schema is specified as the wildcard character %.<br />

Restricting results to the tables in the current schema improves the<br />

performance of calls for getTables methods that do not specify a schema.<br />

This property determines behavior as follows:<br />

● true — Results that are returned from the getTables method are<br />

restricted to tables in the current schema.<br />

● false — Results of the getTables method are not restricted.<br />

The default is false.<br />

User The case-sensitive user name used to connect to the DB2 database.<br />

WithHoldCursors<br />

OPTIONAL<br />

{true | false}<br />

Determines whether the cursor stays open on commit—either DB2 closes<br />

all open cursors (Delete cursors) after a commit or leaves them open<br />

(Preserve cursors):<br />

● true — The cursor behavior is Preserve.<br />

● false — The cursor behavior is Delete. Rolling back a transaction<br />

closes all cursors regardless of how this property is specified.<br />

The default is true.


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

DB2 Driver Connection Failover Properties<br />

Table 9 summarizes the connection properties that control how connection failover works<br />

with the Database Service DB2 driver. See Table 8 for details about configuring each<br />

property.<br />

Table 9. Connection Failover Properties for the DB2 Driver<br />

Property Description<br />

AlternateServers List of alternate database servers. An IP address or server name identifying each<br />

server is required. Port number <strong>and</strong> supported connection properties (DatabaseName<br />

or LocationName) are optional. If the port number is unspecified, the port specified<br />

for the primary server is used. If a port number is not specified for the primary<br />

server, a default port number of 50000 is used.<br />

ConnectionRetryCount Number of times the driver retries the list of database servers (primary <strong>and</strong> alternate)<br />

until a successful connection is established. The default is 0 (connection retry is not<br />

used).<br />

ConnectionRetryDelay Wait interval, in seconds, used between attempts to connect to a list of database<br />

servers (primary <strong>and</strong> alternate) when the ConnectionRetryCount property is set to a<br />

positive integer. The default is 3.<br />

DatabaseName The name of the database to which you want to connect.<br />

LoadBalancing Sets whether the driver will use client load balancing in its attempts to connect to the<br />

list of database servers (primary <strong>and</strong> alternate). If client load balancing is enabled,<br />

the driver uses a r<strong>and</strong>om pattern instead of a sequential pattern in its attempts to<br />

connect. The default is false (client load balancing is not used).<br />

See “Client Load Balancing” on page 122 <strong>and</strong> “Connection Failover” on page 123 for<br />

overviews of these features.<br />

Specifying Alternate Servers for the DB2 Driver<br />

The following connection URL for the DB2 driver specifies connection information for<br />

the primary <strong>and</strong> alternate servers:<br />

jdbc:sonic:db2://server1:50000;DatabaseName=TEST;<br />

AlternateServers=(server2:50000;DatabaseName=TEST2,<br />

server3:50000;DatabaseName=TEST3)<br />

152 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


In this example:<br />

...server1:50000;DatabaseName=TEST...<br />

is the part of the connection URL that specifies connection information for the primary<br />

server. Alternate servers are specified using the AlternateServers property, in this<br />

example:<br />

...;AlternateServers=(server2:50000;DatabaseName=TEST2, server3:50000;DatabaseName=TEST3)<br />

You can specify the optional connection properties DatabaseName or LocationName for each<br />

alternate server entry. For example:<br />

dbc:sonic:db2://server1:50000;DatabaseName=TEST;<br />

AlternateServers=(server2:50000;DatabaseName=TEST2,<br />

server3:50000;DatabaseName=TEST2)<br />

or<br />

jdbc:sonic:db2://server1:50000;LocationName=TEST;<br />

AlternateServers=(server2:50000;LocationName=TEST2,<br />

server3:50000;LocationName=TEST3)<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 153<br />

DB2<br />

If you do not specify an optional connection property in an alternate server entry, the<br />

connection to that alternate server uses the property specified in the URL for the primary<br />

server. For example, if you specify DatabaseName=TEST for the primary server, but do not<br />

specify a database name in the alternate server entry as shown in the following URL, the<br />

driver uses the database name specified for the primary server <strong>and</strong> tries to connect to the<br />

TEST database on the alternate server:<br />

jdbc:sonic:db2://server1:50000;DatabaseName=TEST;<br />

AlternateServers=(server2:50000,server3:50000)


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

DB2 Driver Data Types<br />

Table 10 lists the data types supported by the DB2 driver <strong>and</strong> describes how they are<br />

mapped to JDBC data types.<br />

Table 10. DB2 Data Types<br />

DB2 Data Type JDBC Data Type Database Comments<br />

Bigint BIGINT Supported only for DB2 UDB 8.1.<br />

Blob BLOB Supported only for DB2 UDB 8.1, DB2 OS/390,<br />

<strong>and</strong> DB2 iSeries V5R2.<br />

Char CHAR<br />

Char for Bit Data BINARY<br />

Clob CLOB<br />

Date DATE<br />

DBClob CLOB Supported only for DB2 UDB 8.1, DB2 7.x OS/390,<br />

<strong>and</strong> DB2 iSeries V5R2.<br />

Decimal DECIMAL<br />

Double DOUBLE<br />

Float FLOAT<br />

Integer INTEGER<br />

Long Varchar LONGVARCHAR<br />

Long Varchar for Bit Data LONGVARBINARY<br />

Numeric NUMERIC<br />

Real REAL<br />

Rowid VARBINARY Supported only for DB2 OS/390 <strong>and</strong> DB2 iSeries V5R2.<br />

Smallint SMALLINT<br />

Time TIME<br />

Timestamp TIMESTAMP<br />

Varchar VARCHAR<br />

Varchar for Bit Data VARBINARY<br />

154 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Informix<br />

Informix<br />

The following sections describe settings for the <strong>Sonic</strong> Database Service Informix driver:<br />

● “Informix Driver Connection Properties”<br />

● “Informix Driver Connection Failover Properties”<br />

● “Specifying Alternate Servers for the Informix Driver”<br />

● “Informix Driver Data Types”<br />

Informix Driver Connection Properties<br />

Table 11 describes the JDBC connection properties supported by the Informix driver. The<br />

properties have the format:<br />

property=value<br />

Note All connection property names are case-insensitive. For example, Password is the same<br />

as password.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 155


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 11. Informix Connection Properties<br />

Property Description<br />

AlternateServers<br />

OPTIONAL<br />

CodePageOverride<br />

OPTIONAL<br />

A comma-separated list of alternate database servers the driver will try to<br />

connect to if the primary database server is unavailable. The value of this<br />

property is a string that specifies each alternate server. This string has the<br />

format:<br />

(servername1[:port1][;property=value[;...]],<br />

servername2[:port2][;property=value[;...]],...)<br />

The server name is required for each alternate server entry. Port number<br />

<strong>and</strong> connection properties (property=value) are optional for each<br />

alternate server entry. If the port is unspecified, the port number of the<br />

primary server is used. Optional connection properties for the driver are<br />

DatabaseName <strong>and</strong> InformixServer. For example, the following URL:<br />

jdbc:sonic:informix://server1:2003;<br />

InformixServer=TestServer;DatabaseName=Test;<br />

AlternateServers=(server2:2003;InformixServer=<br />

TestServer2,server3:2003;InformixServer=TestServer3)<br />

contains alternate server entries for server2 <strong>and</strong> server3. The alternate<br />

server entries contain the optional InformixServer property.<br />

Other properties are:<br />

● ConnectionRetryCount — Controls the number of times the driver<br />

retries the list of servers (primary <strong>and</strong> alternate) while attempting to<br />

establish a connection.<br />

● ConnectionRetryDelay — Sets the wait interval, in seconds, between<br />

retry attempts.<br />

● LoadBalancing — Controls the order in which the driver sequences<br />

through the list of servers (primary <strong>and</strong> alternate) while attempting to<br />

establish a connection.<br />

See “Specifying Primary <strong>and</strong> Alternate Servers” on page 126 for more<br />

information about specifying connection information for primary <strong>and</strong><br />

alternate servers.<br />

The code page the driver uses when converting character data. The<br />

specified code page overrides the default database code page. All<br />

character data retrieved from or written to the database is converted using<br />

the specified code page. The value must be a string containing the name<br />

of a valid code page supported by your Java Virtual Machine, for example,<br />

CodePageOverride=CP950.<br />

156 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 11. Informix Connection Properties (continued)<br />

Property Description<br />

ConnectionRetryCount<br />

OPTIONAL<br />

Informix<br />

The number of times the driver retries connections to a list of database<br />

servers (primary <strong>and</strong> alternate) until a successful connection is<br />

established. Valid values are 0 <strong>and</strong> any positive integer.<br />

If set to 0, the driver does not retry a connection to the list of database<br />

servers if a connection is not established on the driver’s first pass through<br />

the list.<br />

The default is 0.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:2003,server3:2003,server4:2003))<br />

<strong>and</strong><br />

ConnectionRetryCount=1<br />

if a connection is not successfully established on the driver’s first pass<br />

through the list of database servers, the driver retries all the servers in the<br />

list only once.<br />

If an application sets a login timeout value, the login timeout takes<br />

precedence over this property. For example, if the login timeout expires,<br />

any connection attempts to alternate servers stop.<br />

If the LoadBalancing property is set to true, the driver may sequence<br />

through the list of servers (primary <strong>and</strong> alternate) in a different order each<br />

time.<br />

The ConnectionRetryDelay property specifies the wait interval, in<br />

seconds, used between retry attempts.<br />

See “Connection Retry” on page 124 for more information about<br />

specifying connection information for primary <strong>and</strong> alternate servers.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 157


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 11. Informix Connection Properties (continued)<br />

Property Description<br />

ConnectionRetryDelay<br />

OPTIONAL<br />

The number of seconds the driver will wait between connection retry<br />

attempts when ConnectionRetryCount is set to a positive integer.<br />

The default is 3.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:2003,server3:2003,server4:2003))<br />

<strong>and</strong><br />

ConnectionRetryCount=2<br />

<strong>and</strong><br />

ConnectionRetryDelay=3<br />

if a connection is not successfully established on the driver’s first pass<br />

through the list of database servers, the driver retries the list of servers<br />

twice. It waits 3 seconds between the first connection retry attempt <strong>and</strong> the<br />

second connection retry attempt.<br />

NOTE: If the LoadBalancing property is set to true, the driver may<br />

sequence through the list of servers (primary <strong>and</strong> alternate) in a different<br />

order each time.<br />

See “Connection Retry” on page 124 for more information about<br />

specifying connection information for primary <strong>and</strong> alternate servers.<br />

DatabaseName The name of the database to which you want to connect.<br />

If this property is not specified, a connection is established to the specified<br />

server without connecting to a particular database. A connection that is<br />

established to the server without connecting to the database allows an<br />

application to use CREATE DATABASE <strong>and</strong> DROP DATABASE database queries.<br />

These statements require that the driver cannot be connected to a database.<br />

An application can connect to the database after the connection is<br />

established by executing the DATABASE database query.<br />

Refer to your IBM Informix documentation for details on using the CREATE<br />

DATABASE, DROP DATABASE, <strong>and</strong> DATABASE database queries.<br />

158 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 11. Informix Connection Properties (continued)<br />

Property Description<br />

DBDate<br />

OPTIONAL<br />

Informix<br />

Sets the Informix DBDate server environment variable for formatting<br />

literal date values when inserting, updating, <strong>and</strong> retrieving data in DATE<br />

columns. Using this property, you can customize:<br />

● Order in which the month, day, <strong>and</strong> year fields appear in a date string<br />

● Year field to contain two or four digits<br />

● Separator character used to separate the date fields<br />

Valid values are:<br />

DMY2 Y4DM<br />

DMY4 Y4MD<br />

MDY2 Y2DM<br />

MDY4 Y4MD<br />

where D is a 2-digit day field, M is a 2-digit month field, Y2 is a 2-digit year<br />

field, <strong>and</strong> Y4 is a 4-digit year field.<br />

If unspecified, the format of literal date values conforms to the default<br />

server behavior.<br />

Optionally, a separator character may be specified as the last character of<br />

the value. Valid separator characters are:<br />

Hyphen (-)<br />

Period (.)<br />

Forward slash (/)<br />

If a separator is not specified, a forward slash (/) is used to separate the<br />

fields. For example, a value of Y4MD- specifies a date format that has a 4digit<br />

year, followed by the month <strong>and</strong> then by the day. The date fields are<br />

separated by a hyphen (-). For example: 2004-02-15.<br />

This property does not affect the format of the string in the date escape<br />

syntax. Dates specified using the date escape syntax always use the JDBC<br />

escape format<br />

yyyy-mm-dd.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 159


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 11. Informix Connection Properties (continued)<br />

Property Description<br />

DiagnosticFilename<br />

OPTIONAL<br />

The path <strong>and</strong> filename of the file to which you want state information<br />

logged when an exception is generated. If the file does not already exist,<br />

it will be created the first time state information is generated. If this<br />

property is not specified, state information is not logged. When you<br />

contact Technical Support with a problem, you might be asked to generate<br />

a state information log.<br />

Your application should ensure that the driver is granted read/write<br />

permission to the specified file.<br />

InformixServer The name of the Informix database server to which you want to connect.<br />

InsensitiveResultSetBufferSize<br />

OPTIONAL<br />

{-1 | 0 | x}<br />

Determines the amount of memory used by the driver to cache insensitive<br />

result set data:<br />

● -1 — The driver caches all insensitive result set data in memory. If the<br />

size of the result set exceeds available memory, an<br />

OutOfMemoryException is generated. Because the need to write result<br />

set data to disk is eliminated, the driver processes the data more<br />

efficiently.<br />

● 0 — The driver caches all insensitive result set data in memory, up to<br />

a maximum of 2 GB. If the size of the result set data exceeds available<br />

memory, the driver pages the result set data to disk. Because result set<br />

data may be written to disk, the driver may have to reformat the data<br />

to write it correctly to disk.<br />

● x, where x is a positive integer — The driver caches all insensitive<br />

result set data in memory, using this value to set the size (in KB) of<br />

the memory buffer for caching insensitive result set data. If the size of<br />

the result set data exceeds the buffer size, the driver pages the result<br />

set data to disk. Because the result set data may be written to disk, the<br />

driver may have to reformat the data to write it correctly to disk.<br />

Specifying a buffer size that is a power of 2 results in more efficient<br />

memory use.<br />

The default is 2048 (KB)<br />

160 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 11. Informix Connection Properties (continued)<br />

Property Description<br />

LoadBalancing<br />

OPTIONAL<br />

{true | false}<br />

Informix<br />

Determines whether the driver will use client load balancing in its<br />

attempts to connect to a list of database servers (primary <strong>and</strong> alternate).<br />

The list of alternate servers is specified by the AlternateServers property.<br />

The LoadBalancing property determines behavior as follows:<br />

● true — The driver uses client load balancing <strong>and</strong> attempts to connect<br />

to the database servers (primary <strong>and</strong> alternate servers) in r<strong>and</strong>om<br />

order.<br />

● false — Client load balancing is not used <strong>and</strong> the driver connects to<br />

each server based on their sequential order (primary server first, then,<br />

alternate servers in the order they are specified).<br />

The default is false.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:2003,server3:2003;server4:2003)<br />

<strong>and</strong><br />

LoadBalancing=true<br />

the driver r<strong>and</strong>omly selects from the list of primary <strong>and</strong> alternate servers<br />

which server to connect to first. If that connection fails, the driver again<br />

r<strong>and</strong>omly selects from this list of servers until all servers in the list have<br />

been tried or a connection is successfully established.<br />

See “Client Load Balancing” on page 122 for more information about<br />

specifying connection information for primary <strong>and</strong> alternate servers.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 161


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 11. Informix Connection Properties (continued)<br />

Property Description<br />

MaxPooledStatements<br />

OPTIONAL<br />

The maximum number of pooled prepared statements for this connection.<br />

MaxPooledStatements property values determine behavior as follows:<br />

● An integer greater than zero (0) — Enables the Informix driver’s<br />

internal prepared statement pooling, which is useful when the driver<br />

is not running from within an application server or another<br />

application that provides its own prepared statement pooling. The<br />

driver uses this value to cache a certain number of prepared<br />

statements created by an application. For example, if the value of this<br />

property is set to 20, the driver caches the last 20 prepared statements<br />

created by the application.<br />

● A value greater than the number of prepared statements used by the<br />

application — All prepared statements created by the application are<br />

cached.<br />

Because CallableStatement is a sub-class of PreparedStatement,<br />

CallableStatements also are pooled.<br />

The default is 0.<br />

Password A case-insensitive password used to connect to your Informix database. A<br />

password is required only if security is enabled on your database. If so,<br />

contact your system administrator to obtain your password.<br />

User The case-insensitive default user name used to connect to the Informix<br />

database. A user name is required only if security is enabled on your<br />

database. If so, contact your system administrator to obtain your user<br />

name.<br />

162 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Informix Driver Connection Failover Properties<br />

Informix<br />

Table 12 summarizes the connection properties that control how connection failover<br />

works with the Database Service DB2 driver. See Table 11 for details about configuring<br />

each property.<br />

Table 12. Connection Failover Properties for the Informix Driver<br />

Property Description<br />

AlternateServers List of alternate database servers. An IP address or server name identifying each<br />

server is required. Port number <strong>and</strong> supported connection properties (DatabaseName<br />

or InformixServer) are optional. If the port number is unspecified, the port<br />

specified for the primary server is used. If a port number is not specified for the<br />

primary server, the port specified for the primary server is used.<br />

ConnectionRetryCount Number of times the driver retries the list of database servers (primary <strong>and</strong> alternate)<br />

until a successful connection is established. The default is 0 (connection retry is not<br />

used).<br />

ConnectionRetryDelay Wait interval, in seconds, used between attempts to connect to a list of database<br />

servers (primary <strong>and</strong> alternate) when the ConnectionRetryCount property is set to a<br />

positive integer. The default is 3.<br />

DatabaseName The name of the database to which you want to connect.<br />

InformixServer The name of the Informix database server to which you want to connect.<br />

LoadBalancing Sets whether the driver will use client load balancing in its attempts to connect to the<br />

list of database servers (primary <strong>and</strong> alternate). If client load balancing is enabled,<br />

the driver uses a r<strong>and</strong>om pattern instead of a sequential pattern in its attempts to<br />

connect. The default is false (client load balancing is disabled).<br />

See “Client Load Balancing” on page 122 <strong>and</strong> “Connection Failover” on page 123 for<br />

overviews of these features.<br />

Specifying Alternate Servers for the Informix Driver<br />

The following connection URL for the Informix driver specifies connection information<br />

for the primary <strong>and</strong> alternate servers:<br />

jdbc:sonic:informix://server1:2003;InformixServer=TestServer;<br />

DatabaseName=TestServer;<br />

AlternateServers=(server2:2003;InformixServer=TestServer2,server3:2003)<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 163


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

In this example:<br />

...server1:2003;InformixServer=TestServer;DatabaseName=TestServer...<br />

is the part of the connection URL that specifies connection information for the primary<br />

server. Alternate servers are specified using the AlternateServers property, in this<br />

example:<br />

...;AlternateServers=(server2:2003;InformixServer=TestServer2,server3:2003)<br />

You can specify the optional connection properties DatabaseName or InformixServer for<br />

each alternate server entry. For example:<br />

jdbc:sonic:informix://server1:2003;InformixServer=TestServer;<br />

DatabaseName=TestServer;<br />

AlternateServers=(server2:2003;InformixServer=TestServer2;<br />

DatabaseName=TestServer,server3:2003)<br />

If you do not specify an optional connection property in an alternate server entry, the<br />

connection to that alternate server uses the property specified in the URL for the primary<br />

server. For example, if you specify InformixServer=TestServer <strong>and</strong><br />

DatabaseName=TestServer for the primary server, but do not specify the InformixServer<br />

<strong>and</strong> DatabaseName properties in the alternate server entry as shown in the following URL,<br />

the driver uses the InformixServer <strong>and</strong> DatabaseName specified for the primary server <strong>and</strong><br />

tries to connect to the TestServer database on the Informix server TestServer:<br />

jdbc:sonic:informix://server1:2003;InformixServer=TestServer;<br />

DatabaseName=TestServer;AlternateServers=(server2:2003,server3:2003)<br />

Informix Driver Data Types<br />

Table 13 lists the data types supported by the Informix driver <strong>and</strong> describes how they are<br />

mapped to JDBC data types.<br />

Table 13. Informix Data Types<br />

Informix Data Type JDBC Data Type<br />

blob BLOB<br />

boolean BIT<br />

byte LONGVARBINARY<br />

164 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 13. Informix Data Types (continued)<br />

Informix Data Type JDBC Data Type<br />

clob CLOB<br />

char CHAR<br />

date DATE<br />

datetime hour to second TIME<br />

datetime year to day DATE<br />

datetime year to fraction(5) TIMESTAMP<br />

datetime year to second TIMESTAMP<br />

decimal DECIMAL<br />

float FLOAT<br />

int8 BIGINT<br />

integer INTEGER<br />

lvarchar VARCHAR<br />

money DECIMAL<br />

nchar CHAR<br />

nvarchar VARCHAR<br />

serial INTEGER<br />

serial8 BIGINT<br />

smallfloat REAL<br />

smallint SMALLINT<br />

text LONGVARCHAR<br />

varchar VARCHAR<br />

Informix<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 165


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Oracle<br />

The following sections describe settings for the <strong>Sonic</strong> Database Service Oracle driver:<br />

● “Oracle Driver Connection Properties”<br />

● “Oracle Driver Connection Failover Properties”<br />

● “Specifying Alternate Servers for the Oracle Driver”<br />

● “Oracle Driver Data Types”<br />

Oracle Driver Connection Properties<br />

Table 14 describes the JDBC connection properties supported by the Oracle driver. The<br />

properties have the format:<br />

property=value<br />

Note All connection property names are case-insensitive. For example, Password is the same<br />

as password.<br />

166 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 14. Connection Properties for the Oracle Driver<br />

Property Description<br />

AlternateServers<br />

OPTIONAL<br />

Oracle<br />

A comma-separated list of alternate database servers that the driver will<br />

try to connect to if the primary database server is unavailable. The value<br />

of this property is a string that specifies each alternate server. This string<br />

has the format:<br />

(servername1[:port1][;property=value[;...]],<br />

servername2[:port2][;property=value[;...]],...)<br />

The server name is required for each alternate server entry. Port number<br />

<strong>and</strong> connection properties (property=value) are optional for each<br />

alternate server entry. If the port is unspecified, the port number of the<br />

primary server is used. If the port number of the primary server is<br />

unspecified, the default port number of 1521 is used. Optional connection<br />

properties are ServiceName <strong>and</strong> SID. For example:<br />

jdbc:datadirect:oracle://server1:1521;<br />

ServiceName=TEST;AlternateServers=(server2:1521;<br />

ServiceName=TEST2,server3:1521;ServiceName=TEST3)<br />

contains alternate server entries for server2 <strong>and</strong> server3. The alternate<br />

server entries contain the optional ServiceName property. Similarly, you<br />

can use the optional SID property instead.<br />

Other properties include:<br />

● ConnectionRetryCount — Controls the number of times the driver<br />

retries the list of servers (primary <strong>and</strong> alternate) while attempting to<br />

establish a connection.<br />

● ConnectionRetryDelay — Sets the wait interval, in seconds, between<br />

retry attempts.<br />

● LoadBalancing — Controls the order in which the driver sequences<br />

through the list of servers (primary <strong>and</strong> alternate) while attempting<br />

to establish a connection.<br />

If using a tnsnames.ora file to retrieve connection information, do not<br />

specify this property.<br />

See “Specifying Primary <strong>and</strong> Alternate Servers” on page 126 for more<br />

information about specifying connection information for primary <strong>and</strong><br />

alternate servers.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 167


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 14. Connection Properties for the Oracle Driver (continued)<br />

Property Description<br />

BatchPerformanceWorkaround<br />

OPTIONAL<br />

CatalogIncludesSynonyms<br />

DEPRECATED<br />

CatalogOptions<br />

OPTIONAL<br />

{true | false}<br />

Determines the method used to execute batch operations:<br />

● true — The native Oracle batch mechanism is used. The native<br />

Oracle batch mechanism does not return individual update counts for<br />

each statement or parameter set in the batch. For this reason, the<br />

driver returns a value of SUCCESS_NO_INFO (-2) for each entry in the<br />

returned update count array.<br />

● false — The JDBC 3.0-compliant batch mechanism is used. If an<br />

application can accept not receiving update count information,<br />

setting this property to true can significantly improve performance.<br />

The default is false.<br />

This property is recognized for compatibility with existing data sources,<br />

but we recommend that you use the CatalogOptions property instead to<br />

include synonyms in result sets.<br />

{0 | 1 | 2 | 3}<br />

Determines the type of information included in result sets returned from<br />

catalog functions:<br />

● 0 — Result sets contain default DatabaseMetaData results.<br />

● 1 — Result sets contain Remarks information returned from the<br />

DatabaseMetaData methods: getTables <strong>and</strong> getColumns.<br />

● 2 — Result sets contain synonyms returned from the<br />

DatabaseMetaData methods: getColumns, getProcedures,<br />

getProcedureColumns, <strong>and</strong> getIndexInfo.<br />

● 3 — Result sets contain remarks <strong>and</strong> synonyms (as described in<br />

options 1 <strong>and</strong> 2).<br />

The default is 2.<br />

168 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 14. Connection Properties for the Oracle Driver (continued)<br />

Property Description<br />

ConnectionRetryCount<br />

OPTIONAL<br />

Oracle<br />

The number of times the driver retries connections to a list of database<br />

servers (primary <strong>and</strong> alternate) until a successful connection is<br />

established. Valid values are 0 <strong>and</strong> any positive integer.<br />

If set to 0, the driver does not retry a connection to the list of database<br />

servers if a connection is not established on the driver’s first pass through<br />

the list.<br />

The default is 0.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:1521,server3:1521,server4:1521)<br />

<strong>and</strong><br />

ConnectionRetryCount=1<br />

if a connection is not successfully established on the driver’s first pass<br />

through the list of database servers, the driver retries all the servers in the<br />

list only once.<br />

If an application sets a login timeout value (for example, using<br />

DriverManager.loginTimeout), the login timeout takes precedence over<br />

this property. For example, if the login timeout expires, any connection<br />

attempts to alternate servers stop.<br />

If the LoadBalancing property also is specified, the driver may sequence<br />

through the list of servers (primary <strong>and</strong> alternate) in a different order each<br />

time.<br />

The ConnectionRetryDelay property specifies the wait interval, in<br />

seconds, used between attempts.<br />

See “Connection Retry” on page 124 for more information about<br />

specifying connection information for primary <strong>and</strong> alternate servers.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 169


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 14. Connection Properties for the Oracle Driver (continued)<br />

Property Description<br />

ConnectionRetryDelay<br />

OPTIONAL<br />

DiagnosticFilename<br />

OPTIONAL<br />

The number of seconds the driver waits before retrying connections to a<br />

list of database servers (primary <strong>and</strong> alternate) when<br />

ConnectionRetryCount is set to a positive integer.<br />

The default is 3.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:1521,server3:1521,server4:1521)<br />

<strong>and</strong><br />

ConnectionRetryCount=2<br />

<strong>and</strong><br />

ConnectionRetryDelay=3<br />

if a connection is not successfully established on the driver’s first pass<br />

through the list of database servers, the driver retries the list of servers<br />

twice. The driver waits 3 seconds between the first connection retry<br />

attempt <strong>and</strong> the second connection retry attempt.<br />

If the LoadBalancing property also is specified, the driver may sequence<br />

through the list of servers (primary <strong>and</strong> alternate) in a different order each<br />

time.<br />

The ConnectionRetryCount property specifies the number of times the<br />

driver will attempt to connect to all the servers in the list of alternate<br />

servers.<br />

See “Connection Retry” on page 124 for more information about<br />

specifying connection information for primary <strong>and</strong> alternate servers.<br />

The path <strong>and</strong> filename of the file to which you want state information<br />

logged when an exception is generated. If the file does not already exist,<br />

it will be created the first time state information is generated. If this<br />

property is not specified, state information is not logged. When you<br />

contact Technical Support with a problem, you might be asked to<br />

generate a state information log.<br />

Your application should ensure that the driver is granted read/write<br />

permission to the specified file.<br />

170 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 14. Connection Properties for the Oracle Driver (continued)<br />

Property Description<br />

FetchTSWTZasTimestamp<br />

OPTIONAL<br />

InsensitiveResultSetBufferSize<br />

OPTIONAL<br />

{true | false}<br />

This property determines behavior as follows:<br />

Oracle<br />

● true — Allows column values with the TIMESTAMP WITH TIME ZONE<br />

data type (Oracle9i or higher) to be retrieved as a JDBC TIMESTAMP<br />

data type.<br />

● false — Column values with the TIMESTAMP WITH TIME ZONE data<br />

type must be retrieved as a string.<br />

The default is false.<br />

{-1 | 0 | x}<br />

Determines the amount of memory used by the driver to cache insensitive<br />

result set data:<br />

● -1 — The driver caches all insensitive result set data in memory. If<br />

the size of the result set exceeds available memory, an<br />

OutOfMemoryException is generated. Because the need to write result<br />

set data to disk is eliminated, the driver processes the data more<br />

efficiently.<br />

● 0 — The driver caches all insensitive result set data in memory, up to<br />

a maximum of 2 GB. If the size of the result set data exceeds<br />

available memory, the driver pages the result set data to disk.<br />

Because result set data may be written to disk, the driver may have<br />

to reformat the data to write it correctly to disk.<br />

● x, where x is a positive integer — The driver caches all insensitive<br />

result set data in memory, using this value to set the size (in KB) of<br />

the memory buffer for caching insensitive result set data. If the size<br />

of the result set data exceeds the buffer size, the driver pages the<br />

result set data to disk. Because the result set data may be written to<br />

disk, the driver may have to reformat the data to write it correctly to<br />

disk. Specifying a buffer size that is a power of 2 results in more<br />

efficient memory use.<br />

The default is 2048 (KB).<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 171


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 14. Connection Properties for the Oracle Driver (continued)<br />

Property Description<br />

LoadBalancing<br />

OPTIONAL<br />

{true | false}<br />

Determines whether the driver will use client load balancing in its<br />

attempts to connect to a list of database servers (primary <strong>and</strong> alternate).<br />

The list of alternate servers is specified by the AlternateServers<br />

property. The LoadBalancing property determines behavior as follows:<br />

● true — Client load balancing is used <strong>and</strong> the driver attempts to<br />

connect to the list of database servers (primary <strong>and</strong> alternate servers)<br />

in r<strong>and</strong>om order.<br />

● false — Client load balancing is not used <strong>and</strong> the driver connects to<br />

each server based on their sequential order (primary server first,<br />

then, alternate servers in the order they are specified).<br />

The default is false.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:1521,server3:1521,server4:1521)<br />

<strong>and</strong><br />

LoadBalancing=true<br />

the driver r<strong>and</strong>omly selects from the list of primary <strong>and</strong> alternate servers<br />

which server to connect to first. If that connection fails, the driver again<br />

r<strong>and</strong>omly selects from this list of servers until all servers in the list have<br />

been tried or a connection is successfully established.<br />

If using a tnsnames.ora file to retrieve connection information, do not<br />

specify this property.<br />

See “Client Load Balancing” on page 122 or more information about<br />

specifying connection information for primary <strong>and</strong> alternate servers.<br />

172 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 14. Connection Properties for the Oracle Driver (continued)<br />

Property Description<br />

MaxPooledStatements<br />

OPTIONAL<br />

Oracle<br />

The maximum number of pooled prepared statements for this connection.<br />

MaxPooledStatements property values determine behavior as follows:<br />

● An integer greater than zero (0) — Enables the Oracle driver’s<br />

internal prepared statement pooling, which is useful when the driver<br />

is not running from within an application server or another<br />

application that provides its own prepared statement pooling. The<br />

driver uses this value to cache a certain number of prepared<br />

statements created by an application. For example, if the value of this<br />

property is set to 20, the driver caches the last 20 prepared statements<br />

created by the application.<br />

● A value greater than the number of prepared statements used by the<br />

application — All prepared statements created by the application are<br />

cached.<br />

Because CallableStatement is a sub-class of PreparedStatement,<br />

CallableStatements also are pooled.<br />

The default is 0.<br />

Password A case-insensitive password used to connect to your Oracle database. A<br />

password is required only if security is enabled on your database. If so,<br />

contact your system administrator to obtain your password.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 173


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 14. Connection Properties for the Oracle Driver (continued)<br />

Property Description<br />

ServerType<br />

OPTIONAL<br />

ServiceName<br />

OPTIONAL<br />

{Shared | Dedicated}<br />

Specifies whether the connection is established using a shared or<br />

dedicated server process (UNIX) or thread (Windows):<br />

● Shared — The server process to be used is retrieved from a pool. The<br />

socket connection between the client <strong>and</strong> server is made to a<br />

dispatcher process on the server. This setting allows there to be fewer<br />

processes than the number of connections, reducing the need for<br />

server resources. Use this value when a server must h<strong>and</strong>le many<br />

users with fewer server resources.<br />

● Dedicated — A server process is created to service only that<br />

connection. When that connection ends, so does the process (UNIX)<br />

or thread (Windows). The socket connection is made directly<br />

between the application <strong>and</strong> the dedicated server process or thread.<br />

When connecting to UNIX servers, a dedicated server process can<br />

provide significant performance improvement, but uses more<br />

resources on the server. When connecting to Windows servers, the<br />

server resource penalty is insignificant. Use this value if you have a<br />

batch environment with low numbers of users.<br />

● Unspecified — The driver uses the server type set on the server.<br />

If using a tnsnames.ora file to provide connection information, do not<br />

specify this property.<br />

The database service name that specifies the database used for the<br />

connection. The service name is a string that is the global database<br />

name—a name that typically comprises the database name <strong>and</strong> domain<br />

name. For example:<br />

sales.us.acme.com<br />

This property is useful to specify connections to an Oracle Real<br />

Application Clusters (RAC) system rather than a specific Oracle instance<br />

because the nodes in a RAC system share a common service name.<br />

If using a tnsnames.ora file to provide connection information, do not<br />

specify this property.<br />

174 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 14. Connection Properties for the Oracle Driver (continued)<br />

Property Description<br />

SID<br />

OPTIONAL<br />

TNSNamesFile<br />

OPTIONAL<br />

Oracle<br />

The Oracle System Identifier that refers to the instance of the Oracle<br />

database running on the server. This property is mutually exclusive with<br />

the ServiceName property.<br />

The default is ORCL, which is the default SID that is configured when<br />

installing your Oracle database.<br />

If using a tnsnames.ora file to provide connection information, do not<br />

specify this property.<br />

The path <strong>and</strong> filename to the tnsnames.ora file from which connection<br />

information is retrieved. The tnsnames.ora file contains connection<br />

information that is mapped to Oracle net service names. Using a<br />

tnsnames.ora file to centralize connection information simplifies<br />

maintenance when changes occur.<br />

The value of this property must be a valid path <strong>and</strong> filename to a<br />

tnsnames.ora file.<br />

If you specify this property, you also must specify the TNSServerName<br />

property.<br />

If this property is specified, do not specify the following properties to<br />

prevent connection information conflicts:<br />

● AlternateServers<br />

● LoadBalancing<br />

● PortNumber<br />

● ServerName<br />

● ServerType<br />

● ServiceName<br />

● SID<br />

If any of these properties are specified in addition to this property, the<br />

driver generates an exception.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 175


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 14. Connection Properties for the Oracle Driver (continued)<br />

Property Description<br />

TNSServerName<br />

OPTIONAL<br />

The Oracle net service name used to reference the connection<br />

information in a tnsnames.ora file. The value of this property must be a<br />

valid net service name entry in the tnsnames.ora file specified by the<br />

TNSNamesFile property.<br />

If this property is specified, you also must specify the TNSNamesFile<br />

property.<br />

If this property is specified, do not specify the following properties to<br />

prevent connection information conflicts:<br />

● AlternateServers<br />

● LoadBalancing<br />

● PortNumber<br />

● ServerName<br />

● ServerType<br />

● ServiceName<br />

● SID<br />

If any of these properties are specified in addition to this property, the<br />

driver generates an exception.<br />

User The case-insensitive default user name used to connect to your Oracle<br />

database. A user name is required only if security is enabled on your<br />

database. If so, contact your system administrator to obtain your user<br />

name. Operating System authentication is not currently supported by the<br />

Oracle driver.<br />

176 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Oracle Driver Connection Failover Properties<br />

Oracle<br />

Table 15 summarizes the connection properties that control how connection failover<br />

works with the Oracle driver. See Table 14 for details about configuring each property.<br />

Table 15. Connection Failover Properties for the Oracle Driver<br />

Property Description<br />

AlternateServers List of alternate database servers. An IP address or server name identifying each<br />

server is required. Port number <strong>and</strong> the ServiceName or SID connection properties<br />

are optional. If the port number is unspecified, the port specified for the primary<br />

server is used. If a port number is not specified for the primary server, the default<br />

port number of 1521 is used.<br />

ConnectionRetryCount Number of times the driver retries the list of database servers (primary <strong>and</strong> alternate)<br />

until a successful connection is established. The default is 0 (connection retry is not<br />

used).<br />

ConnectionRetryDelay Wait interval, in seconds, used between attempts to connect to a list of database<br />

servers (primary <strong>and</strong> alternate) when the ConnectionRetryCount property is set to a<br />

positive integer. The default is 3.<br />

LoadBalancing Sets whether the driver will use client load balancing in its attempts to connect to the<br />

list of database servers (primary <strong>and</strong> alternate). If client load balancing is enabled,<br />

the driver uses a r<strong>and</strong>om pattern instead of a sequential pattern in its attempts to<br />

connect. The default is false (client load balancing is disabled).<br />

ServiceName The database service name that specifies the database used for the connection. This<br />

property is mutually exclusive with the SID property.<br />

SID The Oracle System Identifier that refers to the instance of the Oracle database<br />

running on the server. The default is ORCL. This property is mutually exclusive with<br />

the ServiceName property.<br />

See “Client Load Balancing” on page 122 <strong>and</strong> “Connection Failover” on page 123 for<br />

overviews of these features.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 177


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Specifying Alternate Servers for the Oracle Driver<br />

The following connection URL for the Oracle driver specifies connection information for<br />

the primary <strong>and</strong> alternate servers:<br />

jdbc:sonic:oracle://server1:1521;ServiceName=TEST;<br />

AlternateServers=(server2:1521;ServiceName=TEST2,server3:1521;<br />

ServiceName=TEST3)<br />

In this example:<br />

...server1:1521;ServiceName=TEST...<br />

is the part of the connection URL that specifies connection information for the primary<br />

server. Alternate servers are specified using the AlternateServers property, in this<br />

example:<br />

...;AlternateServers=(server2:1521;ServiceName=TEST2,<br />

server3:50000;ServiceName=TEST3)<br />

You can specify the optional connection properties ServiceName or SID for each alternate<br />

server entry. These properties are mutually exclusive. For example:<br />

jdbc:sonic:oracle://server1:1521;ServiceName=TEST;<br />

AlternateServers=(server2:1521;ServiceName=TEST2,server3:1521)<br />

or<br />

jdbc:sonic:oracle://server1:1521;SID=ORCL;<br />

AlternateServers=(server2:1521;SID=ORCL2,server3:1521)<br />

If you do not specify an optional connection property in an alternate server entry, the<br />

connection to that alternate server uses the property specified in the URL for the primary<br />

server. For example, if you specify SID=ORCL for the primary server, but do not specify a<br />

SID in the alternate server entry as shown in the following URL, the driver uses the SID<br />

specified for the primary server <strong>and</strong> tries to connect to the ORCL database on the alternate<br />

server:<br />

jdbc:sonic:oracle://server1:1521;SID=ORCL;<br />

AlternateServers=(server2:1521,server3:1521)<br />

178 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Oracle Driver Data Types<br />

The following sections list data types supported by the Oracle driver, <strong>and</strong> describe the<br />

XMLType data type supported by Oracle9i <strong>and</strong> higher drivers.<br />

Oracle Data Types<br />

Oracle<br />

Table 16 lists the data types supported by the Oracle driver <strong>and</strong> describes how they are<br />

mapped to JDBC data types.<br />

Table 16. Oracle Data Types<br />

Oracle Database Oracle Data Type JDBC Data Type<br />

Oracle8i <strong>and</strong> higher BFILE BLOB<br />

BLOB BLOB<br />

CHAR CHAR<br />

CLOB CLOB<br />

DATE TIMESTAMP<br />

FLOAT(n) DOUBLE<br />

LONG LONGVARCHAR<br />

long raw LONGVARBINARY<br />

NCHAR CHAR<br />

NCLOB CLOB<br />

NUMBER (p, s) DECIMAL<br />

NUMBER DOUBLE<br />

NVARCHAR2 VARCHAR<br />

Oracle9i <strong>and</strong> higher TIMESTAMP TIMESTAMP<br />

TIMESTAMP WITH LOCAL TIME<br />

ZONE<br />

TIMESTAMP<br />

TIMESTAMP WITH TIME ZONE VARCHAR<br />

VARCHAR2 VARCHAR<br />

XMLType CLOB<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 179


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 16. Oracle Data Types (continued)<br />

Oracle Database Oracle Data Type JDBC Data Type<br />

Oracle10g only BINARY_FLOAT REAL<br />

XMLType Data Type<br />

BINARY_DOUBLE DOUBLE<br />

The Oracle driver supports tables containing columns specified as XMLType for Oracle9i<br />

<strong>and</strong> higher. The driver maps the Oracle XMLType data type to the JDBC CLOB data type.<br />

XMLType columns can be used in queries just like any other column type. The data from<br />

XMLType columns can be retrieved as a String, Clob, CharacterStream, or AsciiStream.<br />

When inserting or updating XMLType columns, the data to be inserted or updated must be<br />

in the form of an XMLType data type.<br />

Oracle provides the xmltype() function to construct an XMLType data object. The xmlData<br />

argument of the xmltype() function can be specified as a string literal or a parameter<br />

marker. If a parameter marker is used, the parameter value may be set using the setString,<br />

setClob, setCharacterStream, or setAsciiStream methods.<br />

The following code inserts data into an XMLType column using a statement with a string<br />

literal as the xmlData argument of the xmltype() function:<br />

// Insert xml data as a literal<br />

String sql = "insert into XMLTypeTbl values (1, xmltype('" +<br />

"123Mark'))";<br />

Statement stmt = con.createStatement();<br />

stmt.executeUpdate(sql);<br />

The following code inserts data into an XMLType column using a prepared statement:<br />

// Insert xml data as a String parameter<br />

String xmlStr = "234Trish";<br />

String sql = "insert into XMLTypeTbl values (?, xmltype(?))";<br />

PreparedStatement prepStmt = con.prepareStatement(sql);<br />

prepStmt.setInt(1, 2);<br />

prepStmt.setString(2, xmlStr);<br />

prepStmt.executeUpdate();<br />

180 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Microsoft SQL Server<br />

When the data from an XMLType column is retrieved as a Clob, the XMLType data cannot be<br />

updated using the Clob object. Calling the setString, setCharacterStream, or<br />

setAsciiStream methods of a Clob object returned from an XMLType column generates an<br />

SQLException.<br />

Microsoft SQL Server<br />

The following sections describe settings for the <strong>Sonic</strong> Database Service Microsoft SQL<br />

Server driver:<br />

● “Microsoft SQL Server Driver Connection Properties”<br />

● “Microsoft SQL Server Driver Connection Failover Properties”<br />

● “Specifying Alternate Servers for the Microsoft SQL Server Driver”<br />

● “Microsoft SQL Server Driver Data Types”<br />

Microsoft SQL Server Driver Connection Properties<br />

Table 17 describes the JDBC connection properties supported by the Microsoft SQL<br />

Server driver. The properties have the format:<br />

property=value<br />

Note All connection property names are case-insensitive. For example, Password is the same<br />

as password.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 181


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 17. Connection Properties for the Microsoft SQL Server Driver<br />

Property Description<br />

AlternateServers<br />

OPTIONAL<br />

A comma-separated list of alternate database servers that the driver will<br />

try to connect to if the primary database server is unavailable. The value<br />

of this property is a string that specifies each alternate server. This string<br />

has the format:<br />

(servername1[:port1][;property=value],<br />

servername2[:port2][;property=value],...)<br />

The server name is required for each alternate server entry. Port number<br />

<strong>and</strong> connection properties (property=value) are optional for each<br />

alternate server entry. If the port is unspecified, the port number specified<br />

for the primary server is used. If a port number for the primary server is<br />

unspecified, the default port number of 1433 is used. The driver allows<br />

only one optional connection property, DatabaseName. For example:<br />

jdbc:sonic:sqlserver://server1:1433;<br />

DatabaseName=TEST;AlternateServers=(server2:1433;<br />

DatabaseName=TEST2,server3:1433;DatabaseName=TEST3)<br />

contains alternate server entries for server2 <strong>and</strong> server3. The alternate<br />

server entries contain the optional DatabaseName property.<br />

Other properties are:<br />

● ConnectionRetryCount — Controls the number of times the driver<br />

retries the list of servers (primary <strong>and</strong> alternate) while attempting to<br />

establish a connection.<br />

● ConnectionRetryDelay — Sets the wait interval, in seconds, between<br />

retry attempts.<br />

● LoadBalancing — Controls the order in which the driver sequences<br />

through the list of servers (primary <strong>and</strong> alternate) while attempting<br />

to establish a connection.<br />

See “Specifying Primary <strong>and</strong> Alternate Servers” on page 126 or more<br />

information about specifying connection information for primary <strong>and</strong><br />

alternate servers.<br />

182 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 17. Connection Properties for the Microsoft SQL Server Driver (continued)<br />

Property Description<br />

AlwaysReportTriggerResults<br />

OPTIONAL<br />

CodePageOverride<br />

OPTIONAL<br />

{true | false}<br />

Microsoft SQL Server<br />

Determines how the driver reports results generated by database triggers<br />

(procedures that are stored in the database <strong>and</strong> executed, or fired, when a<br />

table is modified):<br />

● true — The driver returns all results, including results generated by<br />

triggers. Multiple trigger results are returned one at a time. Use the<br />

Statement.getMoreResults method to retrieve individual trigger<br />

results. Warnings <strong>and</strong> errors are reported in the results as they are<br />

encountered.<br />

● false — The driver does not report trigger results if the statement is<br />

a single Insert, Update, or Delete statement. In this case, the only<br />

result that is returned is the update count generated by the statement<br />

that was executed (if errors do not occur). Although trigger results<br />

are ignored, any errors generated by the trigger are reported. Any<br />

warnings generated by the trigger are enqueued. If errors are<br />

reported, the update count is not reported.<br />

The default is false.<br />

Specifies the code page the driver uses when converting character data.<br />

The specified code page overrides the default database code page. All<br />

character data retrieved from or written to the database is converted using<br />

the specified code page. The value must be a string containing the name<br />

of a valid code page supported by your Java Virtual Machine, for<br />

example, CodePageOverride=CP950.<br />

If a value is set for the CodePageOverride property <strong>and</strong> the<br />

SendStringParametersAsUnicode property is set to true, the driver<br />

ignores the SendStringParametersAsUnicode property <strong>and</strong> generates a<br />

warning. The driver always sends parameters using the code page<br />

specified by CodePageOverride if this property is specified.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 183


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 17. Connection Properties for the Microsoft SQL Server Driver (continued)<br />

Property Description<br />

ConnectionRetryCount<br />

OPTIONAL<br />

The number of times the driver retries connections to a list of database<br />

servers (primary <strong>and</strong> alternate) until a successful connection is<br />

established. Valid values are 0 <strong>and</strong> any positive integer.<br />

If set to 0, the driver does not retry a connection to the list of database<br />

servers if a connection is not established on the driver’s first pass through<br />

the list.<br />

The default is 0.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:1433,server3:1433,server4:1433)<br />

<strong>and</strong><br />

ConnectionRetryCount=1<br />

if a connection is not successfully established on the driver’s first pass<br />

through the list of database servers, the driver retries all the servers in the<br />

list only once.<br />

If an application sets a login timeout value, the login timeout takes<br />

precedence over this property. For example, if the login timeout expires,<br />

any connection attempts to alternate servers stop.<br />

If the LoadBalancing property is set to true, the driver may sequence<br />

through the list of servers (primary <strong>and</strong> alternate) in a different order each<br />

time.<br />

The ConnectionRetryDelay property specifies the wait interval, in<br />

seconds, used between attempts.<br />

See “Connection Retry” on page 124 for more information about<br />

specifying connection information for primary <strong>and</strong> alternate servers.<br />

184 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 17. Connection Properties for the Microsoft SQL Server Driver (continued)<br />

Property Description<br />

ConnectionRetryDelay<br />

OPTIONAL<br />

DatabaseName<br />

OPTIONAL<br />

DiagnosticFilename<br />

OPTIONAL<br />

HostProcess<br />

OPTIONAL<br />

Microsoft SQL Server<br />

The number of seconds the driver waits before retrying a list of database<br />

servers (primary <strong>and</strong> alternate) when ConnectionRetryCount is set to a<br />

positive integer.<br />

The default is 3.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:1433,server3:1433,server4:1433)<br />

<strong>and</strong><br />

ConnectionRetryCount=2<br />

<strong>and</strong><br />

ConnectionRetryDelay=3<br />

if a connection is not successfully established on the driver’s first pass<br />

through the list of database servers, the driver retries the list of servers<br />

twice. It waits 3 seconds between the first connection retry attempt <strong>and</strong><br />

the second connection retry attempt.<br />

NOTE: If the LoadBalancing property is set to true, the driver may<br />

sequence through the list of servers (primary <strong>and</strong> alternate) in a different<br />

order each time.<br />

See “Connection Retry” on page 124 for more information about<br />

specifying connection information for primary <strong>and</strong> alternate servers.<br />

The name of the database to which you want to connect.<br />

The path <strong>and</strong> filename of the file to which you want state information<br />

logged when an exception is generated. If the file does not already exist,<br />

it will be created the first time state information is generated. If this<br />

property is not specified, state information is not logged. When you<br />

contact Technical Support with a problem, you might be asked to<br />

generate a state information log.<br />

Your application should ensure that the driver is granted read/write<br />

permission to the specified file.<br />

The process ID of the application connecting to Microsoft SQL Server.<br />

The value of this property appears in the hostprocess column of the<br />

master.dbo.sysprocesses table <strong>and</strong> may be useful for database<br />

administration purposes.<br />

The default is 0.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 185


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 17. Connection Properties for the Microsoft SQL Server Driver (continued)<br />

Property Description<br />

InsensitiveResultSetBufferSize<br />

OPTIONAL<br />

{-1 | 0 | x}<br />

Determines the amount of memory used by the driver to cache insensitive<br />

result set data. This property must have one of the following values:<br />

● -1 — The driver caches all insensitive result set data in memory. If<br />

the size of the result set exceeds available memory, an<br />

OutOfMemoryException is generated. Because the need to write result<br />

set data to disk is eliminated, the driver processes the data more<br />

efficiently.<br />

● 0 — The driver caches all insensitive result set data in memory, up to<br />

a maximum of 2 GB. If the size of the result set data exceeds<br />

available memory, the driver pages the result set data to disk.<br />

Because result set data may be written to disk, the driver may have<br />

to reformat the data to write it correctly to disk.<br />

● x, where x is a positive integer — The driver caches all insensitive<br />

result set data in memory, using this value to set the size (in KB) of<br />

the memory buffer for caching insensitive result set data. If the size<br />

of the result set data exceeds the buffer size, the driver pages the<br />

result set data to disk. Because the result set data may be written to<br />

disk, the driver may have to reformat the data to write it correctly to<br />

disk. Specifying a buffer size that is a power of 2 results in more<br />

efficient memory use.<br />

The default is 2048 (KB).<br />

186 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 17. Connection Properties for the Microsoft SQL Server Driver (continued)<br />

Property Description<br />

LoadBalancing<br />

OPTIONAL<br />

{true | false}<br />

Microsoft SQL Server<br />

Determines whether the driver will use client load balancing in its<br />

attempts to connect to a list of database servers (primary <strong>and</strong> alternate).<br />

The list of alternate servers is specified by the AlternateServers<br />

property. The LoadBalancing property determines behavior as follows:<br />

● true — Client load balancing is used <strong>and</strong> the driver attempts to<br />

connect to the list of database servers (primary <strong>and</strong> alternate servers)<br />

in r<strong>and</strong>om order.<br />

● false — Client load balancing is not used <strong>and</strong> the driver connects to<br />

each server based on their sequential order (primary server first,<br />

then, alternate servers in the order they are specified).<br />

The default is false.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:1433,server3:1433,server4:1433)<br />

<strong>and</strong><br />

LoadBalancing=true<br />

the driver r<strong>and</strong>omly selects from the list of primary <strong>and</strong> alternate servers<br />

which server to connect to first. If that connection fails, the driver again<br />

r<strong>and</strong>omly selects from this list of servers until all servers in the list have<br />

been tried or a connection is successfully established.<br />

See “Client Load Balancing” on page 122 for more information about<br />

specifying connection information for primary <strong>and</strong> alternate servers.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 187


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 17. Connection Properties for the Microsoft SQL Server Driver (continued)<br />

Property Description<br />

MaxPooledStatements<br />

OPTIONAL<br />

NetAddress<br />

OPTIONAL<br />

Password<br />

OPTIONAL<br />

ProgramName<br />

OPTIONAL<br />

The maximum number of pooled prepared statements for this connection.<br />

MaxPooledStatements property values determine behavior as follows:<br />

● An integer greater than zero (0) — Enables the SQL Server driver’s<br />

internal prepared statement pooling, which is useful when the driver<br />

is not running from within an application server or another<br />

application that provides its own prepared statement pooling. The<br />

driver uses this value to cache a certain number of prepared<br />

statements created by an application. For example, if the value of this<br />

property is set to 20, the driver caches the last 20 prepared statements<br />

created by the application.<br />

● A value greater than the number of prepared statements used by the<br />

application — All prepared statements created by the application are<br />

cached.<br />

Because CallableStatement is a sub-class of PreparedStatement,<br />

CallableStatements also are pooled.<br />

The default is 0.<br />

The Media Access Control (MAC) address of the network interface card<br />

of the application connecting to Microsoft SQL Server. The value of this<br />

property appears in the net_address column of the<br />

master.dbo.sysprocesses table <strong>and</strong> is used for database administration<br />

purposes.<br />

The default is 000000000000.<br />

A case-insensitive password used to connect to your Microsoft SQL<br />

Server database. If a user name is not specified, the driver will use<br />

Windows authentication when connecting to Microsoft SQL Server. In<br />

this case, a password is not required. If a password is required, contact<br />

your system administrator to obtain your password.<br />

Refer to the <strong>Progress</strong> <strong>Sonic</strong> Installation <strong>and</strong> Upgrade <strong>Guide</strong> for product<br />

requirements <strong>and</strong> configuration that must be met to use Windows<br />

authentication with the SQL Server driver.<br />

The name of the application connecting to Microsoft SQL Server. The<br />

value of this property appears in the program_name column of the<br />

master.dbo.sysprocesses table <strong>and</strong> is useful for database administration<br />

purposes.<br />

The default is an empty string.<br />

188 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 17. Connection Properties for the Microsoft SQL Server Driver (continued)<br />

Property Description<br />

SelectMethod<br />

OPTIONAL<br />

{direct | cursor}<br />

Microsoft SQL Server<br />

A hint to the driver that determines whether the driver requests a database<br />

cursor for Select statements. Performance <strong>and</strong> behavior of the driver are<br />

affected by this property, which is defined as a hint because the driver<br />

might not always be able to satisfy the requested method.<br />

● Direct — When the driver uses the Direct method, the database<br />

server sends the complete result set in a single response to the driver<br />

when responding to a query. A server-side database cursor is not<br />

created. Typically, responses are not cached by the driver. Using this<br />

method, the driver must process all the response to a query before<br />

another query is submitted. If another query is submitted (using a<br />

different statement on the same connection, for example), the driver<br />

caches the response to the first query before submitting the second<br />

query. Typically, the Direct method performs better than the Cursor<br />

method.<br />

● Cursor — When the driver uses the Cursor method, a server-side<br />

cursor is requested. The rows are retrieved from the server in blocks<br />

when returning forward-only result sets. The JDBC Statement<br />

method setFetchSize can be used to control the number of rows that<br />

are retrieved for each request. Performance tests show that the value<br />

of setFetchSize significantly impacts performance when the Cursor<br />

method is used. There is no simple rule for determining the<br />

setFetchSize value that you should use. We recommend that you<br />

experiment with different setFetchSize values to determine which<br />

value gives the best performance for your application. The Cursor<br />

method is useful for queries that produce a large amount of data,<br />

particularly if multiple open result sets are used.<br />

The default is Direct.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 189


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 17. Connection Properties for the Microsoft SQL Server Driver (continued)<br />

Property Description<br />

SendStringParametersAsUnicode<br />

OPTIONAL<br />

User<br />

OPTIONAL<br />

{true | false}<br />

UseServerSideUpdatableCursors {true | false}<br />

Determines whether string parameters are sent to the Microsoft SQL<br />

Server database in Unicode or in the default character encoding of the<br />

database:<br />

● true — String parameters are sent to Microsoft SQL Server in<br />

Unicode.<br />

● false — String parameters are sent in the default encoding, which<br />

can improve performance because the server does not need to<br />

convert Unicode characters to the default encoding. You should,<br />

however, use default encoding only if the parameter string data you<br />

specify is the same as the default encoding of the database.<br />

The default is true.<br />

If a value is specified for the CodePageOverride property <strong>and</strong> this<br />

property is set to true, this property is ignored <strong>and</strong> a warning is<br />

generated.<br />

The case-insensitive user name used to connect to your Microsoft SQL<br />

Server database. If a user name is not specified, the driver uses Windows<br />

authentication when connecting to the database server. In this case, a user<br />

name is not required. If a user name is required, contact your system<br />

administrator to obtain your user name.<br />

Refer to the <strong>Progress</strong> <strong>Sonic</strong> Installation <strong>and</strong> Upgrade <strong>Guide</strong> for product<br />

<strong>and</strong> configuration requirements that must be met to use Windows<br />

authentication with the SQL Server driver.<br />

Determines whether the driver uses server-side cursors when an<br />

updatable result set is requested:<br />

● true — Server-side updatable cursors are created when an updatable<br />

result set is requested.<br />

● false — The default updatable result set functionality is used.<br />

The default is false.<br />

190 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 17. Connection Properties for the Microsoft SQL Server Driver (continued)<br />

Property Description<br />

WSID<br />

OPTIONAL<br />

XATransactionGroup<br />

OPTIONAL<br />

Microsoft SQL Server<br />

The workstation ID, which typically is the network name of the computer<br />

on which the application resides. If specified, this value is stored in the<br />

hostname column of the master.dbo.sysprocesses table <strong>and</strong> can be<br />

returned by sp_who <strong>and</strong> the Transact-SQL HOST_NAME function. The value<br />

is useful for database administration purposes.<br />

The default is an empty string.<br />

The transaction group ID that identifies any transactions initiated by the<br />

connection. This ID can be used for distributed transaction cleanup<br />

purposes.<br />

You can use the XAResource.recover method to roll back any<br />

transactions left in an unprepared state. When you call<br />

XAResource.recover, any transactions that match the ID on the<br />

connection used to call XAResource.recover are rolled back. For<br />

example, if you specify XATransactionGroup=ACCT200 <strong>and</strong> call<br />

XAResource.recover on the same connection, any transactions left in an<br />

unprepared state identified by the transaction group ID of ACCT200 are<br />

rolled back.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 191


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Microsoft SQL Server Driver Connection Failover Properties<br />

Table 18 summarizes the connection properties that control how connection failover<br />

works with the Database Service SQL Server driver. See Table 17 for details about<br />

configuring each property.<br />

Table 18. Connection Failover Properties for the Microsoft SQL Server Driver<br />

Property Description<br />

AlternateServers List of alternate database servers. An IP address or server name identifying each<br />

server is required. Port number <strong>and</strong> supported connection properties (DatabaseName)<br />

are optional. If the port number is unspecified, the port number specified for the<br />

primary server is used. If a port number is unspecified for the primary server, the<br />

default port number of 1433 is used.<br />

ConnectionRetryCount Number of times the driver retries the list of database servers (primary <strong>and</strong> alternate)<br />

until a successful connection is established. The default is 0 (connection retry is not<br />

used).<br />

ConnectionRetryDelay Wait interval, in seconds, used between attempts to connect to a list of database<br />

servers (primary <strong>and</strong> alternate) when the ConnectionRetryCount property is set to a<br />

positive integer. The default is 3.<br />

DatabaseName The name of the database to which you want to connect.<br />

LoadBalancing Sets whether the driver will use client load balancing in its attempts to connect to the<br />

list of database servers (primary <strong>and</strong> alternate). If client load balancing is enabled,<br />

the driver uses a r<strong>and</strong>om pattern instead of a sequential pattern in its attempts to<br />

connect. The default is false (client load balancing is disabled).<br />

See “Client Load Balancing” on page 122 <strong>and</strong> “Connection Failover” on page 123 for<br />

overviews of these features.<br />

Specifying Alternate Servers for the Microsoft SQL Server Driver<br />

The following connection URL for the Microsoft SQL Server driver specifies connection<br />

information for the primary <strong>and</strong> alternate servers:<br />

jjdbc:sonic:sqlserver://server1:1433;DatabaseName=TEST;<br />

AlternateServers=(server2:1433;DatabaseName=TEST2,server3:1433;<br />

DatabaseName=TEST3)<br />

In this example:<br />

192 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


....server1:1433;DatabaseName=TEST...<br />

Microsoft SQL Server<br />

is the part of the connection URL that specifies connection information for the primary<br />

server. Alternate servers are specified using the AlternateServers property, in this<br />

example:<br />

...;AlternateServers=(server2:1433;DatabaseName=TEST2,server3:1433;<br />

DatabaseName=TEST3)<br />

You can specify an optional instance property for each alternate server entry. For<br />

example:<br />

jdbc:sonic:sqlserver://server1:1433;DatabaseName=TEST;<br />

AlternateServers=(server2:1433;DatabaseName=TEST2,server3:1433;<br />

DatabaseName=TEST3)<br />

or, if connecting to named instances:<br />

jdbc:sonic:sqlserver://server1\\instance1:1433;DatabaseName=TEST;<br />

AlternateServers=(server2\\instance2:1433;DatabaseName=TEST2,s<br />

erver3\\instance3:1433;DatabaseName=TEST3)<br />

If you do not specify an optional connection property in an alternate server entry, the<br />

connection to that alternate server uses the property specified in the URL for the primary<br />

server. For example, if you specify DatabaseName=TestServer for the primary server, but<br />

do not specify the InformixServer <strong>and</strong> DatabaseName properties in the alternate server<br />

entry as shown in the following URL, the driver uses the InformixServer <strong>and</strong><br />

DatabaseName specified for the primary server <strong>and</strong> tries to connect to the TEST database on<br />

the alternate server:<br />

jdbc:sonic:sqlserver://server1:1433;DatabaseName=TEST;<br />

AlternateServers=(server2:1433,server3:1433)<br />

The SQL Server driver also allows you to specify connections to named instances,<br />

multiple instances of a Microsoft SQL Server database running concurrently on the same<br />

server. If specifying named instances for the primary <strong>and</strong> alternate servers, the connection<br />

URL would look like this:<br />

jdbc:datadirect:sqlserver://server1\\instance1;<br />

AlternateServers=(server2\\instance2:1433;DatabaseName=TEST2,<br />

server3\\instance3:1433;DatabaseName=TEST3)<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 193


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Microsoft SQL Server Driver Data Types<br />

Table 19 lists the data types supported by the Microsoft SQL Server driver <strong>and</strong> describes<br />

how they are mapped to JDBC data types. These data types are for SQL Server 7 <strong>and</strong> 2000<br />

unless otherwise noted in the table.<br />

Table 19. Microsoft SQL Server Driver Data Types<br />

Microsoft SQL Server<br />

DataBase<br />

Microsoft SQL Server<br />

Data Type JDBC Data Type<br />

SQL Server 7 <strong>and</strong> 2000 binary BINARY<br />

bit BIT<br />

char CHAR<br />

datetime TIMESTAMP<br />

decimal DECIMAL<br />

decimal() identity DECIMAL<br />

float FLOAT<br />

image LONGVARBINARY<br />

int INTEGER<br />

int identity INTEGER<br />

money DECIMAL<br />

nchar CHAR<br />

ntext LONGVARCHAR<br />

numeric NUMERIC<br />

numeric() identity NUMERIC<br />

nvarchar VARCHAR<br />

real REAL<br />

smalldatetime TIMESTAMP<br />

smallint SMALLINT<br />

194 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 19. Microsoft SQL Server Driver Data Types (continued)<br />

Microsoft SQL Server<br />

DataBase<br />

SQL Server 7 <strong>and</strong> 2000 smallint identity SMALLINT<br />

smallmoney DECIMAL<br />

sysname VARCHAR<br />

text LONGVARCHAR<br />

timestamp BINARY<br />

tinyint TINYINT<br />

tinyint identity TINYINT<br />

uniqueidentifier CHAR<br />

varbinary VARBINARY<br />

varchar VARCHAR<br />

SQL Server 2000 only bigint BIGINT<br />

bigint identity BIGINT<br />

sql_variant VARCHAR<br />

Microsoft SQL Server<br />

Microsoft SQL Server<br />

Data Type JDBC Data Type<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 195


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Sybase<br />

The following sections describe settings for the <strong>Sonic</strong> Database Service Sybase driver:<br />

● “Sybase Driver Connection Properties”<br />

● “Sybase Driver Connection Failover Properties”<br />

● “Specifying Alternate Servers for the Sybase Driver”<br />

● “Sybase Driver Data Types”<br />

Sybase Driver Connection Properties<br />

Table 20 describes the JDBC connection properties supported by the Sybase driver. The<br />

properties have the format:<br />

property=value<br />

Note All connection property names are case-insensitive. For example, Password is the same<br />

as password.<br />

196 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 20. Connection Properties for the Sybase Driver<br />

Property Description<br />

AlternateServers<br />

OPTIONAL<br />

Sybase<br />

A comma-separated list of alternate database servers that the driver will<br />

try to connect to if the primary database server is unavailable. The value<br />

of this property is a string that specifies each alternate server. This string<br />

has the format:<br />

(servername1[:port1][;property=value],<br />

servername2[:port2][;property=value],...)<br />

The server name is required for each alternate server entry. Port number<br />

<strong>and</strong> connection properties (property=value) are optional for each<br />

alternate server entry. If the port is unspecified, the port number of the<br />

primary server is used. The driver only allows one optional connection<br />

property, DatabaseName. For example:<br />

jdbc:sonic:sybase://server1:4100;<br />

DatabaseName=TEST;AlternateServers=(server2:4100;<br />

DatabaseName=TEST2,server3:4100;DatabaseName=TEST3)<br />

contains alternate server entries for server2 <strong>and</strong> server3. The alternate<br />

server entries contain the optional DatabaseName property.<br />

Other properties are:<br />

● ConnectionRetryCount — Controls the number of times the driver<br />

retries the list of servers (primary <strong>and</strong> alternate) while attempting to<br />

establish a connection.<br />

● ConnectionRetryDelay — Sets the wait interval, in seconds, between<br />

retry attempts.<br />

● LoadBalancing — Controls the order in which the driver sequences<br />

through the list of servers (primary <strong>and</strong> alternate) while attempting<br />

to establish a connection.<br />

See “Specifying Primary <strong>and</strong> Alternate Servers” on page 126 for more<br />

information about specifying connection information for primary <strong>and</strong><br />

alternate servers<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 197


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 20. Connection Properties for the Sybase Driver (continued)<br />

Property Description<br />

BatchPerformanceWorkaround<br />

OPTIONAL<br />

CodePageOverride<br />

OPTIONAL<br />

{true | false}<br />

Determines the method used to execute batch operations:<br />

● true — The native Sybase batch mechanism is used.<br />

● false — The JDBC 3.0-compliant batch mechanism is used.<br />

In most cases, using the native Sybase batch functionality provides<br />

significantly better performance, but the driver may not always be able to<br />

return update counts for the batch.<br />

The default is false.<br />

Specifies the code page the driver uses when converting character data.<br />

The specified code page overrides the default database code page. All<br />

character data retrieved from or written to the database is converted using<br />

the specified code page. The value must be a string containing the name<br />

of a valid code page supported by your Java Virtual Machine, for<br />

example, CodePageOverride=CP950.<br />

198 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 20. Connection Properties for the Sybase Driver (continued)<br />

Property Description<br />

ConnectionRetryCount<br />

OPTIONAL<br />

Sybase<br />

The number of times the driver retries connections to a list of database<br />

servers (primary <strong>and</strong> alternate) until a successful connection is<br />

established. Valid values are 0 <strong>and</strong> any positive integer.<br />

If set to 0, the driver does not retry a connection to the list of database<br />

servers if a connection is not established on the driver’s first pass through<br />

the list.<br />

The default is 0.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:4100,server3:4100,server4:4100)<br />

<strong>and</strong><br />

ConnectionRetryCount=1<br />

if a connection is not successfully established on the driver’s first pass<br />

through the list of database servers, the driver retries all the servers in the<br />

list only once.<br />

If an application sets a login timeout value, the login timeout takes<br />

precedence over this property. For example, if the login timeout expires,<br />

any connection attempts to alternate servers stop.<br />

If the LoadBalancing property is set to true, the driver may sequence<br />

through the list of servers (primary <strong>and</strong> alternate) in a different order each<br />

time.<br />

The ConnectionRetryDelay property specifies the wait interval, in<br />

seconds, used between attempts.<br />

See “Connection Retry” on page 124 for more information about<br />

specifying connection information for primary <strong>and</strong> alternate servers.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 199


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 20. Connection Properties for the Sybase Driver (continued)<br />

Property Description<br />

ConnectionRetryDelay<br />

OPTIONAL<br />

DatabaseName<br />

OPTIONAL<br />

DiagnosticFilename<br />

OPTIONAL<br />

The number of seconds the driver waits before retrying connections to a<br />

list of database servers (primary <strong>and</strong> alternate) when<br />

ConnectionRetryCount is set to a positive integer.<br />

The default is 3.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:4100,server3:4100,server4:4100)<br />

<strong>and</strong><br />

ConnectionRetryCount=2<br />

<strong>and</strong><br />

ConnectionRetryDelay=3<br />

if a connection is not successfully established on the driver’s first pass<br />

through the list of database servers, the driver retries the list of servers<br />

twice. It waits 3 seconds between the first connection retry attempt <strong>and</strong><br />

the second connection retry attempt.<br />

If the LoadBalancing property is set to true, the driver may sequence<br />

through the list of servers (primary <strong>and</strong> alternate) in a different order each<br />

time.<br />

See “Connection Retry” on page 124 for more information about<br />

specifying connection information for primary <strong>and</strong> alternate servers.<br />

The name of the database to which you want to connect.<br />

The path <strong>and</strong> filename of the file to which you want state information<br />

logged when an exception is generated. If the file does not already exist,<br />

it will be created the first time state information is generated. If this<br />

property is not specified, state information is not logged. When you<br />

contact Technical Support with a problem, you might be asked to<br />

generate a state information log.<br />

Your application should ensure that the driver is granted read/write<br />

permission to the specified file.<br />

200 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 20. Connection Properties for the Sybase Driver (continued)<br />

Property Description<br />

InsensitiveResultSetBufferSize<br />

OPTIONAL<br />

{-1 | 0 | x}<br />

Sybase<br />

Determines the amount of memory used by the driver to cache insensitive<br />

result set data. It must have one of the following values:<br />

● -1 — The driver caches all insensitive result set data in memory. If<br />

the size of the result set exceeds available memory, an<br />

OutOfMemoryException is generated. Because the need to write result<br />

set data to disk is eliminated, the driver processes the data more<br />

efficiently.<br />

● 0 — The driver caches all insensitive result set data in memory, up to<br />

a maximum of 2 GB. If the size of the result set data exceeds<br />

available memory, the driver pages the result set data to disk.<br />

Because result set data may be written to disk, the driver may have<br />

to reformat the data to write it correctly to disk.<br />

● x, where x is a positive integer — The driver caches all insensitive<br />

result set data in memory, using this value to set the size (in KB) of<br />

the memory buffer for caching insensitive result set data. If the size<br />

of the result set data exceeds the buffer size, the driver pages the<br />

result set data to disk. Because the result set data may be written to<br />

disk, the driver may have to reformat the data to write it correctly to<br />

disk. Specifying a buffer size that is a power of 2 results in more<br />

efficient memory use.<br />

The default is 2048 (KB).<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 201


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 20. Connection Properties for the Sybase Driver (continued)<br />

Property Description<br />

LoadBalancing<br />

OPTIONAL<br />

{true | false}<br />

Determines whether the driver will use client load balancing in its<br />

attempts to connect to a list of database servers (primary <strong>and</strong> alternate).<br />

The list of alternate servers is specified by the AlternateServers<br />

property. The LoadBalancing property determines behavior as follows:<br />

● true — Client load balancing is used <strong>and</strong> the driver attempts to<br />

connect to the list of database servers (primary <strong>and</strong> alternate servers)<br />

in r<strong>and</strong>om order.<br />

● false — Client load balancing is not used <strong>and</strong> the driver connects to<br />

each server based on their sequential order (primary server first,<br />

then, alternate servers in the order they are specified).<br />

The default is false.<br />

For example, in the case where the following properties are specified:<br />

AlternateServers=(server2:4100,server3:4100,server4:4100)<br />

<strong>and</strong><br />

LoadBalancing=true<br />

the driver r<strong>and</strong>omly selects from the list of primary <strong>and</strong> alternate servers<br />

which server to connect to first. If that connection fails, the driver again<br />

r<strong>and</strong>omly selects from this list of servers until all servers in the list have<br />

been tried or a connection is successfully established.<br />

See “Client Load Balancing” on page 122 for more information about<br />

specifying connection information for primary <strong>and</strong> alternate servers.<br />

202 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 20. Connection Properties for the Sybase Driver (continued)<br />

Property Description<br />

MaxPooledStatements<br />

OPTIONAL<br />

Sybase<br />

The maximum number of pooled prepared statements for this connection.<br />

MaxPooledStatements property values determine behavior as follows:<br />

● An integer greater than zero (0) — Enables the Sybase driver’s<br />

internal prepared statement pooling, which is useful when the driver<br />

is not running from within an application server or another<br />

application that provides its own prepared statement pooling. The<br />

driver uses this value to cache a certain number of prepared<br />

statements created by an application. For example, if the value of this<br />

property is set to 20, the driver caches the last 20 prepared statements<br />

created by the application.<br />

● A value greater than the number of prepared statements used by the<br />

application — All prepared statements created by the application are<br />

cached.<br />

Because CallableStatement is a sub-class of PreparedStatement,<br />

CallableStatements also are pooled.<br />

The default is 0.<br />

Password The case-sensitive password used to connect to your Sybase database. A<br />

password is required only if security is enabled on your database. If so,<br />

contact your system administrator to get your password.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 203


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Table 20. Connection Properties for the Sybase Driver (continued)<br />

Property Description<br />

PrepareMethod<br />

OPTIONAL<br />

{StoredProc | StoredProclfParam | Direct}<br />

Determines whether stored procedures are created on the server for<br />

prepared statements:<br />

● StoredProc — A stored procedure is created when the statement is<br />

prepared <strong>and</strong> is executed when the prepared statement is executed.<br />

● StoredProcIfParam — A stored procedure is created only if the<br />

prepared statement contains one or multiple parameter markers. In<br />

this case, it is created when the statement is prepared <strong>and</strong> is executed<br />

when the prepared statement is executed. If the statement does not<br />

contain parameter markers, a stored procedure is not created <strong>and</strong> the<br />

statement is executed directly.<br />

● Direct — A stored procedure is not created for the prepared<br />

statement <strong>and</strong> the statement is executed directly. A stored procedure<br />

might be created if parameter metadata is requested.<br />

The default is StoredProclfParam.<br />

Setting this property to StoredProc or StoredProclfParam can improve<br />

performance if your application executes prepared statements multiple<br />

times because, once created, executing a stored procedure is faster than<br />

executing a single database query. If a prepared statement is only<br />

executed once or is never executed, performance can decrease because<br />

creating a stored procedure incurs more overhead on the server than<br />

simply executing a single database query. Setting this property to Direct<br />

should be used if your application does not execute prepared statements<br />

multiple times.<br />

204 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 20. Connection Properties for the Sybase Driver (continued)<br />

Property Description<br />

SelectMethod<br />

OPTIONAL<br />

{Direct | Cursor}<br />

Sybase<br />

A hint to the driver that determines whether the driver requests a database<br />

cursor for Select statements. Performance <strong>and</strong> behavior of the driver are<br />

affected by this property, which is defined as a hint because the driver<br />

may not always be able to satisfy the requested method.<br />

● Direct — When the driver uses the Direct method, the database<br />

server sends the complete result set in a single response to the driver<br />

when responding to a query. A server-side database cursor is not<br />

created. Typically, responses are not cached by the driver. Using this<br />

method, the driver must process all the response to a query before<br />

another query is submitted. If another query is submitted (using a<br />

different statement on the same connection, for example), the driver<br />

caches the response to the first query before submitting the second<br />

query. Typically, the Direct method performs better than the Cursor<br />

method.<br />

● Cursor — When the driver uses the Cursor method, a server-side<br />

database cursor is requested. The rows are retrieved from the server<br />

in blocks when returning forward-only result sets. The JDBC<br />

Statement method setFetchSize can be used to control the number<br />

of rows that are retrieved for each request. Performance tests show<br />

that the value of setFetchSize significantly impacts performance<br />

when the Cursor method is used. There is no simple rule for<br />

determining the setFetchSize value that you should use. We<br />

recommend that you experiment with different setFetchSize values<br />

to find out which value gives the best performance for your<br />

application. The Cursor method is useful for queries that produce a<br />

large amount of data, particularly if multiple open result sets are<br />

used.<br />

The default is Direct.<br />

User The case-insensitive user name used to connect to your Sybase database.<br />

A user name is required only if security is enabled on your database. If<br />

so, contact your system administrator to get your user name.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 205


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Sybase Driver Connection Failover Properties<br />

Table 21 summarizes the connection properties that control how connection failover<br />

works with the Database Service Sybase driver. See Table 20 for details about configuring<br />

each property.<br />

Table 21. Connection Failover Properties for the Sybase Driver<br />

Property Description<br />

AlternateServers List of alternate database servers. An IP address or server name identifying each<br />

server is required. Port number <strong>and</strong> the DatabaseName connection property are<br />

optional. If the port number is unspecified, the port number specified for the primary<br />

server is used. If a port number is unspecified for the primary server, the port number<br />

specified for the primary server is used.<br />

ConnectionRetryCount Number of times the driver retries the list of database servers (primary <strong>and</strong> alternate)<br />

until a successful connection is established. The default is 0 (connection retry is not<br />

used).<br />

ConnectionRetryDelay Wait interval, in seconds, used between attempts to connect to a list of database<br />

servers (primary <strong>and</strong> alternate) when the ConnectionRetryCount property is set to a<br />

positive integer. The default is 3.<br />

DatabaseName The name of the database to which you want to connect.<br />

LoadBalancing Sets whether the driver will use client load balancing in its attempts to connect to the<br />

list of database servers (primary <strong>and</strong> alternate). If client load balancing is enabled,<br />

the driver uses a r<strong>and</strong>om pattern instead of a sequential pattern in its attempts to<br />

connect. The default is false (client load balancing is disabled).<br />

See “Client Load Balancing” on page 122 <strong>and</strong> “Connection Failover” on page 123 for<br />

overviews of these features.<br />

Specifying Alternate Servers for the Sybase Driver<br />

The following connection URL for the Sybase driver specifies connection information for<br />

the primary <strong>and</strong> alternate servers:<br />

jdbc:sonic:sybase://server1:4100;DatabaseName=TEST;<br />

AlternateServers=(server2:4100;DatabaseName=TEST2,server3:4100;<br />

DatabaseName=TEST3)<br />

206 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


In this example:<br />

....server1:4100;DatabaseName=TEST...<br />

Sybase<br />

is the part of the connection URL that specifies connection information for the primary<br />

server. Alternate servers are specified using the AlternateServers property, in this<br />

example:<br />

...;AlternateServers=(server2:4100;DatabaseName=TEST2,<br />

server3:4100;DatabaseName=TEST3)<br />

The property property=value is optional for each alternate server entry. For example:<br />

jdbc:sonic:sybase://server1:4100;DatabaseName=TEST;<br />

AlternateServers=(server2:4100;DatabaseName=TEST2,server3:4100)<br />

If you do not specify an optional connection property in an alternate server entry, the<br />

connection to that alternate server uses the property specified in the URL for the primary<br />

server. For example, if you specify DatabaseName=TEST for the primary server, but do not<br />

specify a database name in the alternate server entry as shown in the following URL, the<br />

driver tries to connect to the TEST database on the alternate server:<br />

jjdbc:sonic:sybase://server1:4100;DatabaseName=TEST;<br />

AlternateServers=(server2:4100,server3:4100)<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 207


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

Sybase Driver Data Types<br />

Table 22 lists the data types supported by the Sybase driver <strong>and</strong> describes how they are<br />

mapped to JDBC data types.<br />

Table 22. Sybase Driver Data Types<br />

Sybase DataBase Sybase Data Type JDBC Data Type<br />

Sybase 11.5 <strong>and</strong> higher binary BINARY<br />

bit BIT<br />

char CHAR<br />

datetime TIMESTAMP<br />

decimal DECIMAL<br />

decimal() identity DECIMAL<br />

float FLOAT<br />

image LONGVARBINARY<br />

int INTEGER<br />

money DECIMAL<br />

nchar CHAR<br />

numeric NUMERIC<br />

nvarchar VARCHAR<br />

real REAL<br />

smalldatetime TIMESTAMP<br />

smallint SMALLINT<br />

smallmoney DECIMAL<br />

sysname VARCHAR<br />

text LONGVARCHAR<br />

timestamp VARBINARY<br />

tinyint TINYINT<br />

varbinary VARBINARY<br />

varchar VARCHAR<br />

208 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 22. Sybase Driver Data Types (continued)<br />

Sybase DataBase Sybase Data Type JDBC Data Type<br />

Sybase 12.5 <strong>and</strong> 12.5.1 only date DATE<br />

time TIME<br />

unichar CHAR<br />

univarchar VARCHAR<br />

Sybase<br />

Note For users of Adaptive Server 12.5 <strong>and</strong> 12.5.1: The Sybase driver supports extended new<br />

limits (XNL) for character <strong>and</strong> binary columns—columns with lengths greater than 255.<br />

Refer to your Sybase documentation for more information about XNL for character <strong>and</strong><br />

binary columns.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 209


Chapter 6: Driver Connection Properties <strong>and</strong> Data Types by Database Br<strong>and</strong><br />

210 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Chapter 7 SQL Escape Sequences for JDBC<br />

Language features, such as outer joins <strong>and</strong> scalar function calls, are commonly<br />

implemented by database systems. The syntax for these features is often databasespecific,<br />

even when a st<strong>and</strong>ard syntax has been defined. This chappter describes the<br />

JDBC-defined escape sequences containing st<strong>and</strong>ard syntaxes for the following language<br />

features:<br />

● “Date, Time, <strong>and</strong> Timestamp Escape Sequences”<br />

● “Scalar Functions”<br />

● “Outer Join Escape Sequences”<br />

● “Procedure Call Escape Sequences”<br />

The escape sequence used by JDBC is:<br />

{extension}<br />

The escape sequence is recognized <strong>and</strong> parsed by <strong>Progress</strong> <strong>Sonic</strong> Database Service JDBC<br />

drivers, <strong>and</strong> replaces the escape sequences with data store-specific grammar.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 211


Chapter 7: SQL Escape Sequences for JDBC<br />

Date, Time, <strong>and</strong> Timestamp Escape Sequences<br />

The escape sequence for date, time, <strong>and</strong> timestamp literals is:<br />

{literal-type 'value'}<br />

where literal-type is one of the following:<br />

literal-type Description Value Format<br />

d Date yyyy-mm-dd<br />

t Time h:mm:ss [1]<br />

ts Timestamp yyyy-mm-dd hh:mm:ss[.f...]<br />

For example:<br />

UPDATE Orders SET OpenDate={d '1995-01-15'}<br />

WHERE OrderID=1023<br />

Scalar Functions<br />

You can use scalar functions in database queries with the following syntax:<br />

{fn scalar-function}<br />

where scalar-function is a scalar function supported by Database Service JDBC drivers,<br />

as listed in Table 23.<br />

For example:<br />

SELECT id, name FROM emp WHERE name LIKE {fn UCASE('Smith')}<br />

212 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 23. Scalar Functions Supported by Database Service JDBC Drivers<br />

Data Store String Functions<br />

<strong>Progress</strong><br />

OpenEdge<br />

CONCAT<br />

LEFT<br />

LENGTH<br />

LTRIM<br />

REPLACE<br />

RTRIM<br />

SUBSTRING<br />

Numeric<br />

Functions<br />

ABS<br />

ACOS<br />

ASIN<br />

ATAN<br />

ATAN2<br />

COS<br />

COT<br />

EXP<br />

FLOOR<br />

LOG<br />

LOG10<br />

MOD<br />

POWER<br />

ROUND<br />

SIN<br />

SQRT<br />

TAN<br />

TRUNCATE<br />

Timedate<br />

Functions<br />

CURRDATE<br />

CURRTIME<br />

DAYOFMONTH<br />

DAYOFWEEK<br />

MONTH<br />

NOW<br />

TIMESTAMP<br />

TIMESTAMPADD<br />

TIMESTAMPDIFF<br />

YEAR<br />

Scalar Functions<br />

System<br />

Functions<br />

DATABASE<br />

USER<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 213


Chapter 7: SQL Escape Sequences for JDBC<br />

Table 23. Scalar Functions Supported by Database Service JDBC Drivers (continued)<br />

Data Store String Functions<br />

DB2 ASCII<br />

BLOB<br />

CHAR<br />

CHR<br />

CLOB<br />

CONCAT<br />

DBCLOB<br />

DIFFERENCE<br />

GRAPHIC<br />

HEX<br />

INSERT<br />

LCASE or LOWER<br />

LCASE (SYSFUN schema)<br />

LEFT<br />

LENGTH<br />

LOCATE<br />

LONG_VARCHAR<br />

LONG_VARGRAPHIC<br />

LTRIM<br />

LTRIM (SYSFUN schema)<br />

POSSTR<br />

REPEAT<br />

REPLACE<br />

RIGHT<br />

RTRIM<br />

RTRIM (SYSFUN schema)<br />

SOUNDEX<br />

SPACE<br />

SUBSTR<br />

TRUNCATE or TRUNC<br />

UCASE or UPPER<br />

VARCHAR<br />

VARGRAPHIC<br />

Numeric<br />

Functions<br />

ABS or ABSVAL<br />

ACOS<br />

ASIN<br />

ATAN<br />

ATANH<br />

ATAN2<br />

BIGINT<br />

CEILING or CEIL<br />

COS<br />

COSH<br />

COT<br />

DECIMAL<br />

DEGREES<br />

DIGITS<br />

DOUBLE<br />

EXP<br />

FLOAT<br />

FLOOR<br />

INTEGER<br />

LN<br />

LOG<br />

LOG10<br />

MOD<br />

POWER<br />

RADIANS<br />

RAND<br />

REAL<br />

ROUND<br />

SIGN<br />

SIN<br />

SINH<br />

SMALLINT<br />

SQRT<br />

TAN<br />

TANH<br />

TRUNCATE<br />

Timedate<br />

Functions<br />

DATE<br />

DAY<br />

DAYNAME<br />

DAYOFWEEK<br />

DAYOFYEAR<br />

DAYS<br />

HOUR<br />

JULIAN_DAY<br />

MICROSECOND<br />

MIDNIGHT_SECONDS<br />

MINUTE<br />

MONTH<br />

MONTHNAME<br />

QUARTER<br />

SECOND<br />

TIME<br />

TIMESTAMP<br />

TIMESTAMP_ISO<br />

TIMESTAMPDIFF<br />

WEEK<br />

YEAR<br />

System<br />

Functions<br />

COALESCE<br />

DEREF<br />

DLCOMMENT<br />

DLLINKTYPE<br />

DLURLCOMPLETE<br />

DLURLPATH<br />

DLURLPATHONLY<br />

DLURLSCHEME<br />

DLURLSERVER<br />

DLVALUE<br />

EVENT_MON_STATE<br />

GENERATE_UNIQUE<br />

NODENUMBER<br />

NULLIF<br />

PARTITION<br />

RAISE_ERROR<br />

TABLE_NAME<br />

TABLE_SCHEMA<br />

TRANSLATE<br />

TYPE_ID<br />

TYPE_NAME<br />

TYPE_SCHEMA<br />

VALUE<br />

214 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 23. Scalar Functions Supported by Database Service JDBC Drivers (continued)<br />

Data Store String Functions<br />

Informix CONCAT<br />

LEFT<br />

LENGTH<br />

LTRIM<br />

REPLACE<br />

RTRIM<br />

SUBSTRING<br />

Numeric<br />

Functions<br />

ABS<br />

ACOS<br />

ASIN<br />

ATAN<br />

ATAN2<br />

COS<br />

COT<br />

EXP<br />

FLOOR<br />

LOG<br />

LOG10<br />

MOD<br />

PI<br />

POWER<br />

ROUND<br />

SIN<br />

SQRT<br />

TAN<br />

TRUNCATE<br />

Timedate<br />

Functions<br />

CURDATE<br />

CURTIME<br />

DAYOFMONTH<br />

DAYOFWEEK<br />

MONTH<br />

NOW<br />

TIMESTAMPADD<br />

TIMESTAMPDIFF<br />

YEAR<br />

Scalar Functions<br />

System<br />

Functions<br />

DATABASE<br />

USER<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 215


Chapter 7: SQL Escape Sequences for JDBC<br />

Table 23. Scalar Functions Supported by Database Service JDBC Drivers (continued)<br />

Data Store String Functions<br />

Oracle ASCII<br />

BIT_LENGTH<br />

CHAR<br />

CONCAT<br />

INSERT<br />

LCASE<br />

LEFT<br />

LENGTH<br />

LOCATE<br />

LOCATE2<br />

LTRIM<br />

OCTET_LENGTH<br />

REPEAT<br />

REPLACE<br />

RIGHT<br />

RTRIM<br />

SOUNDEX<br />

SPACE<br />

SUBSTRING<br />

UCASE<br />

Numeric<br />

Functions<br />

ABS<br />

ACOS<br />

ASIN<br />

ATAN<br />

ATAN2<br />

CEILING<br />

COS<br />

COT<br />

EXP<br />

FLOOR<br />

LOG<br />

LOG10<br />

MOD<br />

PI<br />

POWER<br />

ROUND<br />

SIGN<br />

SIN<br />

SQRT<br />

TAN<br />

TRUNCATE<br />

Timedate<br />

Functions<br />

CURDATE<br />

DAYNAME<br />

DAYOFMONTH<br />

DAYOFWEEK<br />

DAYOFYEAR<br />

HOUR<br />

MINUTE<br />

MONTH<br />

MONTHNAME<br />

NOW<br />

QUARTER<br />

SECOND<br />

WEEK<br />

YEAR<br />

System<br />

Functions<br />

IFNULL<br />

USER<br />

216 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Table 23. Scalar Functions Supported by Database Service JDBC Drivers (continued)<br />

Data Store String Functions<br />

Microsoft<br />

SQL Server<br />

ASCII<br />

CHAR<br />

CONCAT<br />

DIFFERENCE<br />

INSERT<br />

LCASE<br />

LEFT<br />

LENGTH<br />

LOCATE<br />

LTRIM<br />

REPEAT<br />

REPLACE<br />

RIGHT<br />

RTRIM<br />

SOUNDEX<br />

SPACE<br />

SUBSTRING<br />

UCASE<br />

Numeric<br />

Functions<br />

ABS<br />

ACOS<br />

ASIN<br />

ATAN<br />

ATAN2<br />

CEILING<br />

COS<br />

COT<br />

DEGREES<br />

EXP<br />

FLOOR<br />

LOG<br />

LOG10<br />

MOD<br />

PI<br />

POWER<br />

RADIANS<br />

RAND<br />

ROUND<br />

SIGN<br />

SIN<br />

SQRT<br />

TAN<br />

TRUNCATE<br />

Timedate<br />

Functions<br />

DAYNAME<br />

DAYOFMONTH<br />

DAYOFWEEK<br />

DAYOFYEAR<br />

EXTRACT<br />

HOUR<br />

MINUTE<br />

MONTH<br />

MONTHNAME<br />

NOW<br />

QUARTER<br />

SECOND<br />

TIMESTAMPADD<br />

TIMESTAMPDIFF<br />

WEEK<br />

YEAR<br />

Scalar Functions<br />

System<br />

Functions<br />

DATABASE<br />

IFNULL<br />

USER<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 217


Chapter 7: SQL Escape Sequences for JDBC<br />

Table 23. Scalar Functions Supported by Database Service JDBC Drivers (continued)<br />

Data Store String Functions<br />

Sybase ASCII<br />

CHAR<br />

CONCAT<br />

DIFFERENCE<br />

INSERT<br />

LCASE<br />

LEFT<br />

LENGTH<br />

LOCATE<br />

LTRIM<br />

REPEAT<br />

RIGHT<br />

RTRIM<br />

SOUNDEX<br />

SPACE<br />

SUBSTRING<br />

UCASE<br />

Numeric<br />

Functions<br />

ABS<br />

ACOS<br />

ASIN<br />

ATAN<br />

ATAN2<br />

CEILING<br />

COS<br />

COT<br />

DEGREES<br />

EXP<br />

FLOOR<br />

LOG<br />

LOG10<br />

MOD<br />

PI<br />

POWER<br />

RADIANS<br />

RAND<br />

ROUND<br />

SIGN<br />

SIN<br />

SQRT<br />

TAN<br />

Timedate<br />

Functions<br />

DAYNAME<br />

DAYOFMONTH<br />

DAYOFWEEK<br />

DAYOFYEAR<br />

HOUR<br />

MINUTE<br />

MONTH<br />

MONTHNAME<br />

NOW<br />

QUARTER<br />

SECOND<br />

TIMESTAMPADD<br />

TIMESTAMPDIFF<br />

WEEK<br />

YEAR<br />

System<br />

Functions<br />

DATABASE<br />

IFNULL<br />

USER<br />

218 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Outer Join Escape Sequences<br />

Outer Join Escape Sequences<br />

JDBC supports the SQL92 left, right, <strong>and</strong> full outer join syntax. The escape sequence for<br />

outer joins is:<br />

{oj outer-join}<br />

where outer-join is:<br />

table-reference {LEFT | RIGHT | FULL} OUTER JOIN<br />

{table-reference | outer-join} ON search-condition<br />

where:<br />

For example:<br />

table-reference is a database table name<br />

search-condition is the join condition you want to use for the tables<br />

SELECT Customers.CustID, Customers.Name, Orders.OrderID, Orders.Status<br />

FROM {oj Customers LEFT OUTER JOIN<br />

Orders ON Customers.CustID=Orders.CustID}<br />

WHERE Orders.Status='OPEN'<br />

Table 24 lists the outer join escape sequences supported by Database Service JDBC<br />

drivers for each data store.<br />

Table 24. Outer Join Sequences Supported by Database Service JDBC Drivers<br />

Data Store Outer Join Escape Sequences<br />

<strong>Progress</strong> OpenEdge Left outer joins<br />

Right outer joins<br />

Nested outer joins<br />

DB2 Left outer joins<br />

Right outer joins<br />

Nested outer joins<br />

Informix Left outer joins<br />

Right outer joins<br />

Nested outer joins<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 219


Chapter 7: SQL Escape Sequences for JDBC<br />

Table 24. Outer Join Sequences Supported by Database Service JDBC Drivers<br />

Data Store Outer Join Escape Sequences<br />

Oracle Left outer joins<br />

Right outer joins<br />

Nested outer joins<br />

Microsoft SQL Server Left outer joins<br />

Right outer joins<br />

Full outer joins<br />

Nested outer joins<br />

Sybase Left outer joins<br />

Right outer joins<br />

Nested outer joins<br />

Procedure Call Escape Sequences<br />

A procedure is an executable object stored in the data store. Generally, it is one or more<br />

database queries that have been precompiled. The escape sequence for calling a procedure<br />

is:<br />

{[?=]call procedure-name[(parameter[,parameter]...)]}<br />

where:<br />

procedure-name specifies the name of a stored procedure<br />

parameter specifies a stored procedure parameter<br />

Note For DB2, a schema name cannot be used when calling a stored procedure. Also, for DB2<br />

UDB 8.1, literal parameter values are supported for stored procedures. Other supported<br />

DB2 versions do not support literal parameter values for stored procedures.<br />

220 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Chapter 8 Configuring SQL Server<br />

Windows Authentication<br />

The <strong>Progress</strong> <strong>Sonic</strong> Database Service JDBC SQL Server driver supports Windows<br />

authenticated connections to Microsoft SQL Server 2000 <strong>and</strong> Microsoft SQL Server 2000<br />

Enterprise Edition (64-bit) in a domain running Windows Active Directory for Windows<br />

clients.<br />

See Table 25 for a summary of the configuration that is required to use Windows<br />

authentication on Microsoft SQL Server with the Database Service JDBC SQL Server<br />

driver.<br />

Table 25. Configuring Windows Authentication on Microsoft SQL Server<br />

Component Collection<br />

Microsoft SQL Server<br />

Database Server<br />

Set the authentication mode (see“Setting the Authentication Mode” on page 222).<br />

Confirm that a Service Principal Name (SPN) is registered for each Microsoft SQL<br />

Server instance (see “Registering Service Principal Names (SPNs)” on page 222).<br />

Domain Controller Confirm that the Active Directory encryption property is set to use DES encryption<br />

in the Microsoft SQL Server Service Startup Account (see “Setting the Active<br />

Directory Encryption Property” on page 223).<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 221


Chapter 8: Configuring SQL Server Windows Authentication<br />

Setting the Authentication Mode<br />

To use Windows authentication, the authentication mode in Microsoft SQL Server on the<br />

database server can be set to either Windows Only authentication or Mixed authentication.<br />

If SQL Server authentication will be used in addition to Windows authentication, set the<br />

authentication mode to use Mixed authentication.<br />

Registering Service Principal Names (SPNs)<br />

An SPN must be registered for each Microsoft SQL Server instance. An SPN is a unique<br />

name that maps the Microsoft SQL Server service for a particular machine <strong>and</strong> port to an<br />

account name used to start the service (Service Startup Account). An SPN is composed<br />

of a service class name of MSSQLSvc, the host name of the machine running Microsoft SQL<br />

Server, <strong>and</strong> the port number on which the Microsoft SQL Server instance is listening. For<br />

example:<br />

MSSQLSvc/DBServer.test:1433<br />

is an SPN for a Microsoft SQL Server instance running on a machine named DBServer in<br />

the test domain <strong>and</strong> listening on port 1433.<br />

Check with your system administrator to confirm that the appropriate SPNs have been<br />

registered for each Microsoft SQL Server instance. To list registered SPNs, use the<br />

following Windows comm<strong>and</strong>:<br />

ldifde<br />

If necessary, your system administrator can register SPNs using the Setspn tool available<br />

with the Windows Resource Kit. For example:<br />

setspn -A MSSQLSvc/DBServer.test:1433 sqlsvc<br />

registers an SPN that maps the Service Startup Account named sqlsvc to a Microsoft SQL<br />

Server instance running on a machine named DBServer in the test domain <strong>and</strong> listening on<br />

port 1433. The Setspn tool is available from the following Web site:<br />

http://www.microsoft.com/windows2000/techinfo/reskit/tools/<br />

existing/setspn-o.asp<br />

Refer to the Microsoft documentation accompanying the Setspn tool for instructions on<br />

using it.<br />

Note If the Microsoft SQL Server Service Startup Account is changed, SPNs for Microsoft<br />

SQL Server must be deleted <strong>and</strong> re-registered.<br />

222 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Setting the Active Directory Encryption Property<br />

Setting the Active Directory Encryption Property<br />

A Windows domain running Windows Active Directory uses the Kerberos authentication<br />

protocol to protect logon credentials that travel across the network. Messages passed<br />

between the Kerberos Key Distribution Center (KDC), which runs on every domain<br />

controller as part of Active Directory, <strong>and</strong> Microsoft SQL Server are encrypted.<br />

The Active Directory property "Use DES encryption types for this account" must be<br />

set in the Microsoft SQL Server Service Startup Account on the domain controller.<br />

Setting this property is a one-time task that you must do only when the Active Directory<br />

account is first created. Check with your system administrator to verify that this property<br />

is set for the Microsoft SQL Server Service Startup Account on the domain controller.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 223


Chapter 8: Configuring SQL Server Windows Authentication<br />

224 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Part III Configuring <strong>and</strong> Managing BPEL Services<br />

Part III explains how to configure <strong>and</strong> manage BPEL services using the <strong>Sonic</strong><br />

<strong>Management</strong> Console, <strong>and</strong> contains the following chapters:<br />

● “Configuring BPEL Services”<br />

● “Managing BPEL Services”<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 225


226 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Chapter 9 Configuring BPEL Services<br />

This chapter describes how to configure BPEL services using the <strong>Sonic</strong> <strong>Management</strong><br />

Console. This chapter contains the following sections:<br />

● “Overview of BPEL Service Initialization Parameters”<br />

● “Specifying a BPEL Archive (.bpar)”<br />

● “Setting Persistence Options”<br />

● “Enabling Audit Trails”<br />

● “Audit Trails <strong>and</strong> Persistence”<br />

● “Setting a Default Partner Link”<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 227


Chapter 9: Configuring BPEL Services<br />

Overview of BPEL Service Initialization Parameters<br />

A BPEL project contains a single BPEL service <strong>and</strong> one or more BPEL processes. A<br />

BPEL service can execute a single BPEL process or multiple processes. This chapter<br />

explains how to configure BPEL services using the <strong>Sonic</strong> <strong>Management</strong> Console (SMC).<br />

(See the <strong>Progress</strong> <strong>Sonic</strong> BPEL Server Developer’s <strong>Guide</strong> in the <strong>Sonic</strong> Workbench<br />

(Eclipse) help for detailed information about BPEL services <strong>and</strong> processes.)<br />

Note In the development environment, you can also configure BPEL Service parameters using<br />

the BPEL Service editor in <strong>Sonic</strong> Workbench. See the BPEL Service Editor section of the<br />

<strong>Sonic</strong> Workbench (Eclipse) help for information.<br />

The BPEL service configuration pane in the SMC includes areas for viewing <strong>and</strong><br />

configuring Service Maintenance parameters <strong>and</strong> Initialization parameters, as shown in<br />

this example using the sample BPEL service, LoanApproval:<br />

228 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Overview of BPEL Service Initialization Parameters<br />

The Service Maintenance parameters are configured as for any <strong>ESB</strong> service:<br />

● Service Name<br />

● Entry Endpoint<br />

● Exit Endpoints<br />

● Fault Endpoint<br />

● Rejected Message Endpoint<br />

● WSDL URL<br />

The WSDL URL is exposed when BPEL processes are used directly by other services on<br />

the <strong>ESB</strong>. Each BPEL process has a separate WSDL, which is configured in the<br />

development environment in <strong>Sonic</strong> Workbench. For information about configuring these<br />

parameters, see the <strong>Progress</strong> <strong>Sonic</strong> BPEL Server Developer’s <strong>Guide</strong> in the <strong>Sonic</strong><br />

Workbench (Eclipse) help.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 229


Chapter 9: Configuring BPEL Services<br />

BPEL services have the following Initialization Parameters:<br />

Initialization Parameter Description<br />

BPEL Archive The URL of a BPEL archive file (*.bpar) located in the <strong>Sonic</strong><br />

file system.<br />

Required.<br />

See “Specifying a BPEL Archive (.bpar)” on page 231<br />

Staging Directory Enter a local file system directory where the BPAR can be<br />

unpacked. The default value is a directory named<br />

bpel_staging, relative to the working directory of the <strong>ESB</strong><br />

container in which the service is deployed (./bpel_staging).<br />

Required.<br />

Note: The BPEL service may delete files in this directory on<br />

service startup.<br />

Persistence Select a value to define how the service is to persist (if at all)<br />

its state. The default value is Embedded Storage.<br />

Required.<br />

See “Setting Persistence Options” on page 232.<br />

Enable Audit Trail Recording Select whether audit trails are captured for process instances.<br />

The default value is True.<br />

Required.<br />

See “Audit Trails <strong>and</strong> Persistence” on page 237.<br />

Default Partner Link Specify the default process <strong>and</strong> partner link to use.<br />

Optional.<br />

See “Setting a Default Partner Link” on page 238.<br />

HTTP Callback URL The address used as the Reply To address when using WSA<br />

headers in asynchronous invocations.<br />

Optional.<br />

230 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Specifying a BPEL Archive (.bpar)<br />

Specifying a BPEL Archive (.bpar)<br />

A BPAR file (*.bpar) is an archive of all resources required to execute a set of BPEL<br />

processes. A BPAR is created by <strong>Sonic</strong> Workbench when a BPEL project is uploaded.<br />

When configuring a BPEL service in the SMC you must point to an existing BPAR file.<br />

A single BPAR can be used by one more than one service. (See the <strong>Progress</strong> <strong>Sonic</strong> BPEL<br />

Server Developer’s <strong>Guide</strong> in the <strong>Sonic</strong> Workbench (Eclipse) help for more information<br />

about BPAR files.)<br />

Note It is recommended that BPAR files be stored in the <strong>Sonic</strong> file system (sonicfs://),<br />

however, local system paths may be specified.<br />

◆ To specify a BPEL archive file:<br />

1. In the Init Parameters area of the SMC, click ... next to the BPEL Archive field to open<br />

the Edit BPEL Archive file chooser, as shown in this example:<br />

2. Browse to <strong>and</strong> select a BPEL archive file (*.bpar).<br />

3. Click Open.<br />

The URL of the BPEL archive file is now displayed in the BPEL Archive field of the<br />

SMC.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 231


Chapter 9: Configuring BPEL Services<br />

Setting Persistence Options<br />

Persistence refers to the storage of active processes deployed to a server. Engine<br />

persistence must be configured to allow persistent processes <strong>and</strong> audit trails (see<br />

“Enabling Audit Trails” on page 236). If a service is configured to allow persistence, each<br />

process can then be configured to utilize it or not using its deployment descriptor file<br />

(*.bpdd). See the BPEL Deployment Descriptor editor section of the <strong>Progress</strong> <strong>Sonic</strong><br />

BPEL Server Developer’s <strong>Guide</strong> in the <strong>Sonic</strong> Workbench (Eclipse) help for information.<br />

BPEL services can run in either of two process modes:<br />

● Persistent process mode: In this mode, BPEL process instances can have their<br />

lifetimes persist across container lifetime. All state information is stored in the server<br />

database. The persistent processes are supported by either the embedded Hypersonic<br />

database, or an external database (either MySQL or Oracle).<br />

To select this mode, select the configuration option Embedded Storage (Hypersonic<br />

database) or Other Database (MySQL or Oracle) option for the persistence.<br />

The default process mode for BPEL services is Embedded Storage (Hypersonic<br />

database).<br />

Important When using an external database, each BPEL service instance must be configured<br />

with its own database. (Multiple databases can be created on the same server.) When<br />

using the embedded database, the service manages a separate instance for each<br />

service instance.<br />

● Transient process mode: In this mode, processes that have not completed when the<br />

service container is shut down are terminated at shutdown. No process information is<br />

stored in the server database when a process terminates.<br />

To select this mode, select the In Memory configuration option for the persistence.<br />

A BPEL service must be configured with persistence to allow persistence for any of the<br />

processes deployed in it. Deploying persistent processes into a service configured in<br />

transient mode effectively disables persistence for the process. Service <strong>and</strong> process<br />

persistence modes are summarized in the following table:<br />

Service Process<br />

Persistent Can be Persistent or Transient, as<br />

configured for the process.<br />

Transient Always Transient, regardless of process<br />

configuration.<br />

232 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Setting Persistence Options<br />

The following procedure explains how to set the persistence for a BPEL service using the<br />

SMC.<br />

◆ To set persistence for a BPEL service:<br />

1. In the Init Parameters area of the SMC, click ... next to the Persistence field. The<br />

Persistence Editor dialog box opens:<br />

Embedded Storage is the default persistence setting.<br />

2. Select the Data Source Type, either:<br />

■ In Memory — This option sets the persistence mode to transient. When you select<br />

this option, the Persistence field in the Init Parameters section of the SMC will<br />

display the value In Memory.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 233


Chapter 9: Configuring BPEL Services<br />

■ Embedded Storage — This option sets the persistence mode to persistent, using<br />

the embedded Hypersonic database. Optionally, you can specify a storage<br />

directory for the persistent processes. If you do not specify a storage directory, the<br />

default is the staging directory. The database is created as needed in the specified<br />

storage directory when the service starts. If you move or delete the database, a<br />

new database is created the next time the service starts. Existing databases in the<br />

staging directory are deleted (on service restart) when you specify a new storage<br />

location.<br />

When you select Embedded Storage, the Persistence field in the Init Parameters<br />

section of the SMC will display the value Embedded Storage.<br />

(This is the default mode.)<br />

■ Other Database — This option sets the persistence mode to persistent, using a<br />

database other than the embedded database. When this option is selected, you<br />

must provide additional details required to connect to the database. Only Oracle<br />

<strong>and</strong> MySQL database types are supported (see Step 3). When you select this<br />

option, the Persistence field in the Init Parameters section of the SMC will<br />

display a value for the selected database type:<br />

❑ Oracle:<br />

type=”oracle” username=”username” host=”localhost” port=”1521”<br />

❑ MySQL:<br />

type=”mysql” name=”dbname” username=”username” host=”localhost”<br />

port=”1521”<br />

Important When using an external database, each BPEL service instance must be<br />

configured with its own database.<br />

3. If you selected Other Database as the data source type, enter the following Database<br />

Options:<br />

■ Database Type — Select either Oracle or MySQL<br />

■ Database Name — Optional<br />

■ Machine Name — Optional<br />

■ Database Port — Optional<br />

■ Username — Optional<br />

■ Password — Optional<br />

Important When using an Oracle or MySQL database, you must add the JDBC driver JAR file<br />

to the container classpath (see “Adding JAR files to an <strong>ESB</strong> Container” on page 65<br />

for instructions).<br />

234 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


4. Click OK to set the persistence mode <strong>and</strong> close the dialog box.<br />

Setting Persistence Options<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 235


Chapter 9: Configuring BPEL Services<br />

BPEL Development Container <strong>Configuration</strong><br />

The BPEL development container, dev_BPEL, is configured to terminate all process<br />

instances at startup. This container uses embedded storage by default. All historical<br />

information (terminated processes <strong>and</strong> audit trails) remains available in the database <strong>and</strong><br />

can be accessed through the SMC <strong>Management</strong> tab. You can safely delete the database<br />

from the storage directory.<br />

Enabling Audit Trails<br />

An audit trail captures a history of the process instance as it executes. You can query <strong>and</strong><br />

view this history under the Manage tab in the SMC (see “Viewing Audit Trails” on<br />

page 248).<br />

Note Audit trails are only supported in persistent process mode by selecting either Embedded<br />

Storage or Other Database for the persistence parameter (see “Setting Persistence<br />

Options” on page 232).<br />

As with persistence, you can configure audit trails for each process using its deployment<br />

descriptor file (*.bpdd) (see the BPEL Deployment Descriptor editor section of the<br />

<strong>Progress</strong> <strong>Sonic</strong> BPEL Server Developer’s <strong>Guide</strong> in the <strong>Sonic</strong> Workbench (Eclipse) help<br />

for information). If audit trails are enabled for the service, then the per-process settings<br />

for audit trail (if any) are used. If audit trails are disabled for the service, then the perprocess<br />

settings are ignored <strong>and</strong> audit trails are always disabled.<br />

See “Viewing Audit Trails” on page 248 for information about the details you can view is<br />

audit trails.<br />

◆ To enable audit trail recording:<br />

❖ In the Init Parameters area of the SMC, select True from the Enable Audit Trails pulldown<br />

list. (Selecting False disables audit trails.)<br />

236 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Audit Trails <strong>and</strong> Persistence<br />

Audit Trails <strong>and</strong> Persistence<br />

Audit trails are stored in the database with the process instance state (when using<br />

persistent process mode). The following modes of operation are typical:<br />

● Persistent process mode with audit trails enabled — This is the st<strong>and</strong>ard<br />

configuration. All current <strong>and</strong> historical process state is saved.<br />

● Non-persistent process mode with audit trails not enabled — No process state is<br />

saved. Process instances do not survive a container restart <strong>and</strong> support only limited<br />

management capabilities. This mode is useful for short-duration processes where<br />

performance is more important than recoverability.<br />

● Persistent process mode with audit trails not enabled — Only the current process state<br />

is saved. This mode is useful to limit database growth, particularly with processes that<br />

might generate very long histories. Note that without audit trails the management<br />

capabilities are limited.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 237


Chapter 9: Configuring BPEL Services<br />

Setting a Default Partner Link<br />

When a BPEL Service is invoked it uses WS-Addressing reference parameters to identify<br />

the process <strong>and</strong> partner link associated with the invocation. If the message does not<br />

specify this information then the default process <strong>and</strong> partner link are used.<br />

The default partner link is optional. If no default is specified <strong>and</strong> the service cannot<br />

determine the process <strong>and</strong> partner link from the invocation message, the service will<br />

produce a fault.<br />

The processes (<strong>and</strong> partner links) in the Edit Default Partner Link dialog box are obtained<br />

from the BPEL archive, so you must specify the archive before you can edit the default<br />

partner link.<br />

You can set or edit the default partner link for a BPEL service when configuring the<br />

service in the SMC.<br />

◆ To set or edit the default partner link:<br />

1. In the Init Parameters area of the SMC, click ... to the right of the Default Partner Link<br />

field. The Default Partner Link dialog box opens, as shown in this example:<br />

If the BPEL service does not have any partner link configured, then the dialog box<br />

displays the value None.<br />

2. Select the Process <strong>and</strong> Partner Link for the BPEL service from the pull-down lists of<br />

processes <strong>and</strong> partner links.<br />

3. To remove a partner link, click Clear.<br />

238 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Considerations with Dehydrated Processes<br />

Considerations with Dehydrated Processes<br />

With dehydration, <strong>Sonic</strong> BPEL Server stores the process <strong>and</strong> its state in the database while<br />

waiting for a response, thus freeing up server resources. Hydration occurs when the<br />

engine receives the response <strong>and</strong> restores the process <strong>and</strong> its state from the database <strong>and</strong><br />

continues executing the process.<br />

Process instances cannot be dehydrated unless the following conditions are met:<br />

● You are not in development mode (TEST_CONTAINER_MODE is not set, or set to FALSE).<br />

(See “Setting Test Mode for <strong>ESB</strong> Containers Used in Development” on page 64.)<br />

● You are using a Persistent store (that is, not In Memory). (See “Setting Persistence<br />

Options” on page 232.)<br />

● All activities must be in a waiting state (that is, no alerts are set).<br />

● There are no synchronous inbound connections.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 239


Chapter 9: Configuring BPEL Services<br />

240 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Chapter 10 Managing BPEL Services<br />

This chapter describes how to manage BPEL services. This chapter contains the following<br />

sections:<br />

● “Overview of BPEL Service <strong>and</strong> Process <strong>Management</strong>”<br />

● “Clearing Process History”<br />

● “Terminating Processes”<br />

● “Searching for Process Instances”<br />

● “Viewing Audit Trails”<br />

● “BPEL Profiling”<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 241


Chapter 10: Managing BPEL Services<br />

Overview of BPEL Service <strong>and</strong> Process <strong>Management</strong><br />

Under the Manage tab in the <strong>Sonic</strong> <strong>Management</strong> Console (SMC), you can view BPEL<br />

services in <strong>ESB</strong> containers <strong>and</strong> perform management operations. You can also view <strong>and</strong><br />

manage all BPEL processes for each BPEL service.<br />

◆ To view <strong>and</strong> manage BPEL services <strong>and</strong> processes in the SMC:<br />

❖ In the left pane of the SMC under the Manage tab, select a BPEL service <strong>and</strong> view the<br />

associated processes in the right pane. In this example, selecting the sample BPEL<br />

service LoanApproval in the left pane displays the processes loanAssessor,<br />

pubSubApproval, <strong>and</strong> loanApproval in the right pane:<br />

<strong>Management</strong> operations can be performed on all the processes in a BPEL service when<br />

executed on the right pane, or on a specific process when executed in the left pane. For<br />

example, right-clicking a service in the left pane <strong>and</strong> selecting Terminate All terminates<br />

all instances of all processes for that service. Right-clicking a process in the right pane<br />

<strong>and</strong> selecting Terminate All terminates only instances of the selected process.<br />

242 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Clearing Process History<br />

The SMC provides the following management capabilities for BPEL services <strong>and</strong><br />

processes:<br />

● Clear history for a process or for all processes in a service (see “Clearing Process<br />

History” on page 243).<br />

● Terminate a process or all processes in a service (see “Terminating Processes” on<br />

page 244).<br />

● Search for a set of process instances that match your specified criteria (see “Searching<br />

for Process Instances” on page 244).<br />

● View audit trails for a selected process instance (see “Viewing Audit Trails” on<br />

page 248).<br />

● View aggregate information for all the process instances created by a selected process<br />

(see “BPEL Profiling” on page 250).<br />

Clearing Process History<br />

You can clear the history for a single process (for all its expired instances) or for all<br />

processes in a service. Clearing the history removes audit trails <strong>and</strong> terminated process<br />

instances.<br />

◆ To clear process history:<br />

1. To clear the process history for all processes in a service, right-click on a BPEL<br />

service (in the left pane) <strong>and</strong> select Clear History. The Clear History dialog box opens:<br />

Select whether to remove only processes that ended on or before a cutoff date (you<br />

must specify the date), or to remove all processes.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 243


Chapter 10: Managing BPEL Services<br />

2. To clear the process history for a selected process, right-click on a BPEL process (in<br />

the right pane) <strong>and</strong> select Clear History. The Clear History dialog box opens:<br />

Select whether to remove only instances of the selected process that ended on or<br />

before a cutoff date (you must specify the date), or to remove all instances of the<br />

selected process.<br />

Terminating Processes<br />

You can terminate a single process or all processes in a service.<br />

◆ To terminate processes:<br />

1. To terminate all processes in a service, right-click on a BPEL service (in the left<br />

pane) <strong>and</strong> select Terminate All. This action terminates all live instances of all the<br />

processes listed for the BPEL service.<br />

2. To terminate a selected process, right-click on a BPEL process (in the right pane) <strong>and</strong><br />

select Terminate All. This action terminates all live instances of the selected process.<br />

Searching for Process Instances<br />

You can use Process Instance Search tool to find instances of a process that match a set<br />

of criteria. You can specify the following search criteria:<br />

● Process instance state (live, terminated, or either)<br />

● Start or termination time<br />

● Received or sent message parts<br />

● XPath expressions, which include access to process variables<br />

Note If you search for all instances of a process, you cannot also select a start or termination<br />

time.<br />

244 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Searching for Process Instances<br />

The following procedure explains how to search for BPEL process instances using the<br />

Process Instance Search tool in the SMC.<br />

◆ To search for BPEL process instances:<br />

1. In the Manage tab of the SMC, select a BPEL service in the left pane, then select a<br />

BPEL process in the right pane. In the lower right pane, click Search. The Process<br />

Instance Search window opens, as shown in this example using the sample BPEL<br />

process, pubSubApproval:<br />

2. In the Search Criteria section specify a Search Filter:<br />

■ All Instances<br />

■ Live Instances<br />

■ Terminated Instances<br />

Note If you select All Instances of a process, you cannot also select a start or termination<br />

time.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 245


Chapter 10: Managing BPEL Services<br />

3. Optionally, in the Date section, enter a date <strong>and</strong> time in either or both the Started After<br />

<strong>and</strong> Terminated Before fields.<br />

When the Date is specified, a search returns processes as follows for different Search<br />

Filter selections:<br />

Search Filter Processes Returned by Search<br />

All Instances The Started After <strong>and</strong> Terminated Before fields are disabled when<br />

All Instances is selected.<br />

Live Instances Returns processes that started between the times specified in the<br />

fields Started After <strong>and</strong> Terminated Before.<br />

Terminated Only Returns processes that terminated between the times specified in<br />

the fields Started After <strong>and</strong> Terminated Before.<br />

4. Optionally, in the Messages section, click Add to specify the following search criteria<br />

in the table:<br />

■ Destination — Select Any, Inbound, or Outbound (Required)<br />

■ Message Namespace<br />

■ Message Local Name<br />

■ Part<br />

■ Search Value<br />

Note If you specify an asterisk (*) as the value for any of the criteria, that value is ignored.<br />

5. Optionally, in the Boolean XPath Expressions section, click Add to specify the<br />

comparison of a BPEL variable. The following expressions allow access to variables<br />

<strong>and</strong> their properties:<br />

Variable Description<br />

$variableName The value of the variable.<br />

bpws:getVariableProperty(‘name’,‘property’) The value of the property with respect<br />

to the variable identified.<br />

Note The properties must be specified as namespace qualified identities. The<br />

namespace prefixes available are those defined in the BPEL process (see the<br />

<strong>Progress</strong> <strong>Sonic</strong> BPEL Server Developer’s <strong>Guide</strong> in the <strong>Sonic</strong> Workbench<br />

(Eclipse) help for information about defining namespaces in a BPEL process).<br />

246 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Searching for Process Instances<br />

Specifying an XPath expression enables you to select process instances based on<br />

variable values <strong>and</strong> conditions applied to them. The conditions are expressed as XPath<br />

2.0 expressions.<br />

6. Click Search. The search results are displayed in the Process Instance Search<br />

Results section, as shown in this example:<br />

The search results are a list of process instances satisfying your search criteria with<br />

the following column values:<br />

■ Process ID — The unique ID of the process instance<br />

■ Terminated — The date, if terminated, or live.<br />

■ Correlation (if correlation set(s) are defined for the process) — Zero or more<br />

columns. Each correlation set is potentially an array of properties. The column<br />

name is the correlation set name <strong>and</strong> the value is a comma separated list of<br />

property values. For example:<br />

Property1=value,Property2=value<br />

Note The correlation column is dynamic, <strong>and</strong> is only shown when a process has<br />

correlation values.<br />

7. To terminate a process instance, select the instance in the Process Instance Results<br />

section <strong>and</strong> click Terminate.<br />

8. To view the audit trail of a process instance, select the instance in the Process<br />

Instance Results section <strong>and</strong> click Audit Trail. (See “Viewing Audit Trails” on<br />

page 248.)<br />

9. Close the Process Instance Search window to return to the SMC.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 247


Chapter 10: Managing BPEL Services<br />

Viewing Audit Trails<br />

When a BPEL service configuration has the Enable Audit Trails option set to True (see<br />

“Audit Trails <strong>and</strong> Persistence” on page 237) <strong>and</strong> the Persistence option set to something<br />

other than In Memory (see “Setting Persistence Options” on page 232), you can view<br />

activities <strong>and</strong> event details of a BPEL process instance.<br />

◆ To view audit trails <strong>and</strong> event details:<br />

1. In the Search Process Instance window, select a process instance <strong>and</strong> click Audit<br />

Trail (see “Searching for Process Instances” on page 244). The Audit Trail dialog box<br />

opens <strong>and</strong> displays the audit trail for the selected process instance, as shown in this<br />

example using the sample BPEL process, loanApproval:<br />

248 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


The Audit Events pane displays the following information:<br />

■ Activity Type<br />

Viewing Audit Trails<br />

■ Activity XML:ID— The value of the ID attribute in the process’s XML document<br />

■ Activity ID — A unique number for the specific instance of the activity. When<br />

multiple audit events are logged for the same activity, this number can be used to<br />

correlate all related events. (For example, see Activity ID 27 in the preceding<br />

example.)<br />

■ Time — The time, including date, at which the activity was recorded.<br />

Note Many activities generate multiple audit trail events. For instance, many activities<br />

generate a START event <strong>and</strong> a COMPLETE event, as in the preceding example.<br />

2. Select an activity in the left pane. If the activity has additional details, the details of<br />

the selected activity are displayed in the Events Details pane, as shown in this<br />

example:<br />

Event details include the following information, depending on the selected activity:<br />

■ Messages received by a RECEIVE activity<br />

■ Messages sent by an INVOKE activity<br />

■ Variable manipulation performed by an ASSIGN activity<br />

■ Fault information<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 249


Chapter 10: Managing BPEL Services<br />

BPEL Profiling<br />

You can view the activities of a BPEL process in the BPEL Profile dialog box under the<br />

Manage tab in the SMC. This information represents aggregate performance information<br />

of all process instances recorded for a particular process in the service. Clearing the<br />

history (see “Clearing Process History” on page 243) resets the profiling information.<br />

◆ To view detailed activities of a BPEL process:<br />

❖ In the Manage tab of the SMC, select a BPEL process then click BPEL Profile. The<br />

BPEL Profile dialog box opens, as shown in this example:<br />

The BPEL Profile dialog box lists the activities for a process by ID, <strong>and</strong> contains the<br />

following information:<br />

■ Activity XML:ID<br />

■ Activity Description, including the name attribute specified in the BPEL process,<br />

if any<br />

■ Times Completed: Minimum, average, <strong>and</strong> maximum [ms]<br />

■ Individual time: Minimum, average, <strong>and</strong> maximum [ms]<br />

■ Total time: Minimum, average, <strong>and</strong> maximum [ms]<br />

250 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Part IV Integrating <strong>Sonic</strong> <strong>and</strong> Actional<br />

Part IV contains the following chapters:<br />

● Chapter 11, “Using Actional with <strong>Sonic</strong> Components”<br />

● Chapter 12, “Using Actional Trust Zones in <strong>Sonic</strong> <strong>ESB</strong>”<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 251


252 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Chapter 11 Using Actional with <strong>Sonic</strong> Components<br />

The <strong>Sonic</strong> Enterprise Service Bus (<strong>ESB</strong>) <strong>and</strong> <strong>Sonic</strong>MQ interceptors provide service<br />

visibility through a st<strong>and</strong>-alone instance of Actional Agent. The <strong>ESB</strong> interceptor provides<br />

a logical view of all the interactions in the bus, <strong>and</strong> the MQ interceptor provides visibility<br />

in to the message flows in brokers. The <strong>Sonic</strong> interceptors are packaged <strong>and</strong> always<br />

installed with <strong>Sonic</strong> <strong>ESB</strong> containers <strong>and</strong> <strong>Sonic</strong>MQ brokers. The interceptors require you<br />

to specifically enable them on each installed container <strong>and</strong> broker, as described in this<br />

chapter <strong>and</strong> in <strong>Progress</strong> Actional documentation.<br />

The sections in this chapter are:<br />

● “Instrumenting <strong>Sonic</strong> <strong>ESB</strong>”<br />

● “Instrumenting <strong>Sonic</strong> BPEL Sever”<br />

● “Instrumenting <strong>Sonic</strong>MQ”<br />

● “Visualization When Both <strong>Sonic</strong>MQ Broker <strong>and</strong> <strong>Sonic</strong> <strong>ESB</strong> are Instrumented”<br />

● “Specifying the Uplink <strong>Configuration</strong> Location in <strong>Sonic</strong>”<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 253


Chapter 11: Using Actional with <strong>Sonic</strong> Components<br />

Instrumenting <strong>Sonic</strong> <strong>ESB</strong><br />

Figure 3. <strong>ESB</strong> Process<br />

<strong>Sonic</strong> <strong>ESB</strong> <strong>8.0</strong> installations include the actional-sdk.jar that is packaged in the <strong>ESB</strong><br />

library archives <strong>and</strong> the <strong>Sonic</strong> <strong>ESB</strong> interceptor in the xq_lginterceptor.jar.<br />

The <strong>ESB</strong> interceptor maps <strong>Sonic</strong> <strong>ESB</strong> message interactions to Actional <strong>Management</strong><br />

Server levels as follows:<br />

Actional<br />

<strong>Management</strong><br />

Server Level <strong>Sonic</strong> <strong>ESB</strong> Itineraries <strong>Sonic</strong> <strong>ESB</strong> non-Itineraries<br />

1 Host Name Host Name<br />

2 <strong>ESB</strong> Service Name <strong>ESB</strong> Service Name<br />

3 <strong>ESB</strong> Process Name "St<strong>and</strong>alone"<br />

4 Step Name -<br />

A <strong>Sonic</strong> <strong>ESB</strong> process, when visualized in the Actional <strong>Management</strong> Server, might look<br />

similar to the following:<br />

where Step_1, Step_2, <strong>and</strong> Step_3 are the steps in the <strong>ESB</strong> process Sample.XPathCBR.<br />

254 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Figure 4. <strong>ESB</strong> Service<br />

Instrumenting <strong>Sonic</strong> <strong>ESB</strong><br />

Services running on <strong>ESB</strong> might not be part of an <strong>ESB</strong> process. When <strong>Sonic</strong> <strong>ESB</strong> responds<br />

to a simple service request the fourth level does not have meaning, so the call looks more<br />

the one below for the dev.Runservice:<br />

The Actional Item Breakdown shows subnode data <strong>and</strong> the distribution of calls from <strong>ESB</strong><br />

containers in the node. The syntax for each subnode is<br />

DomainName.<strong>Management</strong>ContainerName.<strong>ESB</strong>ContainerName. In the following illustration,<br />

two containers contributed to the inbound call volume to dev.CBR:<br />

Figure 5. <strong>Sonic</strong> Subnode<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 255


Chapter 11: Using Actional with <strong>Sonic</strong> Components<br />

Enabling the <strong>ESB</strong> Interceptor<br />

The <strong>Sonic</strong> <strong>ESB</strong> Interceptor is installed whenever a <strong>Sonic</strong> <strong>ESB</strong> container is installed on a<br />

system. The interceptor is not, by default, enabled. In order to use the Actional Agent to<br />

manage services <strong>and</strong> processes on a system, you must install <strong>and</strong> provision the Actional<br />

Agent on the system where the <strong>ESB</strong> service runs, <strong>and</strong> then enable the interceptor by<br />

making configuration changes to the <strong>ESB</strong> Container, typically through the <strong>Sonic</strong><br />

<strong>Management</strong> Console. Integration is set on each <strong>ESB</strong> container you want to monitor by<br />

enabling the instrumentation in <strong>Sonic</strong>.<br />

◆ To enable <strong>Sonic</strong> <strong>ESB</strong> instrumentation on an <strong>ESB</strong> container:<br />

1. Start the <strong>Sonic</strong> <strong>Management</strong> Console <strong>and</strong> connect to the Directory Service that<br />

manages the <strong>ESB</strong> service.<br />

2. In the left panel, exp<strong>and</strong> the <strong>ESB</strong> Configured Objects tree.<br />

3. In the navigation panel, click on <strong>ESB</strong> Containers.<br />

4. Select a container in the <strong>ESB</strong> Container Name section in the right panel.<br />

5. In the Actional Integration section of the screen, check the Enable Instrumentation<br />

checkbox, <strong>and</strong>, optionally, whether to enable capturing of each message's payload.<br />

256 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Instrumenting <strong>Sonic</strong> <strong>ESB</strong><br />

The result of enabling <strong>ESB</strong> container instrumentation looks the following:<br />

Figure 6. Enabled <strong>ESB</strong> Container Instrumentation<br />

6. On the management container that hosts the <strong>ESB</strong> Container, specify the location of<br />

the uplink.cfg file. For more information, “Specifying the Uplink <strong>Configuration</strong><br />

Location in <strong>Sonic</strong>” on page 266.<br />

The container logs the information, as shown for this example where the my<strong>ESB</strong> <strong>ESB</strong><br />

container was enabled <strong>and</strong> hosts the dev_CBR Service:<br />

Code Sample 1. <strong>ESB</strong> Container Log of Actional Instrumentation Information<br />

[date-time] ID=My <strong>ESB</strong> (info) [<strong>ESB</strong>Service] Initializing Service 'dev.CBR'<br />

[date-time] ID=My <strong>ESB</strong> (info) [<strong>ESB</strong>Service] Service 'dev.CBR' initialized: 1 thread(s)<br />

listening on Endpoint dev.CBR.Entry<br />

[date-time] ID=My <strong>ESB</strong> (info) Actional instrumentation is enabled for this container<br />

[date-time] ID=My <strong>ESB</strong> (info) Actional payload capture is disabled.<br />

[date-time] ID=My <strong>ESB</strong> (info) Actional agent is running.<br />

[date-time] ID=My <strong>ESB</strong> (info) Initializing Mitigation context factory class:<br />

com.sonicsw.xqimpl.actional.lg.visitor.StabilizerHelper<br />

[date-time] (info) Loaded ID=My <strong>ESB</strong><br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 257


Chapter 11: Using Actional with <strong>Sonic</strong> Components<br />

Using Stabilizers with <strong>Sonic</strong> <strong>ESB</strong><br />

From within <strong>ESB</strong> at runtime, the value of stabilizer switches can be obtained from the<br />

service context. A stabilizer switch is a custom-defined flag set by the Actional<br />

<strong>Management</strong> Server to indicate certain user-specified system conditions. It can be used by<br />

<strong>ESB</strong> to set up custom routing in response to changing network or application conditions.<br />

You can access stabilizers in three ways: through interfaces in the <strong>Sonic</strong> <strong>ESB</strong> API,<br />

through JavaScript, <strong>and</strong> through XPath. If Actional is not instrumented for the <strong>ESB</strong><br />

container, then accessing stabilizers with any of the three mechanisms will always return<br />

false. If no stabilizer switch is defined, then these return false as well.<br />

Accessing Stabilizers in the <strong>Sonic</strong> <strong>ESB</strong> API<br />

This example uses the XQMitigationContext <strong>and</strong> XQServiceContext interfaces from the<br />

com.sonicsw.xq package.<br />

Custom <strong>ESB</strong> services written in Java can call these methods starting with the service<br />

context instance passed to the service() method. More commonly, however, stabilizer<br />

switches will be used from within a Content Base Routing (CBR) step in an <strong>ESB</strong> process.<br />

This allows the <strong>ESB</strong> process to route messages, at runtime, based on the value of a<br />

stabilizer switch. First, the application must retrieve an instance of XQMitigationContext,<br />

by calling the following method on the XQServiceContext interface:<br />

public XQMitigationContext getMitigationContext()<br />

Then, on the returned object, call this method to return the value of the switch:<br />

public boolean getMitigationSwitch(java.lang.String switchName)<br />

This method returns false if the switch is not defined.<br />

Acccessing Stabilizers in Javascript<br />

Typically, a CBR step in a process is configured to use a Javascript program to perform<br />

the routing logic. The Javascript program must define a function called rule() that <strong>ESB</strong><br />

258 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Code Sample 2.<br />

Instrumenting <strong>Sonic</strong> <strong>ESB</strong><br />

calls at runtime. In this rule() function, you can access the appropriate runtime interfaces,<br />

as shown:<br />

function isLGStabilizerSet(switchName)<br />

{<br />

if (switchName == null)<br />

{<br />

XQ_logInformation("#### No Stabilizer Switch name specified.");<br />

return false;<br />

}<br />

XQ_logInformation("#### Fetching MitigationContext" );<br />

mCtx = XQServiceContext.getMitigationContext();<br />

if( mCtx == null )<br />

{ XQ_logInformation("#### No MitigationContext found, LG is probably not enabled.");<br />

}<br />

}<br />

}<br />

return false;<br />

XQ_logInformation("#### Fetching Stabilizer Switch value for: " + switchName );<br />

stabilizerSwitch = mCtx.getMitigationSwitch(switchName);<br />

XQ_logInformation("#### Returning Stabilizer Switch value:<br />

" + switchName + "=" + stabilizerSwitch);<br />

return stabilizerSwitch;<br />

function rule()<br />

{<br />

if (isLGStabilizerSet("<strong>ESB</strong>StabilizerSwitch1"))<br />

{<br />

return XQ_getStepAddress("Step_StabilizerTrue");<br />

}<br />

else<br />

{<br />

return XQ_getStepAddress("Step_StabilizerFalse");<br />

}<br />

In this example, the rule() function calls the is LGStabilizerSet function to determine the<br />

value of a switch. If this switch is set, the CBR routes to a process StabilizerSet step; if<br />

the switch is not set, the CBR routes to the StabilizerNotSet step.<br />

Consult the <strong>ESB</strong> documentation for information on defining Content Base Routing steps.<br />

For more information on stabilizer switches <strong>and</strong> how they are used in Actional<br />

<strong>Management</strong> Server, see the “Stabilizer Switches” chapter of the Actional <strong>Management</strong><br />

Server <strong>Guide</strong>.<br />

Accessing Stabilizers in XPath<br />

To use stabilizers from XPath, define a namespace that maps a prefix (say, stabilizer) to<br />

java:com.sonicsw.xqimpl.actional.lg.visitor.StabilizerHelper. In the expression,<br />

enter the following to access the value of a stabilizer switch called Stabilizer1:<br />

stabilizer:getMitigationSwitch(stabilizer:new(),'Stabilizer1')<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 259


Chapter 11: Using Actional with <strong>Sonic</strong> Components<br />

Using <strong>ESB</strong>-Specific Message Fields<br />

The <strong>ESB</strong> message fields provide information that is not reported “natively” by the<br />

Actional <strong>Management</strong> Server. The <strong>ESB</strong> interceptor defines four message fields that are<br />

not defined for other platforms:<br />

Message Field<br />

Name Description<br />

<strong>ESB</strong>-Container The name of the <strong>ESB</strong> container — This field keeps track of the specific<br />

<strong>ESB</strong> container that either invokes a call or is invoked by a call. Actional<br />

<strong>Management</strong> Server is not aware of containers as such—it tracks<br />

information at the managed-node level. In cases where several containers<br />

are running on the same node, this message field will specify which<br />

container is in use.<br />

<strong>ESB</strong>-Top-Process The name of the top-level process of a nested <strong>ESB</strong> process — This<br />

field is useful when tracking the progress of a nested <strong>ESB</strong> process. In those<br />

cases, it keeps track of the name of the <strong>ESB</strong> top process that “owns” the<br />

current call.<br />

<strong>ESB</strong>-Process The name of the current <strong>ESB</strong> process — When applicable, this field<br />

reports on the current <strong>ESB</strong> Process, which may itself be part of a higher<br />

level <strong>ESB</strong> Process.<br />

<strong>ESB</strong>-Service The name of the <strong>ESB</strong> service invoked at a given step — When<br />

applicable, this field reports the name of the current <strong>ESB</strong> Service that was<br />

invoked by an <strong>ESB</strong> Process step.<br />

Enabling <strong>ESB</strong> Message Fields<br />

To enable this feature, the named message fields must be created (each with no default<br />

value) in the Actional <strong>Management</strong> Server administration interface. See the “Message<br />

Fields” chapter of the Actional <strong>Management</strong> Server <strong>Guide</strong> for more information on<br />

creating message fields.<br />

260 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Startup Order<br />

Trust Zones<br />

Auditing<br />

Instrumenting <strong>Sonic</strong> <strong>ESB</strong><br />

The <strong>Sonic</strong> <strong>ESB</strong> interceptor verifies that the Actional Agent is running when the <strong>ESB</strong><br />

container is launched. If the interceptor does not detect a running Actional Agent, <strong>ESB</strong><br />

instrumentation is disabled, even if it has been manually enabled in the <strong>Sonic</strong><br />

<strong>Management</strong> Console. Therefore make sure that the Actional Agent is running, taken<br />

under management <strong>and</strong> provisioned before the <strong>ESB</strong> container is launched on the same<br />

node.<br />

Trust Zones can be enforced by the <strong>ESB</strong> interceptor. See the following chapter, “Using<br />

Actional Trust Zones in <strong>Sonic</strong> <strong>ESB</strong>” on page 269 for more information.<br />

The <strong>Sonic</strong> <strong>ESB</strong> interceptor can be configured to capture payload data. The <strong>ESB</strong><br />

interceptor captures the contents of the first part of the message only if that part is XML;<br />

otherwise, no payload information is reported to the agent.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 261


Chapter 11: Using Actional with <strong>Sonic</strong> Components<br />

Instrumenting <strong>Sonic</strong> BPEL Sever<br />

The <strong>Progress</strong> <strong>Sonic</strong> BPEL Server product extends <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> with the<br />

functionality of the Business Process Execution Language. While the <strong>ESB</strong><br />

instrumentation of the <strong>ESB</strong> container that hosts a BPEL Service provides interceptors for<br />

BPEL processes, certain visualizations are realized only when BPEL Servers are<br />

monitored.<br />

The Actional levels are mapped to the <strong>Sonic</strong> BPEL Process structure, as follows:<br />

Actional Level <strong>Sonic</strong><br />

1 Host Name<br />

2 "BPEL-Process"<br />

3 BPEL Process Name<br />

4 Partner Link :: Operation<br />

When a <strong>Sonic</strong> BPEL Service emits events, they are visualized through the interceptor in<br />

the <strong>ESB</strong> container that hosts a BPEL service, <strong>and</strong> might look similar to the following:<br />

Figure 7. <strong>Sonic</strong> BPEL Service<br />

262 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Instrumenting <strong>Sonic</strong>MQ<br />

Instrumenting <strong>Sonic</strong>MQ<br />

<strong>Progress</strong> <strong>Sonic</strong>MQ broker installations include the actional-sdk.jar in the <strong>Sonic</strong>MQ<br />

library archives <strong>and</strong> the <strong>Sonic</strong>MQ interceptor in the broker.jar.<br />

When a <strong>Sonic</strong>MQ broker is enabled for Actional instrumentation, <strong>and</strong> both the broker <strong>and</strong><br />

agent are running, <strong>Sonic</strong>MQ interceptors are in the flow between the message producers<br />

<strong>and</strong> message consumers. They intercept all inbound <strong>and</strong> outbound messages <strong>and</strong> feed<br />

information about those interactions to the agent as asynchronous events. The <strong>Sonic</strong>MQ<br />

interceptor maps the messaging interactions on an instrumented broker to Actional levels<br />

as follows:<br />

Actional Level <strong>Sonic</strong><br />

1 Host Name<br />

2 <strong>Sonic</strong> Node Name :: Broker Name<br />

3 Destination Name<br />

4 -<br />

A <strong>Sonic</strong>MQ message flow from producer to consumer, when visualized in the Actional<br />

<strong>Management</strong> Server, might look similar to the following:<br />

Figure 8. <strong>Sonic</strong>MQ Message Flow<br />

where producer P1 published to topic T.1 on broker br3 (a member of <strong>Sonic</strong> cluster that is<br />

referenced as <strong>Sonic</strong> routing node A). Subscribers S1<strong>and</strong> S2 are active consumers on broker<br />

br3 with patterns that include the T.1 topic<br />

Enabling the <strong>Sonic</strong>MQ Interceptor<br />

The <strong>Sonic</strong>MQ Interceptor is installed whenever a <strong>Sonic</strong>MQ broker is installed on a<br />

system. The interceptor is not, by default, enabled. In order to use the Actional Agent to<br />

manage services <strong>and</strong> processes on a system, you must install <strong>and</strong> provision the Actional<br />

Agent on the system where the <strong>Sonic</strong>MQ broker runs, <strong>and</strong> then enable the interceptor by<br />

making configuration changes to the <strong>Sonic</strong>MQ broker, typically through the <strong>Sonic</strong><br />

<strong>Management</strong> Console. Actional integration is set on each broker running on a system.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 263


Chapter 11: Using Actional with <strong>Sonic</strong> Components<br />

Related <strong>Sonic</strong>MQ brokers placed on different systems (<strong>and</strong> therefore different Actional<br />

nodes) should have their Actional Agent instances managed on the same Actional<br />

<strong>Management</strong> Server to visualize interbroker flows such as clusters, Dynamic Routing,<br />

<strong>and</strong> Continuous Availability failover. Correspondingly, <strong>Sonic</strong>MQ brokers registered in<br />

different <strong>Sonic</strong>MQ domains but colocated on the same managed node will record their<br />

events on the same Actional <strong>Management</strong> Server.<br />

◆ To enable <strong>Sonic</strong>MQ instrumentation on a <strong>Sonic</strong>MQ broker:<br />

1. Start the <strong>Sonic</strong> <strong>Management</strong> Console, <strong>and</strong> connect to the Directory Service that<br />

manages the broker.<br />

2. On the configuration tab's left panel, locate the broker configuration you want to<br />

instrument.<br />

3. Right click on the broker name, <strong>and</strong> then choose Properties.<br />

4. Select the Monitoring tab.<br />

5. Check the Enable Actional Instrumentation checkbox, <strong>and</strong>, optionally, whether to<br />

enable capturing of each message's payload. You can specify the payload capture as<br />

NONE, HEADER, BODY, or ALL (both header <strong>and</strong> body). The result of enabling <strong>Sonic</strong>MQ<br />

broker instrumentation <strong>and</strong> choosing to capture payload headers is as follows:<br />

Figure 9. Enabled <strong>Sonic</strong>MQ Broker Instrumentation<br />

The log of the management container that hosts the broker immediately indicates the<br />

status of the instrumentation, as shown for this example:<br />

Code Sample 3. Broker’s Container Log of Actional Instrumentation Information<br />

[date-time] ID=Br1 (info) Actional instrumentation is enabled with payload capture disabled<br />

[date-time] ID=Br1 (info) Successfully connected to Actional agent<br />

6. On the management container that hosts the broker, specify the location of the<br />

uplink.cfg file. For more information, see “Specifying the Uplink <strong>Configuration</strong><br />

Location in <strong>Sonic</strong>” on page 266.<br />

264 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Visualization When Both <strong>Sonic</strong>MQ Broker <strong>and</strong> <strong>Sonic</strong> <strong>ESB</strong> are Instrumented<br />

Visualization When Both <strong>Sonic</strong>MQ Broker <strong>and</strong> <strong>Sonic</strong><br />

<strong>ESB</strong> are Instrumented<br />

If you enable instrumentation on an Actional managed node for both <strong>Sonic</strong>MQ brokers<br />

that monitor message traffic, <strong>and</strong> the <strong>Sonic</strong> <strong>ESB</strong> services that are producing <strong>and</strong><br />

consuming messages, then the hybrid visualization of the messages flowing through the<br />

endpoints on the brokers might look similar to the following for an <strong>ESB</strong> process:<br />

Figure 10. Hybrid <strong>Sonic</strong>MQ/<strong>Sonic</strong> <strong>ESB</strong> Instrumentation<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 265


Chapter 11: Using Actional with <strong>Sonic</strong> Components<br />

The hybrid visualization of the messages flowing through the endpoints on the brokers<br />

might look similar to the following for a st<strong>and</strong>alone service through a call to the dev.Run<br />

service:<br />

Figure 11. St<strong>and</strong>alone Service<br />

Specifying the Uplink <strong>Configuration</strong> Location in <strong>Sonic</strong><br />

You need to explicitly declare the location of the Actional Agent’s uplink.cfg file in the<br />

<strong>Sonic</strong> context. In <strong>Sonic</strong>, you do this by setting a Java System property in each<br />

management container configuration where Actional instrumentation is enabled.<br />

◆ To specify the location of the uplink.cfg file:<br />

1. In the <strong>Sonic</strong> <strong>Management</strong> Console, open (in turn) the Properties dialog box of each<br />

management container that hosts a messaging broker or <strong>ESB</strong> Container where you<br />

enabled Actional instrumentation.<br />

2. Choose the Environment tab.<br />

3. Click New.<br />

a. For the Variable, enter com.actional.lg.interceptor.config.<br />

b. For the Value enter a location for the file, usually a new folder within the Actional<br />

Agent directory.<br />

4. Click OK on the two dialog boxes<br />

266 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


The property is listed as shown, with your value entry:<br />

Figure 12. Actional Property<br />

Specifying the Uplink <strong>Configuration</strong> Location in <strong>Sonic</strong><br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 267


Chapter 11: Using Actional with <strong>Sonic</strong> Components<br />

268 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Chapter 12 Using Actional Trust Zones in <strong>Sonic</strong> <strong>ESB</strong><br />

This chapter describes support for <strong>Progress</strong> Actional trust zones in <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong><br />

in the following sections:<br />

● “<strong>Progress</strong> Actional Trust Zones”<br />

● “Implementing Trust Zones in <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong>”<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 269


Chapter 12: Using Actional Trust Zones in <strong>Sonic</strong> <strong>ESB</strong><br />

<strong>Progress</strong> Actional Trust Zones<br />

You can use <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>8.0</strong> with <strong>Progress</strong> Actional <strong>8.0</strong>.5 (or higher) to<br />

implement trust zones, which provide an additional layer of security in a SOA<br />

environment. In <strong>Sonic</strong> <strong>ESB</strong> <strong>8.0</strong>, trust zones are only supported for SOAP messages over<br />

HTTP.<br />

Trust zones secure the last mile <strong>and</strong> guard against threats from the following attacks:<br />

● Replay — Unauthorized third party tries to reuse an intercepted message header to<br />

restart or continue a session in place of the original requester system.<br />

● Man in the middle — Unauthorized third party intercepts communications between<br />

two systems, acting as a relay <strong>and</strong> capturing private information.<br />

The key components in Actional trust zone technology are:<br />

● Trust assertor (TA) — Actional Intermediary by default <strong>and</strong> agents if they are<br />

configured. The Actional Intermediary interceptor is the trust assertor <strong>and</strong> it inserts a<br />

trust header in a message before sending it to the internal network.<br />

● Trust enforcement point (TEP) - All agents can be enforcement points. During trust<br />

enforcement the Actional manifest header of the incoming message is checked. If the<br />

header does not contain valid trust information, the message is rejected.<br />

When an interceptor in the same trust zone performs trust enforcement on an incoming<br />

message, it validates the trust information <strong>and</strong> prevents the message from reaching the<br />

application if the trust information is invalid. Trust information is invalid if:<br />

● Trust assertion is missing (the message did not come in through a trust assertor)<br />

● Trust interval has expired<br />

● Invalid source IP address (if the caller's IP address checking is enabled)<br />

● Trust information was compromised (security breach)<br />

Trust zones limit the processing of a request to once within the trust interval, a trust-zonewide<br />

configuration property (the default is 5 minutes). You must synchronize the clocks<br />

on all nodes in a trust zone to ensure that the difference between clocks does not exceed<br />

the trust interval; otherwise, all requests within the trust zone are rejected. To set the trust<br />

interval, see the “Actional Server <strong>and</strong> Actional Intermediary” chapter in the Actional<br />

Server Continuous Service Optimization <strong>Guide</strong>.<br />

Notes If a message remains in a JMS queue longer than the trust interval, trust zone enforcement<br />

fails when the message is processed.If a message is redelivered, trust enforcement rejects<br />

the second message since it has the same request ID. If the message is redelivered after<br />

the JVM is restarted or after the time window expires, it is not rejected.<br />

270 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Implementing Trust Zones in <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong><br />

Implementing Trust Zones in <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong><br />

To implement trust zone enforcement in <strong>Sonic</strong> <strong>ESB</strong>, you enable Actional instrumentation<br />

on <strong>ESB</strong> containers, add the nodes on which the <strong>ESB</strong> containers are deployed to a trust<br />

zone, <strong>and</strong> configure appropriate service groups in Actional Intermediary for the web<br />

services exposed in <strong>ESB</strong>.<br />

The following is an overview of how to implement trust zones with <strong>Sonic</strong> <strong>ESB</strong>:<br />

1. Use <strong>8.0</strong>.5 (or higher) versions of the Actional product family (Agent, Server, <strong>and</strong><br />

Intermediary).<br />

2. Enable Actional instrumentation:<br />

■ Enable Actional instrumentation on <strong>ESB</strong> <strong>8.0</strong> containers.<br />

■ Do not enable Actional instrumentation on any brokers that <strong>Sonic</strong> <strong>ESB</strong> uses for<br />

messaging.<br />

See “Enable Actional Instrumentation in <strong>Sonic</strong> <strong>ESB</strong>” on page 272.<br />

3. Configure Actional Intermediary with appropriate service groups for the web services<br />

exposed in <strong>Sonic</strong> <strong>ESB</strong>.<br />

See “Register a Web Service with Actional Intermediary” on page 275.<br />

4. Configure trust zones appropriately for <strong>Sonic</strong> <strong>ESB</strong> <strong>and</strong> ensure that the agents are<br />

provisioned:<br />

■ Disable the Check Caller IP Address setting<br />

■ Enable the Trust Calls within Trust Zones setting<br />

See “Define Trust Zones on Actional Server” on page 280.<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 271


Chapter 12: Using Actional Trust Zones in <strong>Sonic</strong> <strong>ESB</strong><br />

Enable Actional Instrumentation in <strong>Sonic</strong> <strong>ESB</strong><br />

For each <strong>ESB</strong> process that will run in a trust zone, you must enable Actional<br />

instrumentation on every <strong>ESB</strong> container that participates in the execution of the <strong>ESB</strong><br />

process. <strong>Sonic</strong> <strong>ESB</strong> performs trust enforcement to check whether a message is trusted<br />

before letting a service execute. After service execution, <strong>Sonic</strong> <strong>ESB</strong> adds a trust assertion<br />

so the message is trusted at subsequent steps in the <strong>ESB</strong> process. <strong>Sonic</strong> <strong>ESB</strong> only adds a<br />

trust assertion if the Trust Calls within Trust Zones setting is enabled (see page 282).<br />

See the “Instrumenting <strong>Sonic</strong> <strong>ESB</strong>” chapter in the Actional Interceptor <strong>Guide</strong> for more<br />

information.<br />

Important Instrument only <strong>Sonic</strong> <strong>ESB</strong>, not <strong>Sonic</strong>MQ. Do not enable Actional instrumentation on<br />

any <strong>Sonic</strong>MQ broker to which an <strong>ESB</strong> application can connect. If <strong>Sonic</strong>MQ is<br />

instrumented, calls from outside the trust zone going directly to <strong>Sonic</strong>MQ are viewed as<br />

trusted. This is because after Actional instrumentation is enabled, all entities act as trust<br />

assertors <strong>and</strong> automatically write a trust assertion in messages coming from <strong>Sonic</strong>MQ.<br />

This behavior poses a security risk.<br />

Enabling trust zones affects flow visualization. All calls come into <strong>Sonic</strong> <strong>ESB</strong> through<br />

Actional Intermediary, which causes an extra node in the flow<br />

If an <strong>ESB</strong> container is not Actional-instrumented <strong>and</strong> an incoming message contains an<br />

Actional manifest header, <strong>Sonic</strong> <strong>ESB</strong> preserves <strong>and</strong> propagates the header to all messages<br />

in the Outbox. The Actional manifest header contains all the information relevant to<br />

Actional <strong>and</strong> by propagating this header <strong>Sonic</strong> <strong>ESB</strong> preserves the Actional flow even<br />

when the message travels through a non-instrumented <strong>Sonic</strong> <strong>ESB</strong> node.<br />

This behavior is modified in <strong>8.0</strong> when trust zones are enabled. A non-instrumented <strong>ESB</strong><br />

container will not propagate the Actional manifest header if a message is received from<br />

a trusted node. This prevents a trusted downstream node from falsely trusting a message<br />

that arrived from this non-trusted <strong>ESB</strong> container.<br />

272 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Implementing Trust Zones in <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong><br />

Enabling Actional Instrumentation on an <strong>ESB</strong> Container<br />

You can use the <strong>Sonic</strong> <strong>Management</strong> Console or <strong>Sonic</strong> Workbench to enable Actional<br />

instrumentation on an <strong>ESB</strong> container.<br />

◆ To enable Actional instrumentation using the <strong>Sonic</strong> <strong>Management</strong> Console:<br />

1. Select the <strong>ESB</strong> Containers folder in the left panel under <strong>ESB</strong> Configured Objects.<br />

2. Select the <strong>ESB</strong> container in the list in the right panel.<br />

3. Under Actional Integration in the right panel, select Enable Actional<br />

Instrumentation:<br />

◆ To enable Actional instrumentation using <strong>Sonic</strong> Workbench:<br />

1. In the Containers view, select a container, right-click <strong>and</strong> select Properties.<br />

2. In the General Properties page, select Enable Actional Instrumentation:<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 273


Chapter 12: Using Actional Trust Zones in <strong>Sonic</strong> <strong>ESB</strong><br />

Disabling Trust Enforcement on a <strong>Management</strong> Container (Optional)<br />

You can optionally disable trust enforcement, for example, if you have other services or<br />

<strong>ESB</strong> processes that call into a service that is part of an <strong>ESB</strong> process that does not require<br />

trust enforcement. You can disable trust enforcement selectively on particular<br />

management containers in a node (rather than all of the containers in the node). However,<br />

disabling trust enforcement in a management container affects all of the <strong>ESB</strong> containers<br />

deployed in that management container.<br />

◆ To disable trust enforcement on a management container:<br />

1. In the <strong>Sonic</strong> <strong>Management</strong> Console Configure tab, exp<strong>and</strong> the Containers folder under<br />

Configured Objects.<br />

2. Select the management container, right-click, <strong>and</strong> select Properties. The Edit<br />

Container Properties dialog box opens.<br />

3. Select the Environment tab <strong>and</strong> enter the following JVM argument in the Java VM<br />

options section <strong>and</strong> set it to true:<br />

-Dactional.interceptor.DisableTrustZoneEnforcement=true<br />

274 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Implementing Trust Zones in <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong><br />

Register a Web Service with Actional Intermediary<br />

Since all SOAP/HTTP calls go through Actional Intermediary, you must provide a way to<br />

contact Actional Intermediary <strong>and</strong> for Actional Intermediary to contact an <strong>ESB</strong> process<br />

exposed as a web service. Message traffic flows through a service group, a set of managed<br />

web services, web service access points, <strong>and</strong> message processing blocks.<br />

You expose an <strong>ESB</strong> process as a web service <strong>and</strong> configure Actional Intermediary with<br />

service groups for the web services exposed in <strong>Sonic</strong> <strong>ESB</strong>. For information on exposing<br />

an <strong>ESB</strong> process as a web service, see the “Wrapping an <strong>ESB</strong> process as a Web service”<br />

topic under “<strong>ESB</strong> Process editor” in the <strong>Sonic</strong> Workbench online help.<br />

◆ To register a web service with Actional Intermediary:<br />

1. Open a browser to the administration console for Actional Intermediary using the<br />

URL, your_system_name:4400/sst.<br />

2. Select Service Groups on the left side of the window. The Services page opens on the<br />

right side:<br />

3. Click Add Service Group. The Service Group Creation page opens:<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 275


Chapter 12: Using Actional Trust Zones in <strong>Sonic</strong> <strong>ESB</strong><br />

4. Select a wizard, for example the Pass Through wizard, which brings a single Web<br />

service under management <strong>and</strong> creates an access point for that managed service. The<br />

Service Group - Identification page opens:<br />

5. Enter values for the service group properties:<br />

Property Description<br />

Name Enter a name for the service group.<br />

Type Optionally, specify the general type of service you are managing.<br />

Description Optionally, enter any additional information about the service group<br />

to help identify it later.<br />

6. Click Next. The Service Group - WSDL Source page opens:<br />

7. Enter the URL of the WSDL for the <strong>ESB</strong> process exposed as a web service.<br />

276 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Implementing Trust Zones in <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong><br />

You can use the <strong>Sonic</strong> <strong>Management</strong> Console to find the WSDL URL:<br />

When you enter the WSDL URL you can append ?wsdl <strong>and</strong> Actional Intermediary<br />

will use dynamic WSDL retrieval to find the WSDL for the web service. Actional<br />

Intermediary imports the WSDL file from the location you specify <strong>and</strong> stores the<br />

WSDL internally.<br />

8. After dynamic WSDL retrieval, the Service Group - Select Service Port page shows<br />

the services, <strong>and</strong> their port, binding, operations, transport, <strong>and</strong> endpoint. In this<br />

example, there is one service exposed by the WSDL:<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 277


Chapter 12: Using Actional Trust Zones in <strong>Sonic</strong> <strong>ESB</strong><br />

9. Click Next <strong>and</strong> accept the default settings in the following Service Group - Select<br />

pages for:<br />

a. Operations — visible at the access point. For <strong>Sonic</strong> <strong>ESB</strong> it is the <strong>ESB</strong> process<br />

exposed by the WSDL.<br />

b. Sender — delivers the SOAP request to the managed service. For <strong>Sonic</strong> <strong>ESB</strong>, the<br />

transport is HTTP.<br />

c. Application — Web service you are bringing under management. In this example<br />

it is the default application.<br />

d. Documentation — optionally link to or enter.<br />

e. Security Contract — for the access point. This example uses HTTP with no<br />

security contract.<br />

f. Enable — URL to contact Actional Intermediary.<br />

10. Then click Finish. The Status page shows that the service group was successfully<br />

created:<br />

11. The service group is not activated by default. Click Activate to activate the service<br />

group.<br />

The Components section of the page shows the message flow through Actional<br />

Intermediary <strong>and</strong> its:<br />

■ Access points — where messages enter Actional Intermediary<br />

■ Managed services — where messages leave Actional Intermediary (the <strong>ESB</strong><br />

process)<br />

278 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Implementing Trust Zones in <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong><br />

12. If you select Service Groups in the list on the left side of the window, you can confirm<br />

that the new service group was added to the list on the Services page:<br />

For more information on service groups, see:<br />

● “Working with Service Groups” chapter in the Actional Intermediary Administration<br />

<strong>Guide</strong><br />

● “Instrumenting <strong>Sonic</strong> <strong>ESB</strong>” chapter in the Actional Agent Interceptor <strong>Guide</strong><br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 279


Chapter 12: Using Actional Trust Zones in <strong>Sonic</strong> <strong>ESB</strong><br />

Define Trust Zones on Actional Server<br />

Follow these steps to define trust zones on Actional Server:<br />

1. “Bring Nodes under Actional <strong>Management</strong>”<br />

2. “Create <strong>and</strong> Configure Trust Zones”<br />

3. “Add Managed Nodes to a Trust Zone”<br />

Bring Nodes under Actional <strong>Management</strong><br />

In Actional, a node is a system on the current network where an agent is running. You<br />

must bring the nodes where the Actional-enabled <strong>ESB</strong> containers are deployed as well as<br />

Actional Intermediary under Actional management.<br />

◆ To bring nodes under Actional management:<br />

1. Open a browser to the Actional Server administration console using the URL,<br />

your_system_name:4040/lgserver.<br />

2. In the Configure view, select the Network tab <strong>and</strong> select Nodes. The Network Nodes<br />

page shows the nodes under Actional management:<br />

3. To add a node, follow the steps in the “Configuring the Network” chapter in the<br />

Actional Server SOA Operations Administration <strong>Guide</strong>:<br />

■ The URL for the LG agent is typically host_name:port_number/lgagent.<br />

■ The default port number is 4041.<br />

280 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Create <strong>and</strong> Configure Trust Zones<br />

Implementing Trust Zones in <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong><br />

The “Actional Server <strong>and</strong> Actional Intermediary” chapter in the Actional Server<br />

Continuous Service Optimization <strong>Guide</strong> describes how to configure Actional trust zones.<br />

However, certain default settings are not appropriate to use with <strong>Sonic</strong> <strong>ESB</strong>.<br />

◆ To create <strong>and</strong> configure an Actional trust zone for <strong>Sonic</strong> <strong>ESB</strong>:<br />

1. Select the Network tab <strong>and</strong> select Trust Zones. The Trust Zones page opens:<br />

2. Click Add. The New Trust Zone - General Information page opens with the default<br />

settings:<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 281


Chapter 12: Using Actional Trust Zones in <strong>Sonic</strong> <strong>ESB</strong><br />

3. Define the following properties for the trust zone:<br />

Property Description<br />

Name Assign a specific name to the trust zone.<br />

Trust Calls<br />

within Trust<br />

Zones<br />

Check Caller's<br />

IP Address<br />

Check this box (the default is unchecked). Non-Actional Intermediary<br />

interceptors can insert Actional trust assertion into the outbound<br />

headers. The message can go directly to any other service that is<br />

managed (for which an interceptor is checking for trust assertion) <strong>and</strong><br />

it will pass the trust enforcement check.<br />

Remove the check from this box. The IP address of the caller (in the<br />

Actional headers) will not be checked.<br />

Next, specify the managed nodes for the trust zone.<br />

282 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Add Managed Nodes to a Trust Zone<br />

Implementing Trust Zones in <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong><br />

The last step in defining trust zones is to add managed nodes to a trust zone <strong>and</strong> provision<br />

the agents.<br />

◆ To add managed nodes to a trust zone:<br />

1. Click Next in the New Trust Zone - General Information page. The New Trust Zone -<br />

Trusted Nodes page opens:<br />

2. Select the nodes (including the Actional Intermediary node) <strong>and</strong> click Add to add<br />

them to the list of nodes in the trust zone. (If you do not see a node you want to add,<br />

it might be in another trust zone. If so, select List all managed nodes.)<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 283


Chapter 12: Using Actional Trust Zones in <strong>Sonic</strong> <strong>ESB</strong><br />

3. Click Finish. The Trust Zone Details page shows the trust zone settings <strong>and</strong> the<br />

trusted nodes:<br />

4. Click the Provisioning link. The Provisioning page opens<br />

5. Select all the nodes added to the trust zone <strong>and</strong> click Provision.<br />

284 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong>


Index<br />

A<br />

Activation Daemon 79, 127<br />

retry rules 82<br />

add directory comm<strong>and</strong> 37<br />

add file comm<strong>and</strong> 37<br />

add license container comm<strong>and</strong> 41<br />

address factory 52<br />

addresses 87<br />

alternate servers 126<br />

DB2 140<br />

Informix 156<br />

Microsoft SQL Server 182<br />

Oracle 167<br />

<strong>Progress</strong> OpenEdge 130, 135<br />

Sybase 197<br />

applyMap comm<strong>and</strong> 46<br />

B<br />

Blob <strong>and</strong> binary stream data (DB2) 150<br />

boot files 53<br />

BPAR 231<br />

BPEL<br />

archive file 231<br />

audit trail 236, 248<br />

partner link 238<br />

process instance search 244<br />

profiling 250<br />

BPEL services<br />

configuring 227<br />

broker<br />

Actional instrumentation 56<br />

payload in Actional instrumentation 56<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 285<br />

C<br />

certificate-based authentication 111<br />

cipher suites 111<br />

clearing management container logs 68<br />

client load balancing 122<br />

code page<br />

converting character data<br />

DB2 142<br />

Informix 156<br />

Microsoft SQL Server 183<br />

Sybase 198<br />

overriding<br />

DB2 142<br />

Informix 156<br />

comm<strong>and</strong>s, <strong>ESB</strong> Admin Tool 35<br />

concurrent durable subscriptions 93, 99<br />

configuring<br />

BPEL services 227<br />

connections 106<br />

<strong>Sonic</strong>MQ endpoints 97<br />

connect comm<strong>and</strong> 36<br />

connecting to domain manager 22<br />

connection<br />

configuring 106<br />

connection URLs 108<br />

deleting 112


Index<br />

<strong>ESB</strong> 56<br />

for endpoints 98<br />

HTTP(S) 56<br />

JMS 56<br />

maximum at least once sessions 109<br />

maximum best effort sessions 109<br />

maximum exactly once sessions 109<br />

maximum receive sessions 109<br />

maximum Web Service sessions 109<br />

name 108<br />

name of domain 24<br />

ping interval 110<br />

type 108<br />

connection failover 123<br />

alternate servers<br />

DB2 140<br />

Informix 156<br />

Microsoft SQL Server 182<br />

Oracle 167<br />

<strong>Progress</strong> OpenEdge 130, 135<br />

Sybase 197<br />

connection retry 124<br />

ConnectionRetryCount<br />

DB2 143<br />

Informix 157<br />

Microsoft SQL Server 184<br />

Oracle 169<br />

<strong>Progress</strong> OpenEdge 131, 135<br />

Sybase 199<br />

ConnectionRetryDelay<br />

DB2 144<br />

Informix 158<br />

Microsoft SQL Server 185<br />

Oracle 170<br />

<strong>Progress</strong> OpenEdge 131, 135<br />

Sybase 200<br />

DatabaseName<br />

<strong>Progress</strong> OpenEdge 132, 135<br />

connection URLs<br />

connections 108<br />

domain 24<br />

container list comm<strong>and</strong> 41<br />

createMap comm<strong>and</strong> 46<br />

286 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong><br />

D<br />

date format (Informix) 159<br />

DB2<br />

code page<br />

character data, converting 142<br />

connection properties<br />

alternate servers 140<br />

CodePageOverride 142<br />

ConnectionRetryCount 143<br />

ConnectionRetryDelay 144<br />

DiagnosticFilename 145<br />

InsensitiveResultSetBufferSize 146<br />

LoadBalancing 147<br />

MaxPooledStatements 148<br />

ConnectionRetry 143<br />

ConnectionRetryDelay 144<br />

DBClob data type mapping 154<br />

load balancing 147<br />

scalar functions 214<br />

state information log 145<br />

DBDate (Informix) 159<br />

debug tracing 76<br />

delete comm<strong>and</strong> 38, 40<br />

delete directory comm<strong>and</strong> 38<br />

delete file comm<strong>and</strong> 36<br />

deleting<br />

<strong>Sonic</strong>MQ connections 112<br />

<strong>Sonic</strong>MQ endpoints 101<br />

destination name for endpoints 99<br />

DiagnosticFilename<br />

DB2 145<br />

Informix 160<br />

Microsoft SQL Server 185<br />

Oracle 170<br />

Sybase 200<br />

disconnect comm<strong>and</strong> 36<br />

domain manager<br />

connecting to 22<br />

starting 22<br />

domains<br />

connection name 24<br />

connection URL(s) of management broker 24<br />

name 24<br />

DRA, using 95<br />

dump comm<strong>and</strong> 40<br />

durable subscription, concurrent 99


E<br />

enable Actional instrumentation<br />

broker 56<br />

endpoints<br />

configuring 97<br />

connections 98<br />

deleting 101<br />

durable subscription 99<br />

entry 88<br />

exit 88<br />

fault 88<br />

JMS destination name 99<br />

JMS destination type 98<br />

load balancing 100<br />

message prefetch count 100<br />

message prefetch threshold 100<br />

name 98<br />

priority 99<br />

Qualify of Service 98<br />

RME 89<br />

shared subscriptions 100<br />

time to live 100<br />

WSDL URL 98<br />

entry endpoints 88<br />

envelope factory 52<br />

<strong>ESB</strong> (JMS) connection 56<br />

<strong>ESB</strong> Admin 35<br />

<strong>ESB</strong> Admin Tool<br />

comm<strong>and</strong>s 35<br />

<strong>ESB</strong> Configured Objects 28<br />

<strong>ESB</strong> Container<br />

listeners 63<br />

exit endpoint 88<br />

export archive comm<strong>and</strong> 46<br />

export bootfile comm<strong>and</strong> 46<br />

export comm<strong>and</strong> 40<br />

export directory comm<strong>and</strong> 38<br />

export file comm<strong>and</strong> 38<br />

export license container comm<strong>and</strong> 41<br />

F<br />

factory<br />

address 52<br />

envelope 52<br />

message 52<br />

objects for container services 52<br />

failover 123<br />

fault endpoint 88<br />

fault tolerant client connections 101<br />

Index<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 287<br />

H<br />

HTTP routing connection 56<br />

http_defaultConnection 98<br />

I<br />

import archive comm<strong>and</strong> 47<br />

import comm<strong>and</strong> 40<br />

import file system comm<strong>and</strong> 47<br />

Informix<br />

code page<br />

character data, converting 156<br />

connection properties<br />

alternate servers 156<br />

CodePageOverride 156<br />

ConnectionRetryCount 157<br />

ConnectionRetryDelay 158<br />

DBDate 159<br />

DiagnosticFilename 160<br />

InformixServer 160<br />

InsensitiveResultSetBufferSize 160<br />

LoadBalancing 161<br />

MaxPooledStatements 162<br />

ConnectionRetry 157<br />

ConnectionRetryDelay 158<br />

date format 159<br />

load balancing 161<br />

scalar functions 215<br />

state information log 160<br />

InsensitiveResultSetBufferSize<br />

DB2 146<br />

Informix 160<br />

Microsoft SQL Server 186<br />

Oracle 171<br />

<strong>Progress</strong> OpenEdge 132<br />

Sybase 201


Index<br />

instrumentation payload, broker 56<br />

instrumentation, broker 56<br />

J<br />

JMS destination type 98<br />

JMS destinations 91<br />

jms_defaultConnection 98<br />

L<br />

launching management containers 68<br />

list comm<strong>and</strong> 39<br />

listeners 60<br />

listeners, number 63<br />

load balancing 122<br />

DB2 147<br />

Informix 161<br />

Microsoft SQL Server 187<br />

Oracle 172<br />

Sybase 202<br />

load balancing, endpoints 100<br />

LoadBalancing<br />

<strong>Progress</strong> OpenEdge 133, 135<br />

logging 76<br />

M<br />

management broker<br />

connection URL(s) 24<br />

management container logs<br />

clearing 68<br />

saving 68<br />

viewing 68<br />

management containers<br />

launching 68<br />

operations 68<br />

reload comm<strong>and</strong> 42<br />

resetting metrics 68<br />

restarting 68<br />

resume comm<strong>and</strong> 42<br />

shutdown comm<strong>and</strong> 41<br />

shutting down 68<br />

status comm<strong>and</strong> 42<br />

suspend comm<strong>and</strong> 42<br />

maximum<br />

at least once sessions 109<br />

best effort sessions 109<br />

exactly once sessions 109<br />

receive sessions 109<br />

Web Service sesions 109<br />

MaxPooledStatements<br />

DB2 148<br />

Informix 162<br />

Microsoft SQL Server 188<br />

Oracle 173<br />

<strong>Progress</strong> OpenEdge 133<br />

Sybase 203<br />

message<br />

factory 52<br />

prefetch threshold 100<br />

message prefetch count 100<br />

Microsoft SQL Server<br />

code page<br />

character data, converting 183<br />

connection properties<br />

alternate servers 182<br />

CodePageOverride 183<br />

ConnectionRetryCount 184<br />

ConnectionRetryDelay 185<br />

DiagnosticFilename 185<br />

InsensitiveResultSetBufferSize 186<br />

LoadBalancing 187<br />

MaxPooledStatements 188<br />

ConnectionRetry 184<br />

ConnectionRetryDelay 185<br />

load balancing 187<br />

scalar functions 217<br />

state information log 185<br />

288 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong><br />

N<br />

names<br />

connections 108<br />

domain 24<br />

endpoints 98<br />

notifications 73


O<br />

operations<br />

management containers 68<br />

Oracle<br />

connection properties<br />

alternate servers 167<br />

ConnectionRetryCount 169<br />

ConnectionRetryDelay 170<br />

DiagnosticFilename 170<br />

InsensitiveResultSetBufferSize 171<br />

LoadBalancing 172<br />

MaxPooledStatements 173<br />

ConnectionRetry 169<br />

ConnectionRetryDelay 170<br />

load balancing 172<br />

scalar functions 216<br />

state information log 170<br />

outer joins 219<br />

P<br />

Password<br />

<strong>Progress</strong> OpenEdge 133<br />

payload, Actional instrumentation<br />

broker 56<br />

ping interval, connection property 106, 110<br />

PortNumber<br />

<strong>Progress</strong> OpenEdge 134, 135<br />

primary servers 126<br />

priority<br />

endpoints 99<br />

<strong>Progress</strong> OpenEdge 132, 133, 134, 135<br />

connection properties<br />

alternate servers 130, 135<br />

ConnectionRetryCount 131, 135<br />

ConnectionRetryDelay 131, 135<br />

DatabaseName 132, 135<br />

Hostname 132<br />

InsensitiveResultSetBufferSize 132<br />

LoadBalancing 133, 135<br />

MaxPooledStatements 133<br />

Password 133<br />

PortNumber 134, 135<br />

SpyAttributes 134<br />

User 134<br />

ConnectionRetry 131, 135<br />

ConnectionRetryDelay 135<br />

DatabaseName 132, 135<br />

InsensitiveResultSetBufferSize 132<br />

LoadBalancing 133, 135<br />

MaxPooledStatements 133<br />

Password 133<br />

PortNumber 134, 135<br />

scalar functions 213<br />

SpyAttributes 134<br />

User 134<br />

Index<br />

<strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong> 289<br />

Q<br />

Quality of Service<br />

endpoints 98<br />

queues<br />

creating 99<br />

R<br />

reconnection 104<br />

rejected message endpoint 89<br />

reload comm<strong>and</strong> 42<br />

resetting<br />

management container metrics 68<br />

resources 25<br />

restarting<br />

management containers 68<br />

resume comm<strong>and</strong> 42<br />

S<br />

saving management container logs 68<br />

scalar functions<br />

DB2 214<br />

Informix 215<br />

Microsoft SQL Server 217<br />

Oracle 216<br />

<strong>Progress</strong> OpenEdge 213<br />

Sybase 218<br />

shared subscriptions 93<br />

endpoints 100<br />

shutdown container 41


Index<br />

shutting down management containers 68<br />

<strong>Sonic</strong> <strong>Management</strong> Console 23<br />

<strong>Sonic</strong>FS 25<br />

Spy (DataDirect) 134<br />

SpyAttributes<br />

<strong>Progress</strong> OpenEdge 134<br />

SSL<br />

CA certificates location 111<br />

certificate chain file 111<br />

certificate chain form 111<br />

cipher suites 111<br />

private key file 111<br />

private key password 111<br />

provider class 111<br />

starting<br />

domain manager 22<br />

state information log<br />

DB2 145<br />

Informix 160<br />

Microsoft SQL Server 185<br />

Oracle 170<br />

Sybase 200<br />

support, technical 17<br />

suspend comm<strong>and</strong> 42<br />

Sybase<br />

code page<br />

character data, converting 198<br />

connection properties<br />

alternate servers 197<br />

CodePageOverride 198<br />

ConnectionRetryCount 199<br />

ConnectionRetryDelay 200<br />

DiagnosticFilename 200<br />

InsensitiveResultSetBufferSize 201<br />

LoadBalancing 202<br />

MaxPooledStatements 203<br />

ConnectionRetry 199<br />

ConnectionRetryDelay 200<br />

load balancing 202<br />

scalar functions 218<br />

state information log 200<br />

T<br />

technical support 17<br />

threads, listener 63<br />

time to live<br />

endpoints 100<br />

type, connections 108<br />

290 <strong>Progress</strong> <strong>Sonic</strong> <strong>ESB</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Management</strong> <strong>Guide</strong> <strong>8.0</strong><br />

U<br />

User<br />

<strong>Progress</strong> OpenEdge 134<br />

V<br />

viewing management container logs 68<br />

W<br />

Web Service sessions<br />

maximum 109<br />

WSDL URL<br />

endpoints 98

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!