Referencesss258.com

sss258.com  时间:2021-04-07  阅读:()
PROGRESSARTIXConfiguringandDeployingArtixSolutions,RuntimeinC++Version5.
6,December20112011ProgressSoftwareCorporationand/oritssubsidiariesoraffiliates.
Allrightsreserved.
ThesematerialsandallProgresssoftwareproductsarecopyrightedandallrightsarereservedbyProgressSoftwareCorporation.
Theinformationinthesematerialsissubjecttochangewithoutnotice,andProgressSoftwareCorporationassumesnoresponsibilityforanyerrorsthatmayappeartherein.
Thereferencesinthesematerialstospecificplatformssupportedaresubjecttochange.
Actional,Apama,Artix,BusinessEmpowerment,DataDirect(anddesign),DataDirectCon-nect,DataDirectConnect64,DataDirectTechnologies,DataDirectXMLConverters,Data-DirectXQuery,DataXtend,DynamicRoutingArchitecture,EdgeXtend,EmpowermentCenter,Fathom,FuseMediationRouter,FuseMessageBroker,FuseServicesFramework,IntelliStream,IONA,MakingSoftwareWorkTogether,Mindreef,ObjectStore,OpenEdge,Orbix,PeerDirect,POSSENET,PoweredbyProgress,PowerTier,Progress,ProgressDataXtend,ProgressDynamics,ProgressBusinessEmpowerment,ProgressEmpowermentCenter,ProgressEmpowermentProgram,ProgressOpenEdge,ProgressProfiles,ProgressResults,ProgressSoftwareDevelopersNetwork,ProgressSonic,ProVision,PSSelect,Savvion,SequeLink,Shadow,SOAPscope,SOAPStation,Sonic,SonicESB,SonicMQ,SonicOrchestrationServer,SpeedScript,StylusStudio,TechnicalEmpowerment,Web-Speed,Xcalia(anddesign),andYourSoftware,OurTechnology–ExperiencetheConnec-tionareregisteredtrademarksofProgressSoftwareCorporationoroneofitsaffiliatesorsubsidiariesintheU.
S.
and/orothercountries.
AccelEvent,ApamaDashboardStudio,ApamaEventManager,ApamaEventModeler,ApamaEventStore,ApamaRiskFirewall,AppsAlive,AppServer,ASPen,ASP-in-a-Box,BusinessEdge,BusinessMakingProgress,Cache-Forward,CloudEdge,DataDirectSpy,DataDirectSupportLink,Fuse,FuseSource,FutureProof,GVAC,HighPerformanceIntegration,ObjectStoreInspector,ObjectStorePerformanceExpert,OpenAccess,Orbacus,Pantero,POSSE,ProDataSet,ProgressArcade,ProgressCloudEdge,ProgressControlTower,ProgressESPEventManager,ProgressESPEventModeler,ProgressEventEngine,ProgressRFID,ProgressRPM,ProgressSoftwareBusinessMakingProgress,PSEPro,SectorAlliance,SeeThinkAct,Shadowz/Services,Shadowz/Direct,Shadowz/Events,Shadowz/Presentation,ShadowStudio,SmartBrowser,SmartComponent,SmartDataBrowser,SmartDataObjects,SmartDataView,SmartDialog,SmartFolder,SmartFrame,SmartObjects,SmartPanel,SmartQuery,SmartViewer,Smart-Window,SonicBusinessIntegrationSuite,SonicProcessManager,SonicCollaborationServer,SonicContinuousAvailabilityArchitecture,SonicDatabaseService,SonicWork-bench,SonicXMLServer,TheBrainsBehindBAM,WebClient,andWhoMakesProgressaretrademarksorservicemarksofProgressSoftwareCorporationand/oritssubsidiariesoraffiliatesintheU.
S.
andothercountries.
JavaisaregisteredtrademarkofOracleand/oritsaffiliates.
Anyothermarkscontainedhereinmaybetrademarksoftheirrespectiveowners.
ThirdPartyAcknowledgments:ProgressArtixESBforC++v5.
6incorporatesXalanv2.
3.
1technologiesfromtheApacheSoftwareFoundation(http://www.
apache.
org).
SuchApachetechnologiesaresubjecttothefollowingtermsandconditions:TheApacheSoftwareLicense,Version1.
1.
Copyright(C)1999-2002TheApacheSoftwareFoundation.
Allrightsreserved.
Redistributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefol-lowingconditionsaremet:1.
Redistributionsofsourcecodemustretaintheabovecopy-rightnotice,thislistofconditionsandthefollowingdisclaimer.
2.
Redistributionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimerinthedocumentationand/orothermaterialsprovidedwiththedistribution.
3.
Theend-userdocumentationincludedwiththeredistribution,ifany,mustincludethefol-lowingacknowledgment:"ThisproductincludessoftwaredevelopedbytheApacheSoft-wareFoundation(http://www.
apache.
org/).
Alternately,thisacknowledgmentmayappearinthesoftwareitself,ifandwhereversuchthird-partyacknowledgmentsnormallyappear.
4.
Thenames"Ant","Xerces,""Xalan,""Log4J,"and"ApacheSoftwareFoundation"mustnotbeusedto:endorseorpromoteproductsderivedfromthissoftwarewithoutpriorwrittenpermission.
Forwrittenpermission,pleasecontactapache@apache.
org.
5.
Productsderivedfromthissoftwaremaynotbecalled"Apache",normay"Apache"appearintheirname,withoutpriorwrittenpermissionoftheApacheSoftwareFoundation.
THISSOFTWAREISPROVIDED"ASIS"ANDANYEXPRESSEDORIMPLIEDWARRANTIES,INCLUD-ING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABIL-ITYANDFITNESSFORAPARTICULARPURPOSEAREDISCLAIMED.
INNOEVENTSHALLTHEAPACHESOFTWAREFOUNDATIONORITSCONTRIBUTORSBELIABLEFORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PRO-CUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARISINGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
ThissoftwareconsistsofvoluntarycontributionsmadebymanyindividualsonbehalfoftheApacheSoftwareFoundation.
FormoreinformationontheApacheSoftwareFoundation,pleaseseehttp://www.
apache.
org/.
Xalanwasoriginallybasedonsoftwarecopyright(c)1999,LotusDevelopmentCorporation.
,http://www.
lotus.
com.
Xerceswasoriginallybasedonsoftwarecopyright(c)1999,InternationalBusinessMachines,Inc.
,http://www.
ibm.
com.
ProgressArtixESBforC++v5.
6incorporatesXercesC++v2.
4technologyfromtheApacheSoftwareFoundation(http://www.
apache.
org).
SuchApachetechnologyissubjecttothefollowingtermsandconditions:TheApacheSoftwareLicense,Version1.
1-Copy-right(c)1999-2001TheApacheSoftwareFoundation.
Allrightsreserved.
Redistributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefollowingconditionsaremet:1.
Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofcondi-tionsandthefollowingdisclaimer.
2.
Redistributionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimerinthedocumentationand/orothermaterialspro-videdwiththedistribution.
3.
Theend-userdocumentationincludedwiththeredistribution,ifany,mustincludethefollowingacknowledgment:"ThisproductincludessoftwaredevelopedbytheApacheSoft-wareFoundation(http://www.
apache.
org/).
"Alternately,thisacknowledgmentmayappearinthesoftwareitself,ifandwhereversuchthird-partyacknowledgmentsnormallyappear.
4.
Thenames"Xerces"and"ApacheSoftwareFoundation"mustnotbeusedtoendorseorpromoteproductsderivedfromthissoftwarewithoutpriorwrittenpermission.
Forwrittenpermission,pleasecontactapache@apache.
org.
5.
Productsderivedfromthissoftwaremaynotbecalled"Apache",normay"Apache"appearintheirname,withoutpriorwrittenpermissionoftheApacheSoftwareFoundation.
THISSOFTWAREISPROVIDED``ASIS''ANDANYEXPRESSEDORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPARTICULARPURPOSEAREDIS-CLAIMED.
INNOEVENTSHALLTHEAPACHESOFTWAREFOUNDATIONORITSCONTRIBUTORSBELIABLEFORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARIS-INGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
ProgressArtixESBforC++v5.
6incorporatesApacheXercesv2.
5.
0technologyfromtheApacheSoftwareFoundation((http://www.
apache.
org).
SuchApachetechnologyissubjecttothefollowingtermsandconditions:TheApacheSoftwareLicense,Version1.
1-Copy-right(c)1999-2002TheApacheSoftwareFoundation.
Allrightsreserved.
Redistributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefollowingconditionsaremet:1.
Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofcondi-tionsandthefollowingdisclaimer.
2.
Redistributionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofcon-ditionsandthefollowingdisclaimerinthedocumentationand/orothermaterialsprovidedwiththedistribution.
3.
Theend-userdocumentationincludedwiththeredistribution,ifany,mustincludethefol-lowingacknowledgment:"ThisproductincludessoftwaredevelopedbytheApacheSoft-wareFoundation(http://www.
apache.
org/).
"Alternately,thisacknowledgmentmayappearinthesoftwareitself,ifandwhereversuchthird-partyacknowledgmentsnormallyappear.
4.
Thenames"Xerces"and"ApacheSoftwareFoundation"mustnotbeusedtoendorseorpromoteproductsderivedfromthissoftwarewithoutpriorwrittenpermission.
Forwrittenpermission,pleasecontactapache@apache.
org.
5.
Productsderivedfromthissoftwaremaynotbecalled"Apache",normay"Apache"appearintheirname,withoutpriorwrittenpermissionoftheApacheSoftwareFoundation.
THISSOFTWAREISPROVIDED``ASIS''ANDANYEXPRESSEDORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPARTICULARPURPOSEAREDIS-CLAIMED.
INNOEVENTSHALLTHEAPACHESOFTWAREFOUNDATIONORITSCONTRIBUTORSBELIABLEFORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARIS-INGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
ThissoftwareconsistsofvoluntarycontributionsmadebymanyindividualsonbehalfoftheApacheSoftwareFoundationandwasoriginallybasedonsoftwarecopyright(c)1999,InternationalBusinessMachines,Inc.
,http://www.
ibm.
com.
FormoreinformationontheApacheSoftwareFoundation,pleasesee.
ProgressArtixESBforC++v5.
6incorporatesXercesC++v1.
7technologyfromtheApacheSoftwareFoundation(http://www.
apache.
org).
SuchApachetechnologyissubjecttothefollowingtermsandconditions:TheApacheSoftwareLicense,Version1.
1.
-Copy-right(c)1999-2004TheApacheSoftwareFoundation.
Allrightsreserved.
Redistributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefollowingconditionsaremet:1.
Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofcondi-tionsandthefollowingdisclaimer.
2.
Redistributionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofcon-ditionsandthefollowingdisclaimerinthedocumentationand/orothermaterialsprovidedwiththedistribution.
3.
Theend-userdocumentationincludedwiththeredistribution,ifany,mustincludethefol-lowingacknowledgment:"ThisproductincludessoftwaredevelopedbytheApacheSoft-wareFoundation(http://www.
apache.
org/).
"Alternately,thisacknowledgmentmayappearinthesoftwareitself,ifandwhereversuchthird-partyacknowledgmentsnormallyappear.
4.
Thenames"Xalan"and"ApacheSoftwareFoundation"mustnotbeusedtoendorseorpromoteproductsderivedfromthissoftwarewithoutpriorwrittenpermission.
Forwrittenpermission,pleasecontactapache@apache.
org.
5.
Productsderivedfromthissoftwaremaynotbecalled"Apache",normay"Apache"appearintheirname,withoutpriorwrittenpermissionoftheApacheSoftwareFoundation.
THISSOFTWAREISPROVIDED``ASIS''ANDANYEXPRESSEDORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPARTICULARPURPOSEAREDIS-CLAIMED.
INNOEVENTSHALLTHEAPACHESOFTWAREFOUNDATIONORITSCONTRIBUTORSBELIABLEFORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARIS-INGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
ThissoftwareconsistsofvoluntarycontributionsmadebymanyindividualsonbehalfoftheApacheSoftwareFoundationandwasoriginallybasedonsoftwarecopyright(c)1999,LotusDevelopmentCorporation.
,http://www.
lotus.
com.
FormoreinformationontheApacheSoftwareFoundation,pleasesee.
ProgressArtixESBforC++v5.
6incorporatesApacheVelocityv1.
3technologyfromtheApacheSoftwareFoundation(http://www.
apache.
org).
SuchApachetechnologyissubjecttothefollowingtermsandconditions:TheApacheSoftwareLicense,Version1.
1-Copy-right(c)2000-2003TheApacheSoftwareFoundation.
Allrightsreserved.
Redistributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefollowingconditionsaremet:1.
Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofcondi-tionsandthefollowingdisclaimer.
2.
Redistributionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimerinthedocumentationand/orothermaterialspro-videdwiththedistribution.
3.
Theend-userdocumentationincludedwiththeredistribution,ifany,mustincludethefollowingacknowledgement:"ThisproductincludessoftwaredevelopedbytheApacheSoftwareFoundation(http://www.
apache.
org/).
"Alternately,thisacknowledgementmayappearinthesoftwareitself,ifandwhereversuchthird-partyacknowledgementsnormallyappear.
4.
Thenames"TheJakartaProject","Velocity",and"ApacheSoftwareFoundation"mustnotbeusedtoendorseorpromoteproductsderivedfromthissoftwarewithoutpriorwrittenpermission.
Forwrittenpermission,pleasecontactapache@apache.
org.
5.
Productsderivedfromthissoftwaremaynotbecalled"Apache","Velocity"normay"Apache"appearintheirnameswithoutpriorwrittenpermissionoftheApacheGroup.
THISSOFTWAREISPROVIDED``ASIS''ANDANYEXPRESSEDORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPARTICULARPURPOSEAREDIS-CLAIMED.
INNOEVENTSHALLTHEAPACHESOFTWAREFOUNDATIONORITSCONTRIBUTORSBELIABLEFORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARIS-INGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
ProgressArtixESBforC++v5.
6incorporatesLog4Jv1.
2.
6technologyfromtheApacheSoftwareFoundation(http://www.
apache.
org).
SuchApachetechnologyissubjecttothefollowingtermsandconditions:TheApacheSoftwareLicense,Version1.
1-Copyright(C)1999TheApacheSoftwareFoundation.
Allrightsreserved.
Redistributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefol-lowingconditionsaremet:1.
Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofcondi-tionsandthefollowingdisclaimer.
2.
Redistributionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimerinthedocumentationand/orothermaterialspro-videdwiththedistribution.
3.
Theend-userdocumentationincludedwiththeredistribution,ifany,mustincludethefollowingacknowledgment:"ThisproductincludessoftwaredevelopedbytheApacheSoftwareFoundation(http://www.
apache.
org/).
"Alternately,thisacknowledgmentmayappearinthesoftwareitself,ifandwhereversuchthird-partyacknowledgmentsnormallyappear.
4.
Thenames"log4j"and"ApacheSoftwareFoundation"mustnotbeusedtoendorseorpromoteproductsderivedfromthissoftwarewithoutpriorwrittenpermission.
Forwrittenpermission,pleasecontactapache@apache.
org.
5.
Productsderivedfromthissoftwaremaynotbecalled"Apache",normay"Apache"appearintheirname,withoutpriorwrittenpermissionoftheApacheSoftwareFoundation.
THISSOFTWAREISPROVIDED``ASIS''ANDANYEXPRESSEDORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPARTICULARPURPOSEAREDISCLAIMED.
INNOEVENTSHALLTHEAPACHESOFTWAREFOUNDATIONORITSCONTRIBUTORSBELIABLEFORANYDIRECT,INDIRECT,INCIDEN-TAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARISINGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
ThissoftwareconsistsofvoluntarycontributionsmadebymanyindividualsonbehalfoftheApacheSoftwareFoundation.
FormoreinformationontheApacheSoftwareFoundation,pleasesee.
(a)ProgressArtixESBforC++v5.
6incorporatesJDOMBeta9technologyfromJDOM.
Suchtechnologyissubjecttothefollowingtermsandconditions:Copyright(C)2000-2004JasonHunter&BrettMcLaughlin.
Allrightsreserved.
Redistributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefollowingcondi-tionsaremet:1.
Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofconditions,andthefollowingdisclaimer.
2.
Redistributionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofconditions,andthedisclaimerthatfollowstheseconditionsinthedocumentationand/orothermaterialsprovidedwiththedistribution.
3.
Thename"JDOM"mustnotbeusedtoendorseorpromoteproductsderivedfromthissoftwarewithoutpriorwrittenpermission.
Forwrittenpermission,pleasecontact.
4.
Productsderivedfromthissoftwaremaynotbecalled"JDOM",normay"JDOM"appearintheirname,withoutpriorwrittenpermissionfromtheJDOMProjectManagement.
Inaddition,werequest(butdonotrequire)thatyouincludeintheend-userdocumentationprovidedwiththeredistribu-tionand/orinthesoftwareitselfanacknowledgementequivalenttothefollowing:"ThisproductincludessoftwaredevelopedbytheJDOMProject(http://www.
jdom.
org/).
"Alter-natively,theacknowledgmentmaybegraphicalusingthelogosavailableathttp://www.
jdom.
org/images/logos.
THISSOFTWAREISPROVIDEDASISANDANYEXPRESSEDORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPAR-TICULARPURPOSEAREDISCLAIMED.
INNOEVENTSHALLTHEJDOMAUTHORSORTHEPROJECTCONTRIBUTORSBELIABLEFORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIALDAM-AGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTER-RUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLI-GENCEOROTHERWISE)ARISINGINANYWAYOUTOFTHEUSEOFTHISSOFT-WARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
ThissoftwareconsistsofvoluntarycontributionsmadebymanyindividualsonbehalfoftheJDOMProjectandwasoriginallycreatedbyJasonHunterandBrettMcLaughlin.
FormoreinformationontheJDOMProject,pleaseseeProgressArtixESBforC++v5.
6incorporatesIBM-ICUv2.
6andIBM-ICUv2.
6.
1technol-ogiesfromIBM.
Suchtechnologiesaresubjecttothefollowingtermsandconditions:Cop-yright(c)1995-2003InternationalBusinessMachinesCorporationandothersAllrightsreserved.
Permissionisherebygranted,freeofcharge,toanypersonobtainingacopyofthissoftwareandassociateddocumentationfiles(the"Software"),todealintheSoftwarewithoutrestriction,includingwithoutlimitationtherightstouse,copy,modify,merge,pub-lish,distribute,and/orsellcopiesoftheSoftware,andtopermitpersonstowhomtheSoft-wareisfurnishedtodoso,providedthattheabovecopyrightnotice(s)andthispermissionnoticeappearinallcopiesoftheSoftwareandthatboththeabovecopyrightnotice(s)andthispermissionnoticeappearinsupportingdocumentation.
THESOFTWAREISPRO-VIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSORIMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOFMERCHANTABILITY,FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENTOFTHIRDPARTYRIGHTS.
INNOEVENTSHALLTHECOPYRIGHTHOLDERORHOLDERSINCLUDEDINTHISNOTICEBELIABLEFORANYCLAIM,ORANYSPECIALINDIRECTORCONSEQUENTIALDAMAGES,ORANYDAMAGESWHATSOEVERRESULTINGFROMLOSSOFUSE,DATAORPROFITS,WHETHERINANACTIONOFCONTRACT,NEGLIGENCEOROTHERTORTIOUSACTION,ARISINGOUTOFORINCONNECTIONWITHTHEUSEORPERFORMANCEOFTHISSOFTWARE.
Exceptascontainedinthisnotice,thenameofacopyrightholdershallnotbeusedinadver-tisingorotherwisetopromotethesale,useorotherdealingsinthisSoftwarewithoutpriorwrittenauthorizationofthecopyrightholder.
Alltrademarksandregisteredtrademarksmentionedhereinarethepropertyoftheirrespectiveowners.
ProgressArtixESBforC++v5.
6incorporatesJohnWilsonMinMLv1.
7technologyfromJohnWilson.
Suchtechnologyissubjecttothefollowingtermsandconditions:Copyright(c)1999,JohnWilson(tug@wilson.
co.
uk).
Allrightsreserved.
Redistributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefol-lowingconditionsaremet:Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimer.
Redistributionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofconditionsandthefollowingdis-claimerinthedocumentationand/orothermaterialsprovidedwiththedistribution.
Alladvertisingmaterialsmentioningfeaturesoruseofthissoftwaremustdisplaythefollowingacknowledgement:ThisproductincludessoftwaredevelopedbyJohnWilson.
ThenameofJohnWilsonmaynotbeusedtoendorseorpromoteproductsderivedfromthissoftwarewithoutspecificpriorwrittenpermission.
THISSOFTWAREISPROVIDEDBYJOHNWILSON``ASIS''ANDANYEXPRESSORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPARTICULARPURPOSEAREDISCLAIMED.
INNOEVENTSHALLJOHNWILSONBELIABLEFORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARIS-INGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
ProgressArtixESBforC++v5.
6incorporatesSourceForge-NET-SNMPv5.
0.
7technol-ogyfromSourceForgeandNetworksAssociatesTechnology,Inc.
Suchtechnologyissub-jecttothefollowingtermsandconditions:Variouscopyrightsapplytothispackage,listedinvariousseparatepartsbelow.
Pleasemakesurethatyoureadalltheparts.
Upuntil2001,theprojectwasbasedatUCDavis,andthefirstpartcoversallcodewrittenduringthistime.
From2001onwards,theprojecthasbeenbasedatSourceForge,andNetworksAssociatesTechnology,IncholdthecopyrightonbehalfofthewiderNet-SNMPcommunity,coveringallderivativeworkdonesincethen.
AnadditionalcopyrightsectionhasbeenaddedasPart3belowalsounderaBSDlicensefortheworkcontributedbyCambridgeBroadbandLtd.
totheprojectsince2001.
AnadditionalcopyrightsectionhasbeenaddedasPart4belowalsounderaBSDlicensefortheworkcontributedbySunMicrosystems,Inc.
totheprojectsince2003.
Codehasbeencontributedtothisprojectbymanypeopleovertheyearsithasbeenindevelopment,andafulllistofcontributorscanbefoundintheREADMEfileundertheTHANKSsection.
----Part1:CMU/UCDcopyrightnotice:(BSDlike)-----Copyright1989,1991,1992byCarnegieMellonUniversity.
DerivativeWork-1996,1998-2000.
Copyright1996,1998-2000TheRegentsoftheUniversityofCalifornia.
AllRightsReserved.
Permissiontouse,copy,modifyanddistributethissoftwareanditsdocumenta-tionforanypurposeandwithoutfeeisherebygranted,providedthattheabovecopyrightnoticeappearsinallcopiesandthatboththatcopyrightnoticeandthispermissionnoticeappearinsupportingdocumentation,andthatthenameofCMUandTheRegentsoftheUniversityofCalifornianotbeusedinadvertisingorpublicitypertainingtodistributionofthesoftwarewithoutspecificwrittenpermission.
CMUANDTHEREGENTSOFTHEUNIVERSITYOFCALIFORNIADISCLAIMALLWARRANTIESWITHREGARDTOTHISSOFTWARE,INCLUDINGALLIMPLIEDWARRANTIESOFMERCHANTA-BILITYANDFITNESS.
INNOEVENTSHALLCMUORTHEREGENTSOFTHEUNIVERSITYOFCALIFORNIABELIABLEFORANYSPECIAL,INDIRECTORCONSEQUENTIALDAMAGESORANYDAMAGESWHATSOEVERRESULTINGFROMTHELOSSOFUSE,DATAORPROFITS,WHETHERINANACTIONOFCONTRACT,NEGLIGENCEOROTHERTORTIOUSACTION,ARISINGOUTOFORINCONNECTIONWITHTHEUSEORPERFORMANCEOFTHISSOFTWARE.
----Part2:NetworksAssociatesTechnology,Inccopyrightnotice(BSD)-----Copyright(c)2001-2003,NetworksAssociatesTechnology,Inc.
Allrightsreserved.
Redistributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefollowingconditionsaremet:*Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimer.
*Redistributionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofconditionsandthefol-lowingdisclaimerinthedocumentationand/orothermaterialsprovidedwiththedistribu-tion.
*NeitherthenameoftheNetworksAssociatesTechnology,Incnorthenamesofitscontributorsmaybeusedtoendorseorpromoteproductsderivedfromthissoftwarewithoutspecificpriorwrittenpermission.
THISSOFTWAREISPROVIDEDBYTHECOPY-RIGHTHOLDERSANDCONTRIBUTORS``ASIS''ANDANYEXPRESSORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPARTICULARPUR-POSEAREDISCLAIMED.
INNOEVENTSHALLTHECOPYRIGHTHOLDERSORCONTRIBUTORSBELIABLEFORANYDIRECT,INDIRECT,INCIDENTAL,SPE-CIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICTLIA-BILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARISINGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSI-BILITYOFSUCHDAMAGE.
----Part3:CambridgeBroadbandLtd.
copyrightnotice(BSD)-----Portionsofthiscodearecopyright(c)2001-2003,CambridgeBroadbandLtd.
Allrightsreserved.
Redistributionanduseinsourceandbinaryforms,withorwithoutmod-ification,arepermittedprovidedthatthefollowingconditionsaremet:*Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimer.
*Redistributionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimerinthedocumentationand/orothermaterialsprovidedwiththedistribution.
*ThenameofCambridgeBroadbandLtd.
maynotbeusedtoendorseorpromoteproductsderivedfromthissoftwarewithoutspecificpriorwrittenper-mission.
THISSOFTWAREISPROVIDEDBYTHECOPYRIGHTHOLDER``ASIS''ANDANYEXPRESSORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPARTICULARPURPOSEAREDISCLAIMED.
INNOEVENTSHALLTHECOPY-RIGHTHOLDERBELIABLEFORANYDIRECT,INDIRECT,INCIDENTAL,SPE-CIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICTLIA-BILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARISINGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
----Part4:SunMicrosystems,Inc.
copyrightnotice(BSD)-----Copyright2003SunMicrosystems,Inc.
,4150NetworkCircle,SantaClara,California95054,U.
S.
A.
Allrightsreserved.
Useissubjecttolicensetermsbelow.
Thisdistributionmayincludematerialsdevelopedbythirdparties.
Sun,SunMicrosystems,theSunlogoandSolarisaretrademarksorregisteredtrade-marksofSunMicrosystems,Inc.
intheU.
S.
andothercountries.
Redistributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefol-lowingconditionsaremet:*Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimer.
*Redistributionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofconditionsandthefollowingdis-claimerinthedocumentationand/orothermaterialsprovidedwiththedistribution.
*NeitherthenameoftheSunMicrosystems,Inc.
northenamesofitscontributorsmaybeusedtoendorseorpromoteproductsderivedfromthissoftwarewithoutspecificpriorwrittenper-mission.
THISSOFTWAREISPROVIDEDBYTHECOPYRIGHTHOLDERSANDCONTRIBUTORS``ASIS''ANDANYEXPRESSORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMER-CHANTABILITYANDFITNESSFORAPARTICULARPURPOSEAREDIS-CLAIMED.
INNOEVENTSHALLTHECOPYRIGHTHOLDERSORCONTRIBUTORSBELIABLEFORANYDIRECT,INDIRECT,INCIDENTAL,SPE-CIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICTLIA-BILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARISINGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSI-BILITYOFSUCHDAMAGE.
----Part5:Sparta,Inccopyrightnotice(BSD)-----Copy-right(c)2003-2005,Sparta,Inc.
Allrightsreserved.
Redistributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefollowingcondi-tionsaremet:*Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimer.
*Redistributionsinbinaryformmustrepro-ducetheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimerinthedocumentationand/orothermaterialsprovidedwiththedistribution.
*NeitherthenameofSparta,Incnorthenamesofitscontributorsmaybeusedtoendorseorpromoteproductsderivedfromthissoftwarewithoutspecificpriorwrittenpermission.
THISSOFTWAREISPROVIDEDBYTHECOPYRIGHTHOLDERSANDCONTRIBUTORS``ASIS''ANDANYEXPRESSORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPAR-TICULARPURPOSEAREDISCLAIMED.
INNOEVENTSHALLTHECOPYRIGHTHOLDERSORCONTRIBUTORSBELIABLEFORANYDIRECT,INDIRECT,INCI-DENTAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUD-ING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCON-TRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHER-WISE)ARISINGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
----Part6:Cisco/BUPTNICcopyrightnotice(BSD)-----Copyright(c)2004,Cisco,IncandInformationNetworkCenterofBeijingUniversityofPostsandTelecommunications.
Allrightsreserved.
Redis-tributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefollowingconditionsaremet:*Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimer.
*Redistribu-tionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimerinthedocumentationand/orothermaterialsprovidedwiththedis-tribution.
*NeitherthenameofCisco,Inc,BeijingUniversityofPostsandTelecommunica-tions,northenamesoftheircontributorsmaybeusedtoendorseorpromoteproductsderivedfromthissoftwarewithoutspecificpriorwrittenpermission.
THISSOFTWAREISPROVIDEDBYTHECOPYRIGHTHOLDERSANDCONTRIBUTORS``ASIS''ANDANYEXPRESSORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPAR-TICULARPURPOSEAREDISCLAIMED.
INNOEVENTSHALLTHECOPYRIGHTHOLDERSORCONTRIBUTORSBELIABLEFORANYDIRECT,INDIRECT,INCI-DENTAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUD-ING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCON-TRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHER-WISE)ARISINGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
----Part7:FabasoftR&DSoft-wareGmbH&CoKGcopyrightnotice(BSD)-----Copyright(c)FabasoftR&DSoftwareGmbH&CoKG,2003oss@fabasoft.
comAuthor:BernhardPenz.
Redistributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefol-lowingconditionsaremet:*Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimer.
*Redistributionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofconditionsandthefollowingdis-claimerinthedocumentationand/orothermaterialsprovidedwiththedistribution.
*ThenameofFabasoftR&DSoftwareGmbH&CoKGoranyofitssubsidiaries,brandorprod-uctnamesmaynotbeusedtoendorseorpromoteproductsderivedfromthissoftwarewith-outspecificpriorwrittenpermission.
THISSOFTWAREISPROVIDEDBYTHECOPYRIGHTHOLDER``ASIS''ANDANYEXPRESSORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMER-CHANTABILITYANDFITNESSFORAPARTICULARPURPOSEAREDIS-CLAIMED.
INNOEVENTSHALLTHECOPYRIGHTHOLDERBELIABLEFORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,ORCONSE-QUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSI-NESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABIL-ITY,WHETHERINCONTRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARISINGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
ProgressArtixESBforC++v5.
6incorporatesOpenSSL/SSLeayv0.
9.
8itechnologyfromOpenSSL.
org.
SuchTechnologyissubjecttothefollowingtermsandconditions:LICENSEISSUESTheOpenSSLtoolkitstaysunderaduallicense,i.
e.
boththeconditionsoftheOpenSSLLicenseandtheoriginalSSLeaylicenseapplytothetoolkit.
Seebelowfortheactuallicensetexts.
ActuallybothlicensesareBSD-styleOpenSourcelicenses.
IncaseofanylicenseissuesrelatedtoOpenSSLpleasecontactopenssl-core@openssl.
org.
OpenSSLLicense/*====Copyright(c)1998-2008TheOpenSSLProject.
Allrightsreserved.
Redistributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefollowingconditionsaremet:1.
Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofcondi-tionsandthefollowingdisclaimer.
2.
Redistributionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimerinthedocumentationand/orothermaterialspro-videdwiththedistribution.
3.
Alladvertisingmaterialsmentioningfeaturesoruseofthissoftwaremustdisplaythefol-lowingacknowledgment:"ThisproductincludessoftwaredevelopedbytheOpenSSLProjectforuseintheOpenSSLToolkit.
(http://www.
openssl.
org/)"4.
Thenames"OpenSSLToolkit"and"OpenSSLProject"mustnotbeusedtoendorseorpromoteproductsderivedfromthissoftwarewithoutpriorwrittenpermission.
Forwrittenpermission,pleasecontactopenssl-core@openssl.
org.
5.
Productsderivedfromthissoftwaremaynotbecalled"OpenSSL"normay"OpenSSL"appearintheirnameswithoutpriorwrittenpermissionoftheOpenSSLProject.
6.
Redistributionsofanyformwhatsoevermustretainthefollowingacknowledgment:"ThisproductincludessoftwaredevelopedbytheOpenSSLProjectforuseintheOpenSSLToolkit(http://www.
openssl.
org/)"THISSOFTWAREISPROVIDEDBYTHEOpenSSLPROJECT``ASIS''ANDANYEXPRESSEDORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPAR-TICULARPURPOSEAREDISCLAIMED.
INNOEVENTSHALLTHEOpenSSLPROJECTORITSCONTRIBUTORSBELIABLEFORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCON-TRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHER-WISE)ARISINGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
====ThisproductincludescryptographicsoftwarewrittenbyEricYoung(eay@cryptsoft.
com).
ThisproductincludessoftwarewrittenbyTimHudson(tjh@cryptsoft.
com).
OriginalSSLeayLicenseCopyright(C)1995-1998EricYoung(eay@cryptsoft.
com)Allrightsreserved.
ThispackageisanSSLimplementationwrittenbyEricYoung(eay@cryptsoft.
com).
TheimplementationwaswrittensoastoconformwithNetscapesSSL.
Thislibraryisfreeforcommercialandnon-commercialuseaslongasthefollowingconditionsareahearedto.
Thefollowingconditionsapplytoallcodefoundinthisdistribution,beittheRC4,RSA,lhash,DES,etc.
,code;notjusttheSSLcode.
TheSSLdocumentationincludedwiththisdistributioniscoveredbythesamecopyrighttermsexceptthattheholderisTimHudson(tjh@cryptsoft.
com).
CopyrightremainsEricYoung's,andassuchanyCopyrightnoticesinthecodearenottoberemoved.
Ifthispackageisusedinaproduct,EricYoungshouldbegivenattributionastheauthorofthepartsofthelibraryused.
Thiscanbeintheformofatextualmessageatprogramstartuporindocumentation(onlineortextual)providedwiththepackage.
Redistributionanduseinsourceandbinaryforms,withorwithoutmodifica-tion,arepermittedprovidedthatthefollowingconditionsaremet:1.
Redistributionsofsourcecodemustretainthecopyrightnotice,thislistofconditionsandthefollowingdisclaimer.
2.
Redistributionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofcon-ditionsandthefollowingdisclaimerinthedocumentationand/orothermaterialsprovidedwiththedistribution.
3.
Alladvertisingmaterialsmentioningfeaturesoruseofthissoftwaremustdisplaythefol-lowingacknowledgement:"ThisproductincludescryptographicsoftwarewrittenbyEricYoung(eay@cryptsoft.
com)"Theword'cryptographic'canbeleftoutiftherouinesfromthelibrarybeingusedarenotcryptographicrelated:-).
4.
IfyouincludeanyWindowsspecificcode(oraderivativethereof)fromtheappsdirec-tory(applicationcode)youmustincludeanacknowledgement:"Thisproductincludessoft-warewrittenbyTimHudson(tjh@cryptsoft.
com)"THISSOFTWAREISPROVIDEDBYERICYOUNG``ASIS''ANDANYEXPRESSORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPARTICULARPUR-POSEAREDISCLAIMED.
INNOEVENTSHALLTHEAUTHORORCONTRIBU-TORSBELIABLEFORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARISINGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
Thelicenceanddistributiontermsforanypublicallyavailablever-sionorderivativeofthiscodecannotbechanged.
i.
e.
thiscodecannotsimplybecopiedandputunderanotherdistributionlicence[includingtheGNUPublicLicence.
]ProgressArtixESBforC++v5.
6incorporatesBouncycastlev1.
3.
3cryptographictechnol-ogyfromtheLegionOfTheBouncyCastle(http://www.
bouncycastle.
org).
SuchBouncy-castle1.
3.
3cryptographictechnologyissubjecttothefollowingtermsandconditions:Copyright(c)2000-2006TheLegionOfTheBouncyCastle(http://www.
bouncycas-tle.
org).
Permissionisherebygranted,freeofcharge,toanypersonobtainingacopyofthissoftwareandassociateddocumentationfiles(the"Software"),todealintheSoftwarewith-outrestriction,includingwithoutlimitationtherightstouse,copy,modify,merge,publish,distribute,sublicense,and/orsellcopiesoftheSoftware,andtopermitpersonstowhomtheSoftwareisfurnishedtodoso,subjecttothefollowingconditions:TheabovecopyrightnoticeandthispermissionnoticeshallbeincludedinallcopiesorsubstantialportionsoftheSoftware.
THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND,EXPRESSORIMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRAN-TIESOFMERCHANTABILITY,FITNESSFORAPARTICULARPURPOSEANDNONINFRINGEMENT.
INNOEVENTSHALLTHEAUTHORSORCOPYRIGHTHOLDERSBELIABLEFORANYCLAIM,DAMAGESOROTHERLIABILITY,WHETHERINANACTIONOFCONTRACT,TORTOROTHERWISE,ARISINGFROM,OUTOFORINCONNECTIONWITHTHESOFTWAREORTHEUSEOROTHERDEALINGSINTHESOFTWARE.
ProgressArtixESBforC++v5.
6incorporatesPCRE7.
8fromPCREforthepurposeofprovidingasetoffunctionsthatimplementregularexpressionpatternmatchingusingthesamesyntaxandsemanticsasPerl5.
Suchtechnologyissubjecttothefollowingtermsandconditions:PCRELICENCE.
PCREisalibraryoffunctionstosupportregularexpressionswhosesyntaxandsemanticsareascloseaspossibletothoseofthePerl5language.
Release7ofPCREisdistributedunderthetermsofthe"BSD"licence,asspecifiedbelow.
Thedoc-umentationforPCRE,suppliedinthe"doc"directory,isdistributedunderthesametermsasthesoftwareitself.
ThebasiclibraryfunctionsarewritteninCandarefreestanding.
AlsoincludedinthedistributionisasetofC++wrapperfunctions.
THEBASICLIBRARYFUNCTIONS.
Writtenby:PhilipHazel.
Emaillocalpart:ph10.
Emaildomain:cam.
ac.
uk.
UniversityofCambridgeComputingService,Cambridge,England.
Copyright(c)1997-2008UniversityofCambridgeAllrightsreserved.
THEC++WRAPPERFUNC-TIONS.
Contributedby:GoogleInc.
Copyright(c)2007-2008,GoogleInc.
Allrightsreserved.
THE"BSD"LICENCE.
Redistributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefollowingconditionsaremet:*Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimer.
*Redistributionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimerinthedocumentationand/orothermaterialsprovidedwiththedistribution.
*NeitherthenameoftheUniversityofCambridgenorthenameofGoogleInc.
northenamesoftheircontributorsmaybeusedtoendorseorpromoteproductsderivedfromthissoftwarewithoutspecificpriorwrittenpermission.
THISSOFTWAREISPROVIDEDBYTHECOPYRIGHTHOLDERSANDCONTRIBUTORS"ASIS"ANDANYEXPRESSORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMER-CHANTABILITYANDFITNESSFORAPARTICULARPURPOSEAREDIS-CLAIMED.
INNOEVENTSHALLTHECOPYRIGHTOWNERORCONTRIBUTORSBELIABLEFORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PRO-CUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARISINGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
ProgressArtixESBforC++v5.
6incorporatesmcppv2.
6.
4fromKiyoshiMatsui.
Suchtechnologyissubjecttothefollowingtermsandconditions:Copyright(c)1998,2002-2007KiyoshiMatsuikmatsui@t3.
rim.
or.
jpAllrightsreserved.
Thissoftwareincludingthefilesinthisdirectoryisprovidedunderthefollowinglicense.
Redistributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefollowingconditionsaremet:1.
Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofcondi-tionsandthefollowingdisclaimer.
2.
Redistributionsinbinaryformmustreproducetheabovecopyrightnotice,thislistofcon-ditionsandthefollowingdisclaimerinthedocumentationand/orothermaterialsprovidedwiththedistribution.
THISSOFTWAREISPROVIDEDBYTHEAUTHOR``ASIS''ANDANYEXPRESSORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPARTICULARPUR-POSEAREDISCLAIMED.
INNOEVENTSHALLTHEAUTHORBELIABLEFORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,ORCONSE-QUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSI-NESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABIL-ITY,WHETHERINCONTRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARISINGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.
ProgressArtixESBforC++v5.
6containsIBMLicensedMaterialsCopyrightIBMCorpo-ration2010(IBM32-bitRuntimeEnvironmentforAIX,JavaTechnologyEditionv1.
6.
0SR9FP2).
Updated:December5,201117ContentsListofTables21ListofFigures23Preface25WhatisCoveredinthisBook25WhoShouldReadthisBook25HowtoUsethisBook26TheArtixDocumentationLibrary27PartIConfiguringArtixChapter1GettingStarted31SettingyourArtixEnvironment32ArtixEnvironmentVariables34CustomizingyourEnvironmentScript38Chapter2ArtixConfiguration41ArtixConfigurationConcepts42ConfigurationDataTypes46ArtixConfigurationDomainFiles47Command-LineConfiguration51Chapter3ArtixLogging53ConfiguringLoggingFilters54ConfiguringLogStreamPlugins58LoggingforSubsystemsandServices63DynamicArtixLogging72ConfiguringMessageSnoop76ConfiguringSNMPLogging78CONTENTS18Chapter4EnterprisePerformanceLogging85EnterpriseManagementIntegration86ConfiguringPerformanceLogging87PerformanceLoggingMessageFormats91RemotePerformanceLogging94ConfiguringRemotePerformanceLogging97Chapter5UsingArtixwithInternationalCodesets103IntroductiontoInternationalCodesets104WorkingwithCodesetsusingSOAP107WorkingwithCodesetsusingCORBA108WorkingwithCodesetsusingFixedLengthRecords111WorkingwithCodesetsusingMessageInterceptors114RoutingwithInternationalCodesets123PartIIDeployingArtixServicesChapter6DeployingServicesinanArtixContainer129IntroductiontotheArtixContainer130GeneratingaPlug-inandDeploymentDescriptor135RunninganArtixContainerServer139RunninganArtixContainerAdministrationClient143DeployingServicesonRestart148RunninganArtixContainerasaWindowsService152DebuggingPlug-insDeployedinaContainer157Chapter7DeployinganArtixTransformer159TheArtixTransformer160StandaloneDeployment164DeploymentasPartofaChain167OptionalConfiguration170Chapter8DeployingaServiceChain173TheArtixChainBuilder174ConfiguringtheArtixChainBuilder176CONTENTS19Chapter9DeployingHighAvailability181Introduction182SettingupaPersistentDatabase185ConfiguringPersistentServicesforHighAvailability186ConfiguringLocatorHighAvailability190ConfiguringClient-SideHighAvailability193Chapter10DeployingWS-ReliableMessaging201Introduction202EnablingWS-RM205ConfiguringWS-RMAttributes207ConfiguringWS-RMThreading215ConfiguringWS-RMPersistence217PartIIIAccessingArtixServicesChapter11ConfiguringWS-Addressing221Introduction222ConfiguringaWS-AMessageExchangePattern225Chapter12PublishingWSDLContracts229ArtixWSDLPublishingService230ConfiguringtheWSDLPublishingService232QueryingtheWSDLPublishingService236Chapter13AccessingContractsandReferences241Introduction242EnablingServerandClientApplications244AccessingWSDLContracts246AccessingEndpointReferences252AccessingArtixServices258Chapter14AccessingServiceswithUDDI261IntroductiontoUDDI262ConfiguringUDDIProxy264CONTENTS20ConfiguringajUDDIRepository265Chapter15EmbeddingArtixinaBEATuxedoContainer267EmbeddinganArtixProcessinaTuxedoContainer268Index27121ListofTablesTable1:Optionstoartix_envScript33Table2:ArtixEnvironmentVariables35Table3:ArtixLoggingSeverityLevels56Table4:ArtixLoggingSubsystems63Table5:ARTCoreLoggingSubsystems67Table6:PerformanceLoggingPlug-in87Table7:Artixlogmessagearguments91Table8:Orbixlogmessagearguments92Table9:Simplelifecyclemessageformatsarguments93Table10:IANACharsetNames105Table11:ConfigurationVariablesforCORBANativeCodeset108Table12:ConfigurationVariablesforCORBAConversionCodesets109Table13:RequiredArgumentstowsdd137Table14:OptionalArgumentstowsdd137Table15:ArtixEndpointConfiguration164Table16:ArtixServiceConfiguration177Table17:ConfigurationforHostingtheArtixChainBuilder179LISTOFTABLES2223ListofFiguresFigure1:RemoteLoggingFramework95Figure2:RoutingInternationalizedRequests124Figure3:ArtixContainerArchitecture131Figure4:InstalledWindowsService155Figure5:ServiceProperties156Figure6:ProjectSettingsinVisualC++157Figure7:VisualC++DebugException158Figure8:ArtixTransformerDeployedasaServant161Figure9:ArtixTransformerLoadedbyaClient162Figure10:ArtixTransformerDeployedwiththeChainBuilder163Figure11:ChainingFourServerstoFormaSingleService174Figure12:ArtixMasterSlaveReplication182Figure13:WebServicesReliableMessaging202Figure14:CreatingReferenceswiththeWSDLPublishingService231LISTOFFIGURES2425PrefaceWhatisCoveredinthisBookConfiguringandDeployingArtixSolutions,C++RuntimeexplainshowtoconfigureanddeployandArtixservicesinaC++environment.
ThisbookprovidesdetaileddescriptionsofthespecifictasksinvolvedinconfiguringandlaunchingArtixapplicationsandservices.
FordetailsofusingArtixinapureJavaenvironment,seeConfiguringandDeployingArtixSolutions,JavaRuntime.
ThisbookappliestosystemsthatusetheArtixJavaAPIforXML-BasedWebServices(JAX-WS).
ThisbookdoesnotdiscussthespecificsofthedifferentmiddlewareandmessagingproductsthatArtixinteractswith.
AnydiscussionaboutthefeaturesofspecificmiddlewareproductsortransportsrelatestohowArtixinteractswiththesefeatures.
Itisassumedthatyouhaveaworkingknowledgeofthespecificmiddlewareproductsandtransportsyouareusing.
WhoShouldReadthisBookThemainaudienceofConfiguringandDeployingArtixSolutions,C++RuntimeisArtixsystemadministrators.
However,anyoneinvolvedindesigningalargescaleArtixsolutionwillfindthisbookuseful.
Knowledgeofspecificmiddlewareormessagingtransportsisnotrequiredtounderstandthegeneraltopicsdiscussedinthisbook.
However,ifyouareusingthisbookasaguidetodeployingruntimesystems,youshouldhaveaworkingknowledgeofthemiddlewaretransportsthatyouintendtouseinyourArtixsolutions.
PREFACE26HowtoUsethisBookPartI,ConfiguringArtixThispartincludesthefollowing:Chapter1describeshowtosetanArtixsystemenvironmentusingtheartix_envscript.
Chapter2describesArtixconfigurationconceptssuchasconfigurationscopes,namespaces,andvariables.
Italsoexplainshowtouseconfigurationfilesandcommandstodeployyourapplications.
Chapter3explainshowtoconfigureArtixlogging.
ItalsoexplainsArtixsupportforJavalog4jandSNMP(SimpleNetworkManagementProtocol).
Chapter4explainshowtoconfigureintegrationwiththird-partyEnterpriseManagementSystems(EMS),suchasIBMTivoliandBMCPatrol.
Chapter5explainshowtoconfigureArtixsupportforinternationalization.
PartII,DeployingArtixServicesIfyouaredeployingArtixservices,youmaywanttoreadoneormoreofthefollowing:Chapter6explainshowtousetheArtixcontainertodeployandmanageArtixWebservices.
Chapter7explainshowtodeploytheArtixtransformerservice.
Chapter8explainshowtodeployanArtixservicechain.
Chapter9explainshowtodeployArtixhighavailability(forexample,server-sidereplicationandclient-sidefailover).
Chapter10explainshowtodeployWS-ReliableMessaginginArtix.
Note:WhendeployingArtixinadistributedarchitecturewithothermiddleware,pleaseseethedocumentationforthatmiddlewareproduct.
Youmayrequireaccesstoanadministrator.
Forexample,aTuxedoadministratorisrequiredtocompleteaTuxedodistributedarchitecture.
PREFACE27PartIII,AccessingArtixServicesThispartdescribesseveraldifferentwaystoaccessArtixservices:Chapter11explainshowtoconfigureWS-AddressingMessageExchangePatternsinArtix.
Chapter12explainshowtousetheArtixWSDLPublishingservicetotopublishWSDLcontracts.
Chapter13explainshowtouseArtixconfigurationtoaccessArtixWSDLcontractsandendpointreferences.
Chapter14explainshowtouseUniversalDescription,DiscoveryandIntegration(UDDI)withArtix.
Chapter15describeshowtodeployArtixintoaBEATuxedoenvironment.
TheArtixDocumentationLibraryForinformationontheorganizationoftheArtixlibrary,thedocumentconventionsused,andwheretofindadditionalresources,seeUsingtheArtixLibrary.
PREFACE2829PartIConfiguringArtixInthispartThispartcontainsthefollowingchapters:GettingStartedpage31ArtixConfigurationpage41ArtixLoggingpage53EnterprisePerformanceLoggingpage85UsingArtixwithInternationalCodesetspage1033031CHAPTER1GettingStartedThischapterexplainshowtosetupanArtixC++runtimeenvironment.
InthischapterThischapterdiscussesthefollowingtopics:SettingyourArtixEnvironmentpage32ArtixEnvironmentVariablespage34CustomizingyourEnvironmentScriptpage38CHAPTER1|GettingStarted32SettingyourArtixEnvironmentOverviewTousetheArtixtoolsandruntimeenvironment,thehostcomputermusthaveseveralArtix-specificenvironmentvariablesset.
Thesevariablescanbeconfiguredduringinstallation,orlaterusingtheartix_envscript,orconfiguredmanually.
Thissectionshowshowtoruntheartix_envscriptandexplainstheavailableoptions.
Runningtheartix_envscriptTheArtixinstallationprocesscreatesascriptnamedartix_env,whichcapturestheinformationrequiredtosetyourhost'senvironmentvariables.
RunningthisscriptconfiguresyoursystemtouseArtix.
Thescriptislocatedinthefollowingdirectory:IT_PRODUCT_DIR\binSettingyourArtixEnvironment33Command-lineargumentsTheartix_envscripttakesthefollowingoptionalarguments:Table1:Optionstoartix_envScriptOptionDescription-compilerSpecifiestheC++compilerversionforyouroperatingsystem.
-preservePreservesthesettingsofanyenvironmentvariablesthathavealreadybeenset.
Whenthisargumentisspecified,artix_envdoesnotoverwritethevaluesofvariablesthatarealreadyset.
Thisoptionappliestothefollowingenvironmentvariables:IT_PRODUCT_DIRIT_LICENSE_FILEIT_CONFIG_DIRIT_CONFIG_DOMAINS_DIRIT_DOMAIN_NAMEIT_ART_ADMIN_PATHIT_IDL_CONFIG_FILECLASSPATHPATHLIBPATH(AIX)LD_LIBRARY_PATH(Solaris,Linux)LD_PRELOAD(Linux)SHLIB_PATH(HP-UX)Formoredetailedinformation,see"ArtixEnvironmentVariables"onpage34.
Note:Beforeusingthe-preserveoption,alwaysensurethattheexistingenvironmentvariablevaluesaresetcorrectly.
-verboseartix_envoutputsanaudittrailofallitsactionstostdout.
CHAPTER1|GettingStarted34ArtixEnvironmentVariablesOverviewThissectiondescribesthefollowingenvironmentvariablesinmoredetail:JAVA_HOMEIT_PRODUCT_DIRIT_LICENSE_FILEIT_CONFIG_DIRIT_CONFIG_DOMAINS_DIRIT_DOMAIN_NAMEIT_IDL_CONFIG_FILEIT_WSDLGEN_CONFIG_FILEIT_ART_ADMIN_PATHPATHTheenvironmentvariablesareexplainedinTable2:Note:Youdonothavetomanuallysetyourenvironmentvariables.
Youcanconfigurethemduringinstallation,orsetthemlaterbyrunningtheprovidedartix_envscript.
ArtixEnvironmentVariables35Table2:ArtixEnvironmentVariablesVariableDescriptionJAVA_HOMEThedirectorypathtoyoursystem'sJDKisspecifiedwiththesystemenvironmentvariableJAVA_HOME.
ThisdefaultstotheJVMinstalledwithArtix(IT_PRODUCT_DIR\jre).
TheArtixinstalleralsoenablesyoutospecifyapreviouslyinstalledJVM.
IT_PRODUCT_DIRIT_PRODUCT_DIRpointstothetoplevelofyourproductinstallation.
Forexample,onWindows,ifyouinstallArtixintotheC:\Artixdirectory,IT_PRODUCT_DIRshouldbesettothatdirectory.
Note:IfyouhaveotherIONAproductsinstalledandyouchoosenottoinstallthemintothesamedirectorytree,youmustresetIT_PRODUCT_DIReachtimeyouswitchIONAproducts.
Youcanoverridethisvariableusingthe-BUSproduct_dircommand-lineparameterwhenrunningArtixapplications.
IT_LICENSE_FILEIT_LICENSE_FILEspecifiesthelocationofyourArtixlicensefile.
ThedefaultvalueisIT_PRODUCT_DIR\etc\licenses.
txt.
Youcanoverridethisvariableusingthe-BUSlicense_filecommand-lineparameterwhenrunningArtixapplications.
IT_CONFIG_DIRIT_CONFIG_DIRspecifiestherootconfigurationdirectory.
ThedefaultrootconfigurationdirectoryonUNIXis/etc/opt/iona,andIT_PRODUCT_DIR\etconWindows.
Youcanoverridethisvariableusingthe-BUSconfig_dircommand-lineparameterwhenrunningArtixapplications.
IT_CONFIG_DOMAINS_DIRIT_CONFIG_DOMAINS_DIRspecifiesthedirectorywhereArtixsearchesforitsconfigurationfiles.
Theconfigurationdomain'sdirectorydefaultstoIT_CONFIG_DIR\domains.
Youcanoverrideitusingthe-BUSconfig_domains_dircommand-lineparameterwhenrunningArtixapplications.
CHAPTER1|GettingStarted36IT_DOMAIN_NAMEIT_DOMAIN_NAMEspecifiesthenameoftheconfigurationdomainusedbyArtixtolocateitsC++configuration.
Thisvariablealsospecifiesthenameofthefileinwhichtheconfigurationisstored.
Forexample,theartixdomainisstoredinIT_CONFIG_DIR\domains\artix.
cfg.
Youcanoverridethisvariablewiththe-BUSdomain_namecommand-lineparameterwhenrunningArtixapplications.
IT_IDL_CONFIG_FILEIT_IDL_CONFIG_FILEspecifiestheconfigurationusedbytheArtixIDLcompiler.
Ifthisvariableisnotset,youwillbeunabletoruntheIDLtoWSDLtoolsprovidedwithArtix.
ThisvariableisrequiredforanArtixdevelopmentinstallation.
Thedefaultlocationis:IT_PRODUCT_DIR\etc\idl.
cfgNote:DonotmodifythedefaultIDLconfigurationfile.
IT_WSDLGEN_CONFIG_FILEIT_WSDLGEN_CONFIG_FILEspecifiesthelocationoftheWSDLGenconfigurationfile.
WSDLGenisatoolusedtogenerateC++codefromWSDL.
ThedefaultlocationoftheWSDLGenconfigurationfileis:IT_PRODUCT_DIR\tools\etc\wsdlgen.
cfgThisfileisusedtospecifythelocationoftemplatesusedforC++codegeneration.
IT_ART_ADMIN_PATHIT_ART_ADMIN_PATHspecifiesthelocationofaninternalconfigurationscriptusedbyadministrationtools.
DefaultstoIT_CONFIG_DIR\admin.
Table2:ArtixEnvironmentVariablesVariableDescriptionArtixEnvironmentVariables37PATHTheArtixbindirectoriesareprependedonthePATHtoensurethattheproperlibraries,configurationfiles,andutilityprograms(forexample,theIDLcompiler)areused.
ThesesettingsavoidproblemsthatmightotherwiseoccurifOrbixand/orTuxedo(bothincludeIDLcompilersandCORBAclasslibraries)areinstalledonthesamehostcomputer.
ThedefaultArtixbindirectoryis:UNIX$IT_PRODUCT_DIR/binWindows%IT_PRODUCT_DIR%\binTable2:ArtixEnvironmentVariablesVariableDescriptionCHAPTER1|GettingStarted38CustomizingyourEnvironmentScriptOverviewTheartix_envscriptsetstheArtixenvironmentvariablesusingvaluesobtainedfromtheArtixinstallerandfromthescript'scommand-lineoptions.
Thescriptcheckseachoneofthesesettingsinsequence,andupdatesthem,whereappropriate.
Theartix_envscriptisdesignedtosuitmostneeds.
However,ifyouwanttocustomizeitforyourownpurposes,pleasenotethefollowingpointsinthissection.
BeforeyoubeginYoucanonlyruntheartix_envscriptonceinanyconsolesession.
Ifyourunthisscriptasecondtime,itexitswithoutcompleting.
Thispreventsyourenvironmentfrombecomingbloatedwithduplicateinformation(forexample,onyourPATHandCLASSPATH).
Inaddition,ifyouintroduceanyerrorswhencustomizingtheartix_envscript,italsoexitswithoutcompleting.
ThisfeatureiscontrolledbytheIT_ARTIXENVvariable,whichislocaltotheartix_envscript.
IT_ARTIXENVissettotruethefirsttimeyourunthescriptinaconsole;thiscausesthescripttoexitwhenrunagain.
EnvironmentvariablesThefollowingappliestotheenvironmentvariablessetbytheartix_envscript:TheJAVA_HOMEenvironmentvariabledefaultstothevalueobtainedfromtheArtixinstaller.
Ifyoudonotmanuallysetthisvariablebeforerunningartix_env,ittakesitsvaluefromtheinstaller.
ThedefaultlocationfortheJREsuppliedwithArtixisIT_PRODUCT_DIR\jre.
CustomizingyourEnvironmentScript39ThefollowingenvironmentvariablesareallsetwithdefaultvaluesrelativetoIT_PRODUCT_DIR:JAVA_HOMEIT_CONFIG_FILEIT_IDL_CONFIG_FILEIT_CONFIG_DIRIT_CONFIG_DOMAINS_DIRIT_LICENSE_FILEIT_ART_ADMIN_PATHIfyoudonotsetthesevariablesmanually,artix_envsetsthemwithdefaultvaluesbasedonIT_PRODUCT_DIR.
Forexample,thedefaultforIT_CONFIG_DIRonWindowsisIT_PRODUCT_DIR\etc.
TheIT_IDL_CONFIG_FILEenvironmentvariableisarequiredonlyforanArtixDevelopmentinstallation.
AllotherenvironmentvariablesarerequiredforbothDevelopmentandRuntimeinstallations.
Beforeartix_envsetseachenvironmentvariable,itchecksifthe-preservecommand-lineoptionwassuppliedwhenthescriptwasrun.
Thisensuresthatyourpresetvaluesarenotoverwritten.
Beforeusingthe-preserveoption,alwayschecktheexistingvaluesforthesevariablesaresetcorrectly.
CHAPTER1|GettingStarted4041CHAPTER2ArtixConfigurationThischapterintroducesthemainconceptsandcomponentsintheArtixC++runtimeconfiguration(forexample,configurationdomains,scopes,variables,anddatatypes).
ItalsoexplainshowtouseArtixconfigurationfilesandcommandstomanageyourapplications.
InthischapterThischapterincludesthefollowingsections:ArtixConfigurationConceptspage42ConfigurationDataTypespage46ArtixConfigurationDomainFilespage47Command-LineConfigurationpage51CHAPTER2|ArtixConfiguration42ArtixConfigurationConceptsOverviewTheArtixC++runtimeisbuiltuponIONA'sAdaptiveRuntimearchitecture(ART).
Runtimebehaviorisestablishedthroughcommonandapplication-specificconfigurationsettingsthatareappliedduringapplicationstartup.
Asaresult,thesameapplicationcodecanberun,andcanexhibitdifferentcapabilities,indifferentconfigurationenvironments.
Thissectionincludesthefollowing:Configurationdomains.
Configurationscopes.
Specifyingconfigurationscopes.
Configurationnamespaces.
Configurationvariables.
ConfigurationdomainsAnArtixconfigurationdomainisacollectionofconfigurationinformationinanArtixC++runtimeenvironment.
Thisinformationconsistsofconfigurationvariablesandtheirvalues.
AdefaultArtixconfigurationisprovidedwhenArtixisinstalled.
ThedefaultArtixconfigurationdomainfilehasthefollowinglocation:ThecontentsofthisfilecanbemodifiedtoaffectaspectsofArtixbehavior(forexample,loggingorrouting).
ConfigurationscopesAnArtixconfigurationdomainissubdividedintoconfigurationscopes.
Thesearetypicallyorganizedintoahierarchyofscopes,whosefully-qualifiednamesmapdirectlytobusnames.
Byorganizingconfigurationvariablesintovariousscopes,youcanprovidedifferentsettingsforindividualservices,orcommonsettingsforgroupsofservices.
Windows%IT_PRODUCT_DIR%\etc\domains\artix.
cfgUNIX$IT_PRODUCT_DIR/etc/domains/artix.
cfgArtixConfigurationConcepts43LocalconfigurationscopesConfigurationscopesapplytoasubsetofservicesortoaspecificserviceinanenvironment.
Forexample,theArtixdemoconfigurationscopeincludesexamplelocalconfigurationscopesfordemoapplications.
Application-specificconfigurationvariableseitheroverridedefaultvaluesassignedtocommonconfigurationvariables,orestablishnewconfigurationvariables.
Configurationscopesarelocalizedthroughanametaganddelimitedbyasetofcurlybracesterminatedwithasemicolon,forexample,scopeNameTag{…};Aconfigurationscopemayincludenestedconfigurationscopes.
Configurationvariablessetwithinnestedconfigurationscopestakeprecedenceovervaluessetinenclosingconfigurationscopes.
Intheartix.
cfgfile,thereareseveralpredefinedconfigurationscopes.
Forexample,thedemoconfigurationscopeincludesnestedconfigurationscopesforsomeofthedemoprogramsincludedwiththeproduct.
Example1:DemoConfigurationScopedemo{fml_plugin{orb_plugins=["local_log_stream","iiop_profile","giop","iiop","soap","http","G2","tunnel","mq","ws_orb","fml"];};telco{orb_plugins=["local_log_stream","iiop_profile","giop","iiop","G2","tunnel"];plugins:tunnel:iiop:port="55002";poa:MyTunnel:direct_persistent="true";poa:MyTunnel:well_known_address="plugins:tunnel";server{orb_plugins=["local_log_stream","iiop_profile","giop","iiop","ots","soap","http","G2:,"tunnel"];plugins:tunnel:poa_name="MyTunnel";};};CHAPTER2|ArtixConfiguration44SpecifyingconfigurationscopesTomakeanArtixprocessrununderaparticularconfigurationscope,youspecifythatscopeusingthe-BUSnameparameter.
Configurationscopenamesarespecifiedusingthefollowingformatscope.
subscopeForexample,thescopeforthetelcoserverdemoshowninExample1isspecifiedasdemo.
telco.
server.
Duringprocessinitialization,Artixsearchesforaconfigurationscopewiththesamenameasthe-BUSnameparameter.
Therearetwowaysofsupplyingthe-BUSnameparametertoanArtixprocess:Passtheargumentonthecommandline.
Specifythe-BUSnameasthethirdparametertoIT_Bus::init().
Forexample,tostartanArtixprocessusingtheconfigurationspecifiedinthedemo.
tibrvscope,youcanstarttheprocessusingthefollowingsyntax:Alternately,youcanusethefollowingcodetoinitializetheArtixbus:tibrv{orb_plugins=["local_log_stream","iiop_profile","giop","iiop","soap","http","tibrv"];event_log:filters=["*=FATAL+ERROR"];};};Note:Theorb_pluginslistisredefinedwithineachconfigurationscope.
Example1:DemoConfigurationScopeprocessName[applicationparameters]-BUSnamedemo.
tibrvIT_Bus::init(argc,argv,"demo.
tibrv");ArtixConfigurationConcepts45Ifacorrespondingscopeisnotlocated,theprocessstartsunderthehighestlevelscopethatmatchesthespecifiedscopename.
Iftherearenoscopesthatcorrespondtothe-BUSnameparameter,theArtixprocessrunsunderthedefaultglobalscope.
Forexample,ifthenestedtibrvscopedoesnotexist,theArtixprocessusestheconfigurationspecifiedinthedemoscope;ifthedemoscopedoesnotexist,theprocessrunsunderthedefaultglobalscope.
ConfigurationnamespacesMostconfigurationvariablesareorganizedwithinnamespaces,whichgrouprelatedvariables.
Namespacescanbenested,andaredelimitedbycolons(:).
Forexample,configurationvariablesthatcontrolthebehaviorofaplug-inbeginwithplugins:followedbythenameoftheplug-inforwhichthevariableisbeingset.
Forexample,tospecifytheportonwhichtheArtixstandaloneservicestarts,setthefollowingvariable:Tosetthelocationoftheroutingplug-in'scontract,setthefollowingvariable:ConfigurationvariablesConfigurationdataisstoredinvariablesthataredefinedwithineachnamespace.
Insomeinstances,variablesindifferentnamespacessharethesamevariablenames.
Variablescanalsoberesetseveraltimeswithinsuccessivelayersofaconfigurationscope.
Configurationvariablessetinnarrowerconfigurationscopesoverridevariablesettingsinwiderscopes.
Forexample,acompany.
operations.
orb_pluginsvariablewouldoverrideacompany.
orb_pluginsvariable.
Plug-insspecifiedatthecompanyscopewouldapplytoallprocessesinthatscope,exceptthoseprocessesthatbelongspecificallytothecompany.
operationsscopeanditschildscopes.
FurtherinformationFordetailedinformationonArtixconfigurationnamespacesandvariables,seetheArtixConfigurationReference.
plugins:artix_service:iiop:portplugins:routing:wsdl_urlCHAPTER2|ArtixConfiguration46ConfigurationDataTypesOverviewEachArtixconfigurationvariablehasanassociateddatatypethatdeterminesthevariable'svalue.
Datatypescanbecategorizedasfollows:PrimitivetypesConstructedtypesPrimitivetypesArtixsupportsthefollowingthreeprimitivetypes:booleandoublelongConstructedtypesArtixsupportstwoconstructedtypes:stringandConfigList(asequenceofstrings).
InanArtixconfigurationdomainfile(.
cfg),thestringcharactersetisASCII.
TheConfigListtypeissimplyasequenceofstringtypes.
Forexample:orb_plugins=["local_log_stream","iiop_profile","giop","iiop"];ArtixConfigurationDomainFiles47ArtixConfigurationDomainFilesOverviewThissectionexplainshowtouseArtixconfigurationdomainfilestomanageapplicationsinyourenvironment.
Thesefilesusethe.
cfgextension.
Thissectionincludesthefollowing:"Defaultconfigurationfile".
"Importingconfigurationsettings".
"Workingwithmultipleinstallations".
"Usingsymbolsasconfigurationfileparameters".
DefaultconfigurationfileTheArtixconfigurationdomainfilecontainsalltheconfigurationsettingsforthedomain.
Thedefaultconfigurationdomainfileisfoundinthefollowinglocation:YoucaneditthesettingsinanArtixconfigurationdomainfiletomodifydifferentaspectsofArtixbehavior(forexample,routing,orlevelsoflogging).
ImportingconfigurationsettingsYoucanmanuallycreatenewArtixconfigurationdomainfilestocompartmentalizeyourapplications.
Thesenewconfigurationdomainfilescanimportinformationfromotherconfigurationdomainsusinganincludestatementinyourconfigurationfile.
Thisprovidesaconvenientwayofcompartmentalizingyourapplication-specificconfigurationfromtheglobalARTconfigurationinformationthatiscontainedinthedefaultconfigurationdomainfile.
ItalsomeansthatyoucaneasilyreverttothedefaultsettingsinthedefaultArtixconfigurationdomainfile.
Usingseparateapplication-specificconfigurationfilesistherecommendedwayofworkingwithArtixconfiguration.
Windows%IT_PRODUCT_DIR%\etc\domains\artix.
cfgUNIX$IT_PRODUCT_DIR/etc/domains/artix.
cfgCHAPTER2|ArtixConfiguration48Example2showsanincludestatementthatimportsthedefaultconfigurationfile.
Theincludestatementistypicallythefirstlinetheconfigurationfile.
ForcompleteworkingexamplesofArtixapplicationsthatusethisimportmechanism,seetheconfigurationfilesprovidedwithArtixdemos.
Thesedemoapplicationsareavailablefromthefollowingdirectory:ArtixInstallDir\samplesWorkingwithmultipleinstallationsIfyouareusingmultipleinstallationsorversionsofArtix,youcanuseyourconfigurationfilestohelpmanageyourapplicationsasfollows:1.
InstalleachversionofArtixintoadifferentdirectory.
2.
Installyourapplicationsintotheirowndirectory.
3.
Copytheartix.
cfgfilefromwhicheverArtixreleaseyouwanttouseintoanotherdirectory(forexample,anapplicationdirectory).
4.
Inyourapplication'slocalconfigurationfile,includetheartix.
cfgfilefromyourcopylocation.
ThisenablesyoutoswitchbetweenArtixversionsbycopyingthecorrespondingartix.
cfgfileintoacommonlocation.
ThisavoidshavingtoupdatethedirectoryinformationinyourconfigurationfilewheneveryouwanttoswitchbetweenArtixversions.
Example2:Configurationfileincludestatementincludeetc/domains/artix.
cfg";my_app_config{.
.
.
}ArtixConfigurationDomainFiles49UsingsymbolsasconfigurationfileparametersYoucandefinearbitrarysymbolsforuseinArtix.
cfgfiles,forexample:Thesesymbolscanthenbereusedasparametersinconfigurationsettings,forexample:Youcanuseconfigurationsymbolstocustomizeyourfiledependingontheenvironment.
Thisenablesyoutousethesamebasicconfigurationfileindifferentenvironments(forexample,development,test,andproduction).
UsingconfigurationsymbolsinastringYoucanusesymbolswithinastringusingasyntaxof%{SYMBOL_NAME}.
Forexample,ifyoudefinethefollowingsymbol:Thiscanbeusedwithinastringasfollows:Youcanalsocombinemultiplesymbolswithinastringasfollows:ConfigurationexampleTheconfigurationfileinExample3containssomeuser-definedsymbols:SERVER_LOG="my_server_log";plugins:local_log_stream:filename=SERVER_LOG;LOG_LEVEL="FATAL+ERROR+WARNING+INFO_MED+INFO_HI";event_log:filters=["*=%{LOG_LEVEL}"];plugins:local_log_stream:filename="%{APP_NAME}-%{CLIENT_LOG}";Example3:DefiningConfigurationSymbols#mydomain.
cfgINSTALL_CFGartix.
cfg";CLIENT_LOG="my_client.
log";SERVER_LOG="my_server.
log";APP_NAME="myapp";LOG_LEVEL="FATAL+ERROR+WARNING+INFO_MED+INFO_HI";include"template.
cfg";CHAPTER2|ArtixConfiguration50TheconfigurationfileinExample4usesthepredefinedsymbolsinconfigurationvariablesettings:Thisexampleshowsauser-definedsymbolinanincludestatement.
Itshowsasimpleexampleofusingasymbolinanconfigurationsetting,andmorecomplexexamplesofusingsymbolsinstrings.
Fordetailsofusingconfigurationsymbolsonthecommandline,see"Command-LineConfiguration"onpage51.
Example4:UsingConfigurationSymbols#template.
cfgincludeINSTALL_CFGmyapps{orb_plugins=["local_log_stream","soap","http"];server{#Simpleuser-definedsymbol.
plugins:local_log_stream:filename=SERVER_LOG;#Usingasymbolwithinastring.
event_log:filters=["*=%{LOG_LEVEL}"];}client{#Combiningsymbolswithinastring.
plugins:local_log_stream:filename="%{APP_NAME}-%{CLIENT_LOG}";};};Command-LineConfiguration51Command-LineConfigurationOverviewThissectionexplainshowtoconfigurethefollowingoptionsonthecommandline:ConfigurationvariablesConfigurationscopesUser-definedconfigurationsymbolsEnvironmentvariablesLocationofWSDLandreferencesMultiplebusinstancesSettingconfigurationvariablesArtixenablesyoutooverrideconfigurationvariablesatruntimebyusingargumentsonthecommandline.
TheseargumentsarethenpassedtotheArtixIT_Bus::init()call.
Settingconfigurationvariablesonthecommandlinetakesprecedenceovervariablesinaconfigurationfile.
Command-lineargumentsforconfigurationvariablestakethefollowingformat:Forexample:FordetailedinformationonArtixconfigurationvariablesettings,seetheArtixConfigurationReference.
-BUSCONFIG_VariableNameValueclient-BUSCONFIG_plugins:local_log_stream:filenameclient.
log-BUSCONFIG_orb_plugins["local_log_stream","soap","http"]-BUSCONFIG_event_log:filters["*=*"]CHAPTER2|ArtixConfiguration52SettingconfigurationscopesYoucanspecifyconfigurationscopeswhenstartinganapplicationonthecommandlineusingthe-BUSnameargument.
Forexample,tostartaprocessusingtheconfigurationspecifiedinthedemo.
myappscope,youwouldstarttheprocesswiththefollowingsyntax:Formoredetails,see"Specifyingconfigurationscopes"onpage44.
SettingconfigurationsymbolsYoucanalsooverrideuser-definedconfigurationsymbolsonthecommandline.
Settingconfigurationsymbolsonthecommandlinetakesprecedenceoversymbolsinaconfigurationfile.
Forexample,youcanoverridethelogfilenameinExample3onpage49usingcommand-lineargumentsasfollows:Thissuccessfullycreatesalogfilenamedtest2.
logdate.
Formoredetails,see"Usingsymbolsasconfigurationfileparameters"onpage49.
SettingenvironmentvariablesYoucanusecommand-lineargumentstopassthevalueofenvironmentvariablestoconfigurationfiles.
Forexample,youcanspecifythedirectorywhereArtixsearchesforitsconfigurationfilesusingthe-BUSconfig_domains_dirargument.
FormoredetailsonArtixenvironmentvariables,seeChapter1.
SpecifyinglocationsofWSDLandreferencesYoucanspecifythelocationofWSDLcontractsandArtixreferencesusingthefollowingcommand-linearguments:Forexample:Formoredetails,seeChapter13.
ProcessName[applicationparameters]-BUSnamedemo.
myappclient-BUSCONFIG_CLIENT_LOGtest2.
log-BUSservice_contractURL-BUSservice_contract_dirDirectory-BUSinitial_referenceurl.
/server-BUSservice_contract.
.
/.
.
/etc/hello.
wsdl53CHAPTER3ArtixLoggingThischapterdescribeshowtoconfigureArtixlogging.
ItshowshowtoconfigureloggingforspecificArtixsubsystemsandservices,howtocontroldynamicloggingonthecommandlineandArtixmessagesnoop.
ItalsoexplainstheArtixsupportforJavalog4jandtheSimpleNetworkManagementProtocol.
InthischapterThischapterincludesthefollowingsections:ConfiguringLoggingFilterspage54ConfiguringLogStreamPluginspage58LoggingforSubsystemsandServicespage63DynamicArtixLoggingpage72ConfiguringMessageSnooppage76ConfiguringSNMPLoggingpage78ConfiguringSNMPLoggingpage78CHAPTER3|ArtixLogging54ConfiguringLoggingFiltersOverviewLogginginArtixiscontrolledbytheevent_log:filtersconfigurationvariable,andbythelogstreamplug-ins(forexample,local_log_streamandxmlfile_log_stream).
Thissectionexplainsthefollowing:"Configuringlogginglevels""Loggingseveritylevels""Filteringpasswordsfromlogs"ConfiguringlogginglevelsYoucansettheevent_log:filtersconfigurationvariabletoprovideawiderangeoflogginglevels.
Theevent_log:filtersvariablecanbesetinyourArtixconfigurationdomainfile:ArtixInstallDir\etc\domains\artix.
cfg.
DisplayingerrorsThedefaultevent_log:filterssettingdisplayserrorsonly:DisplayingwarningsThefollowingsettingdisplayserrorsandwarningsonly:Displayingrequest/replymessagesAddingINFO_MEDcausesallrequest/replymessagestobelogged(foralltransportbuffers):DisplayingtraceoutputThefollowingsettingdisplaystypicaltracestatementoutput(withouttherawtransportbuffers):event_log:filters=["*=FATAL+ERROR"];event_log:filters=["*=FATAL+ERROR+WARNING"];event_log:filters=["*=FATAL+ERROR+WARNING+INFO_MED"];event_log:filters=["*=FATAL+ERROR+WARNING+INFO_HI"];ConfiguringLoggingFilters55DisplayingallloggingThefollowingsettingdisplaysalllogging:Thedefaultconfigurationsettingsenableloggingofonlyseriouserrorsandwarnings.
Formoreexhaustiveinformation,selectadifferentfilterlistatthedefaultscope,orincludeamoreexpansiveevent_log:filterssettinginyourconfigurationscope.
LoggingseveritylevelsArtixsupportsthefollowinglevelsoflogmessageseverity:InformationWarningErrorFatalerrorInformationInformationmessagesreportsignificantnon-errorevents.
Theseincludeserverstartuporshutdown,objectcreationordeletion,anddetailsofadministrativeactions.
Informationmessagesprovideahistoryofeventsthatcanbevaluableindiagnosingproblems.
Informationmessagescanbesettolow,medium,orhighverbosity.
WarningWarningmessagesaregeneratedwhenArtixencountersananomalouscondition,butcanignoreitandcontinuefunctioning.
Forexample,encounteringaninvalidparameter,andignoringitinfavorofadefaultvalue.
ErrorErrormessagesaregeneratedwhenArtixencountersanerror.
Artixmightbeabletorecoverfromtheerror,butmightbeforcedtoabandonthecurrenttask.
Forexample,anerrormessagemightbegeneratedifthereisinsufficientmemorytocarryoutarequest.
FatalerrorFatalerrormessagesaregeneratedwhenArtixencountersanerrorfromwhichitcannotrecover.
Forexample,afatalerrormessageisgeneratedifArtixcannotfinditsconfigurationfile.
event_log:filtersCHAPTER3|ArtixLogging56Table3showsthesyntaxusedbytheevent_log:filtersvariabletospecifyArtixloggingseveritylevels.
FilteringpasswordsfromlogsYoucanalsouseeventlogfilterstocontrolwhetherplain-textpasswordsareprintedinthelog.
ToenablefilteringofWebServicesSecurity(WS-S)plain-textpasswords,specifythefollowingconfigurationsetting:ThissettingchangesthecharactersinthelogofaWS-Splain-textpasswordto*characters.
Theevent_log:filter_sensitive_infoconfigurationvariablecanalsobeusedtofilterothertypesofsensitivelogginginformation,andmultiplefilterscanbeenabledinasinglesetting.
Thegeneralformatforthisconfigurationvariableisasfollows:Table3:ArtixLoggingSeverityLevelsSeverityLevelDescriptionINFO_LO[W]Lowverbosityinformationalmessages.
INFO_MED[IUM]Mediumverbosityinformationalmessages.
INFO_HI[GH]Highverbosityinformationalmessages.
INFO[_ALL]Allinformationalmessages.
WARN[ING]Warningmessages.
ERR[OR]Errormessages.
FATAL[_ERROR]Fatalerrormessages.
*Allmessages.
event_log:filter_sensitive_info=["event_log:filter_sensitive_info:wss_password"];event_log:filter_sensitive_info:wss_password=["#PasswordText$event_log:filter_sensitive_info=["foo"];foo=["Start","End","#"];ConfiguringLoggingFilters57Inthisgeneralexample,thefirstlineprovidesthelistofpatternnamestoconsiderforreplacement,andthesecondlineprovidestheactualpatternusingthefollowingsyntax:ThisreplacesanythinginthelogbetweenStart_patternandEnd_patternwiththe#character.
BecauseArtixconfigurationfilesdonotsupporttheescaped"characterinconfiguration,anypatternthathasthe"charactershouldinsteadreplacethischaracterwiththefollowing:Youmustspecifytwosinglequotesandnotadoublequote.
Thesearethentreatedasthe"characterduringthefilteringoflogginginformation.
["Start_Pattern","End_Pattern","Replacement_Character"];$%''$%CHAPTER3|ArtixLogging58ConfiguringLogStreamPluginsOverviewInadditiontosettingtheeventlogfilter,youmustensurethatalogstreamplug-inissetinyourartix.
cfgfile.
Theseincludethelocal_log_streamandthexmlfile_log_stream.
Thissectionexplainshowtouselogstreampluginstoperformthefollowingtasks:"Configuringloggingoutput""Usingarollinglogfile""Bufferingtheoutputstream""ConfiguringHTTPtracelogging""Configuringprecisionlogging""LoggingthethreadID"ConfiguringloggingoutputThelocal_log_streamsendsloggingtoatextfile;whilethexmlfile_log_streamoutputsloggingtoanXMLfile.
Thexmlfile_log_streamissetbydefault.
UsingtextlogfilesToconfigurethelocal_log_stream,setthefollowingvariablesinyourconfigurationfile:Ifyoudonotspecifyatextlogfilename,loggingissenttostdout.
//Ensuretheseplug-insexistinyourorb_pluginslistorb_plugins=["local_log_stream"//Optionaltextfilenameplugins:local_log_stream:filename="/var/mylocal.
log";ConfiguringLogStreamPlugins59UsingXMLlogfilesToconfigurethexmlfile_log_stream,setthefollowingvariablesinyourconfigurationfile:Youmustensurethatyourapplicationcandetecttheconfigurationsettingsforthelogstreamplug-ins.
Youcaneithersetthemattheglobalscope,orconfigureauniquescopeforusebyyourapplication,forexample:IT_Bus::init(argc,argv,"demo.
myscope");Thisenablesyoutoplacethenecessaryconfigurationinthedemo.
myscopescope.
UsingarollinglogfileBydefault,aloggingplug-increatesanewlogfileeachdaytopreventthelogfilefromgrowingindefinitely.
Inthismodel,thelogstreamaddsthecurrentdatetotheconfiguredfilename.
Thisproducesacompletefilename,forexample:Anewlogfilebeginswiththefirsteventoftheday,andendseachdayat23:59:59.
//Ensurethisplug-inisinyourorb_pluginslistorb_plugins=["xmlfile_log_stream"//Optionalfilename;canbequalified.
plugins:xmlfile_log_stream:filename="artix_logfile.
xml";//OptionalprocessIDaddedtofilename(defaultisfalse).
plugins:xmlfile_log_stream:use_pid="false";Note:Thexmlfile_log_streamplug-inisincludedinthedefaultorb_pluginslist,butnotintheorb_pluginslistsinsomedemoconfigurationscopes.
ToenableloggingtoanXMLfilefortheapplicationsthatyoudevelop,includethisplug-inyourorb_pluginslist.
/var/adm/my_artix_log.
01312006CHAPTER3|ArtixLogging60SpecifyingthedateformatYoucanconfiguretheformatofthedateintherollinglogfile,usingthefollowingconfigurationvariables:plugins:local_log_stream:filename_date_formatplugins:xmlfile_log_stream:filename_date_formatThespecifieddatemustconformtotheformatrulesoftheANSICstrftime()function.
Forexample,foratextlogfile,usethefollowingsettings:Onthe31stJanuary2006,thisresultsinalogfilenamedmy_log_2006_01_31.
TheequivalentsettingsforanXMLlogfileare:DisablingrollinglogfilesTodisablerollingfilebehaviorforatextlogfile,setthefollowingvariabletofalse:TodisablerollingfilebehaviorforanXMLlogfile,setthefollowingvariabletofalse:plugins:local_log_stream:rolling_file="true";plugins:local_log_stream:filename="my_log";plugins:local_log_stream:filename_date_format="_%Y_%m_%d";plugins:xmlfile_log_stream:rolling_file="true";plugins:xmlfile_log_stream:filename="my_log";plugins:xmlfile_log_stream:filename_date_format="_%Y_%m_%d";plugins:local_log_stream:rolling_file="false";plugins:xmlfile_log_stream:rolling_file="false";ConfiguringLogStreamPlugins61BufferingtheoutputstreamYoucanalsosettheoutputstreamtoabufferbeforeitwritestoalocallogfile.
Tospecifythisbehavior,useeitherofthefollowingvariables:plugins:local_log_stream:buffer_fileplugins:xmlfile_log_stream:buffer_fileWhensettotrue,bydefault,thebufferisoutputtoafileevery1000millisecondswhentherearemorethan100messageslogged.
Thislogintervalandnumberoflogelementscanalsobeconfigured.
Forexample,thefollowingconfigurationwritesthelogoutputtoalogfileevery400millisecondsiftherearemorethan20logmessagesinthebuffer.
UsingtextlogfilesUsingXMLlogfilesNote:Toensurethatthelogbufferissenttothelogfile,youmustalwaysshutdownyourapplicationscorrectly.
plugins:local_log_stream:filename="/var/adm/artix.
log";plugins:local_log_stream:buffer_file="true";plugins:local_log_stream:milliseconds_to_log="400";plugins:local_log_stream:log_elements="20";plugins:xml_log_stream:filename="/var/adm/artix.
xml";plugins:xml_log_stream:buffer_file="true";plugins:xml_log_stream:milliseconds_to_log="400";plugins:xml_log_stream:log_elements="20";CHAPTER3|ArtixLogging62ConfiguringHTTPtraceloggingHTTPtraceloggingshowsthefullHTTPbuffers(headersandbody)astheygotoandfromthewire.
Thisfeatureisdisabledbydefault.
YoucanenableHTTP-specifictraceloggingusingthefollowingsetting:YoushouldalsosetlogfilteringasfollowstopickuptheHTTPadditionalmessages,andthenresendthelogs:Forexample,youcouldenableHTTPtraceloggingtoverifythatbasicauthenticationheadersarewrittentothewirecorrectly.
Similarly,toenableHTTPS-specifictracelogging,usethefollowingsetting:ConfiguringprecisionloggingYoucanalsospecifywhethereventsareloggedwithtimeprecisioninnanoseconds,oratthegranularityofseconds.
Bydefault,precisionloggingisdisabled,andArtixlogsinseconds.
Toenableprecisionlogging,usethefollowingsetting:LoggingthethreadIDYoucanalsospecifywhetherathreadIDisloggedinthelogmessage,forexample:Thedefaultisfalse.
Whenthissettinghasbeenenabled,thefollowingexampleloggingmessageshowsthethreadIDinbold:policies:http:trace_requests:enabled="true";event_log:filters=["IT_HTTP=*"];policies:https:trace_requests:enabled="true";plugins:local_log_stream:precision_logging="true";plugins:local_log_stream:log_thread_id="true";Wed,26Sep200712:22:26.
0000000[homer600:6870:1269287216](IT_BUS.
CORE:0)I-RegisteringBuspluginSOAPServicePluginFactoryLoggingforSubsystemsandServices63LoggingforSubsystemsandServicesOverviewYoucanusetheevent_log:filtersconfigurationvariabletosetfine-grainedloggingforspecifiedArtixloggingsubsystems.
Forexample,youcansetloggingfortheArtixcore,specifictransports,bindings,orservices.
YoucansetloggingforArtixservices,suchasthelocator,andforservicesthatyouhavedeveloped.
ThissectionliststheArtix-specificloggingsubsystemsandthosefortheunderlyingAdaptiveRuntime(ART)core,andshowsexamplesofhowtousethem.
ArtixloggingsubsystemsArtixloggingsubsystemsareorganizedintoahierarchicaltree,withtheIT_BUSsubsystemattheroot.
Exampleloggingsubsystemsinclude:Table4showsalistofavailableArtixloggingsubsystems.
IT_BUS.
COREIT_BUS.
TRANSPORT.
HTTPIT_BUS.
BINDING.
SOAPTable4:ArtixLoggingSubsystemsSubsystemDescriptionIT_BUSArtixbusIT_BUS.
BINDINGAllbindingsIT_BUS.
BINDING.
COLOCCollocatedbindingIT_BUS.
BINDING.
CORBACORBAbindingIT_BUS.
BINDING.
CORBA.
CONTEXTCORBAcontextIT_BUS.
BINDING.
FIXEDFixedbindingIT_BUS.
BINDING.
HTTPHTTPbindingIT_BUS.
BINDING.
SOAPSOAPbindingIT_BUS.
BINDING.
SOAP12SOAP1.
2bindingCHAPTER3|ArtixLogging64IT_BUS.
BINDING.
SOAP_COMMONCommonSOAPbindingIT_BUS.
BINDING.
TAGGEDTaggedbindingIT_BUS.
COREArtixcoreIT_BUS.
CORE.
CONFIGArtixcoreconfigurationIT_BUS.
CORE.
CONTEXTArtixcorecontextsIT_BUS.
CORE.
INITIAL_REFERENCEArtixinitialreferencesIT_BUS.
CORE.
PLUGINArtixplug-insIT_BUS.
CORE.
RESOURCE_RESOLVERArtixresourceresolverIT_BUS.
FOUNDATION.
AFCArtixFoundationClasses(Artix-specificdatatypeextensions)IT_BUS.
FOUNDATION.
CONTEXT_LIBRARYArtixFoundationcontextlibraryIT_BUS.
I18N.
INTERCEPTORInternationalizationIT_BUS.
INTEGRATION.
AP_NANO_AGENTAmberPointSOAmanagementagentIT_BUS.
INTEGRATION.
CA_WSDM_OBSERVERCAWebServicesDistributedManagementobserverIT_BUS.
JNI.
GENERIC_PLUGINJavagenericserviceIT_BUS.
JNI.
JBUSJavaMessageServiceIT_BUS.
JNI.
JBUS.
TRANSACTIONJMStransactionsIT_BUS.
JNI.
JNI_UTILJavautilitiesIT_BUS.
JNI.
TRANSACTIONJavatransactionsIT_BUS.
JVM_MANAGERJVMmanagerIT_BUS.
LOGGINGArtixloggingIT_BUS.
LOGGING.
LOG4JLog4JloggingIT_BUS.
LOGGING.
RESPONSE_TIMEResponsetimeloggingTable4:ArtixLoggingSubsystemsSubsystemDescriptionLoggingforSubsystemsandServices65IT_BUS.
LOGGING.
SNMPSimpleNetworkManagementProtocolloggingIT_BUS.
MANAGEMENTArtixmanagementIT_BUS.
MESSAGING_PORTArtixmessagingportIT_BUS.
SERVICEAllArtixservices.
IT_BUS.
SERVICE.
ACTIVATOR.
REGISTRYArtixserviceactivatorregistryIT_BUS.
SERVICE.
CHAINArtixchainserviceIT_BUS.
SERVICE.
CONTAINERArtixcontainerserviceIT_BUS.
SERVICE.
DBArtixdatabasewrapper(server-sidehighavailabilitybasedonBerkeleyDB)IT_BUS.
SERVICE.
DB.
ENVArtixdatabaseenvironmentIT_BUS.
SERVICE.
DB.
REPLICA.
IMPLArtixdatabasereplicationmessagesIT_BUS.
SERVICE.
DB.
REPLICA.
MGRArtixdatabasereplicationmanagerIT_BUS.
SERVICE.
DB.
REPLICA.
MONITORArtixdatabasereplicationmonitorIT_BUS.
SERVICE.
DB.
REPLICA.
SYNCArtixdatabasesynchronizationmanagerIT_BUS.
SERVICE.
LOCATORArtixlocatorserviceIT_BUS.
SERVICE.
PEER_MANAGERArtixpeermanagerserviceIT_BUS.
SERVICE.
ROUTINGArtixrouterIT_BUS.
SERVICE.
ROUTING.
XPATHXPathroutingexpressionsIT_BUS.
SERVICE.
SECURITYArtixsecurityserviceIT_BUS.
SERVICE.
SECURITY.
CERT_VALIDATORSecuritycertificatevalidatorIT_BUS.
SERVICE.
SECURITY.
LOGIN_SERVICE.
CLIENTSecurityloginclientIT_BUS.
SERVICE.
SECURITY.
LOGIN_SERVICE.
SERVICESecurityloginserviceIT_BUS.
SERVICE.
SECURITY.
SECURITY_INTERCEPTORSecurityinterceptorTable4:ArtixLoggingSubsystemsSubsystemDescriptionCHAPTER3|ArtixLogging66IT_BUS.
SERVICE.
SECURITY.
WSSSOAPPartialMessageProtectionIT_BUS.
SERVICE.
SESSION_MANAGERArtixsessionmanagerserviceIT_BUS.
SERVICE.
WSDL_PUBLISHArtixWSDLpublishingserviceIT_BUS.
SERVICE.
XSLTArtixtransformerserviceIT_BUS.
TRANSACTIONSTransactionsIT_BUS.
TRANSACTIONS.
OTSCORBAObjectTransactionServicetransactionsIT_BUS.
TRANSACTIONS.
WSATWebServicesAtomicTransactionsIT_BUS.
TRANSACTIONS.
XAXAtransactionsIT_BUS.
TRANSPORT.
HTTPHTTPtransportIT_BUS.
TRANSPORT.
MQMQtransportIT_BUS.
TRANSPORT.
STUB_TRANSPORTArtixsimplestubtransportIT_BUS.
TRANSPORT.
TIBRVTibcoRendezvoustransportIT_BUS.
TRANSPORT.
TUNNELLTunneltransportIT_BUS.
TRANSPORT.
TUXEDOTuxedotransportIT_BUS.
VERSIONArtixversionIT_BUS.
WSRMWebServicesReliableMessagingIT_BUS.
WSRM_DBWebServicesReliableMessagingpersistenceIT_BUS.
XA_SWITCHXAtransactionsswitchIT_WSRMWebServicesReliableMessagingNote:Thislistmaychangeinfuturereleases.
Table4:ArtixLoggingSubsystemsSubsystemDescriptionLoggingforSubsystemsandServices67ARTcoreloggingsubsystemsTable4showsalistofavailableloggingsubsystemsfortheunderlyingARTcore.
Table5:ARTCoreLoggingSubsystemsSubsystemDescriptionIT_ATLI2_IOPAbstractTransportLayerInterface,version2withInter-ORBProtocolIT_ATLI2_IPAbstractTransportLayerInterface2.
0withInternetProtocolIT_ATLI2_IP_TUNNELAbstractTransportLayerInterface,withInternetTunnelProtocolIT_ATLI_TLSAbstractTransportLayerInterfacewithTransportSecurityLayerIT_COBOL_PLIArtixMainframeonlyIT_CODESETInternationalizationIT_CONNECTION_FILTERConnectionfilterIT_COREARTcoreIT_CSICommonSecureInteroperabilityIT_GSPCORBAbindingsecurityIT_GenericSecurityToolkitBaltimoreandz/OSSystemSLLtoolkitIT_GIOPGeneralInter-ORBProtocolIT_HTTPHypertextTransferProtocolIT_HTTPSHTTPwithSecureSocketLayerIT_IIOPInternetInter-ORBProtocolIT_IIOP_TLSInternetInter-ORBProtocolwithTransportLayerSecurityIT_LICENSINGLicensingIT_MESSAGINGMessagingCHAPTER3|ArtixLogging68SubsystemfiltersyntaxTheevent_log:filtersvariabletakesalistoffilters,whereeachfiltersetsloggingforaspecifiedsubsystemusingthefollowingformat:SubsystemisthenameoftheArtixsubsystemthatreportsthemessages;whileSeverityLevelrepresentstheseveritylevelsthatareloggedbythatsubsystem.
Forexample,thefollowingfilterspecifiesthatonlyerrorsandfatalerrorsfortheHTTPtransportshouldbereported:IT_MGMT_LOGGINGManagementserviceIT_OBJECT_KEY_REPLACERObjectkeyreplacerIT_OTSObjectTransactionLayerIT_OTS_LITEObjectTransactionLayerLiteIT_POAPortableObjectAdaptorIT_POA_LOCATORPortableObjectAdaptorwithlocatorIT_REQUEST_LOGGERRequestloggerIT_SCHANNELSchannelsecurityIT_SECURITYSecurityIT_TLSTransportLayerSecurityIT_WORKQUEUEMulti-threadingIT_XAXAtransactionsMESSAGE_SNOOPMessagesnooping.
Note:Thislistmaychangeinfuturereleases.
Table5:ARTCoreLoggingSubsystemsSubsystemDescriptionSubsystem=SeverityLevel[+SeverityLevel].
.
.
IT_BUS.
TRANSPORT.
HTTP=ERR+FATALLoggingforSubsystemsandServices69Inaconfigurationfile,event_log:filtersissetasfollows:Thefollowingentryinaconfigurationfileexplicitlysetsseveritylevelsforalistofsubsystemfilters:SettingtheArtixbuspre-filterTheArtixbuspre-filterprovidesfilteringoflogmessagesthataresenttotheEventLogbeforetheyareoutputtotheLogStream.
Thisenablesyoutominimizethetimespentgeneratinglogmessagesthatwillbeignored.
Forexample:Inthisexample,onlyWARNING,ERRORandFATALprioritylogmessagesaresenttotheEventLog.
ThismeansthatnoprocessingtimeiswastedgeneratingstringsforINFOlogmessages.
TheEventLogthenonlysendsFATALandERRORlogmessagestotheLogStreamfortheIT_BUSsubsystem.
SettingloggingforspecificsubsystemsYoucansetloggingfiltersforspecificArtixsubsystems.
Asubsystemwithnoconfiguredfiltervalueimplicitlyinheritsthevalueofitsparent.
Thedefaultvalueattherootofthetreeensuresthateachnodehasanimplicitfiltervalue.
Forexample:ThismeansthatallsubsystemsunderIT_BUShaveafilterofFATAL+ERROR,exceptforIT_BUS.
BINDING.
CORBAwhichhasWARN+FATAL+ERROR.
event_log:filters=["LogFilter"[,"LogFilter"].
.
.
]event_log:filters=["IT_BUS=FATAL+ERROR","IT_BUS.
BINDING.
CORBA=WARN+FATAL+ERROR"];event_log:filters:bus:pre_filter="WARN+ERROR+FATAL";event_log:filters=["IT_BUS=FATAL+ERROR","IT_BUS.
BINDING=*"];Note:event_log:filters:bus:pre_filterdefaultsto*(allmessages).
SettingthisvariabletoWARN+ERROR+FATALimprovesperformancesignificantly.
event_log:filters=["IT_BUS=FATAL+ERROR","IT_BUS.
BINDING.
CORBA=WARN+FATAL+ERROR"];CHAPTER3|ArtixLogging70SettingmultiplesubsystemswithasinglefilterUsingtheIT_BUSsubsystemmeansyoucanadjusttheloggingforArtixsubsytemswithasinglefilter.
Forexample,youcanturnoffloggingforthetunneltransport(IT_BUS.
TRANSPORT.
TUNNEL=FATAL)and/orturnuploggingfortheHTTPtransport(IT_BUS.
TRANSPORT.
HTTP=INFO_LOW+.
.
.
),asshowinthefollowingexample:Configuringservice-basedloggingYoucanuseArtixservicesubsystemstologforArtixservices,suchasthelocator,andalsoforservicesthatyouhavedeveloped.
Thiscanbeusefulwhenyouarerunningmanyservices,andneedtofilterservicesthatareparticularlynoisy.
Usingservice-basedlogginginvolvessomeperformanceoverheadsandextraconfiguration.
Thisfeatureisdisabledbydefault.
Toenableloggingforspecificservices,performthefollowingsteps:1.
Setthefollowingconfigurationvariables:2.
Settheeventlogfiltersasappropriate,forexample:ServicenameformatIntheseexamples,theservicenamemustbespecifiedinthefollowingformat:"{NamespaceURI}LocalPart"Forexample:event_log:filters=["IT_BUS=FATAL+ERROR","IT_BUS.
TRANSPORT.
TUNNEL=FATAL","IT_BUS.
TRANSPORT.
HTTP=INFO_LOW+INFO_HI+WARN"];event_log:log_service_names:active="true";event_log:log_service_names:services=["ServiceName1","ServiceName2"];event_log:filters=["IT_BUS=FATAL+ERROR","ServiceName1=WARN+ERROR+FATAL","ServiceName2=ERROR+FATAL","ServiceName2.
IT_BUS.
BINDING.
CORBA=INFO+WARN+ERROR+FATAL"];"{http://www.
my-company.
com/bus/tests}SOAPHTTPService"LoggingforSubsystemsandServices71SettingparameterizedconfigurationThefollowingexampleshowssettingservice-basedlogginginyourapplicationusingthe-BUSCONFIG_event_log:filtersparameter:LoggingperbusForC++applications,youcanconfigureloggingperbusbyspecifyingyourloggingconfigurationinanapplication-specificscope.
However,youmustalsospecifyloggingperbusinyourservercode,forexample:Includethefollowingfile:ArtixInstallDir/include/it_bus/bus_logger.
hPassavalidbustotheBusLogger(forexample,usingBusLoggermacros,suchasIT_INIT_BUS_LOGGER_MEM).
ForfulldetailsonhowtospecifythatloggingstatementsaresenttoaparticularArtixbus,seeDevelopingAdvancedArtixPlug-insinC++.
ProgrammaticloggingconfigurationC++applicationscanusealoggingAPItoquery,add,orcancelloggingfiltersforsubsystems,aswellasaddingandremovingservicesfromper-servicelogging.
Forexample,youcanaccessaC++IT_Bus::Logging::LoggingConfigclassbycallingbus->get_pdk_bus()->get_logging_config().
Forfulldetails,seeDevelopingArtixApplicationsinC++.
constchar*bus_argv[]={"-BUSname","my_spp_logging","-BUSCONFIG_event_log:filters","{IT_BUS=ERR},{{http://www.
my-company/my_app}SOAPHTTPService.
IT_BUS.
BINDING.
SOAP=INFO}"CHAPTER3|ArtixLogging72DynamicArtixLoggingOverviewAtruntime,youcanuseit_container_admincommandstodynamicallygetandsetlogginglevelsforspecificsubsystemsandservices.
Thissectionexplainshowtousetheit_container_admin-getloggingleveland-setloggingleveloptions.
GettinglogginglevelsThe-getloggingleveloptiongetsthelogginglevelforspecifiedasubsystemorservice.
Thiscommandhasthefollowingsyntax:GetloggingforaspecificsubsystemThefollowingexamplegetsthelogginglevelfortheCORBAbindingonly:GetloggingformultiplesubsystemsThefollowingexampleusesawildcardtogetthelogginglevelsforallsubsystems:Thisoutputsalistofsubsystemsthathavebeenexplicitlysetinaconfigurationfileorby-setlogginglevel.
Forexample,ifIT_BUS.
BINDING=LOG_INFOisoutput,thismeansthatIT_BUS.
BINDINGissettoLOG_INFO,andthatnochildsubsystemsofIT_BUS.
BINDINGareexplicitlyset.
Inthiscase,allchildsubsystemsinheritLOG_INFOfromtheirparent.
-getlogginglevel[-subsystemSubSystem][-service{Namespace}LocalPart]it_container_admin-getlogginglevel-subsystemIT_BUS.
BINDING.
CORBAit_container_admin-getlogginglevel-subsystem*DynamicArtixLogging73GetloggingforaspecificserviceThefollowingexamplegetsthelogginglevelforalocatorservicethatisrunninginacontainer:SettinglogginglevelsThe-setloggingleveloptionsetsthelogginglevelforaspecifiedsubsystem.
Thiscommandhasthefollowingsyntax:Thepossiblelogginglevelsare:SetloggingforaspecificsubsystemThefollowingexamplesetsthelogginglevelfortheHTTPtransportonly:SetloggingformultiplesubsystemsYoucansetloggingformultiplesubsystemsbyusingthe-propagateoption.
Thefollowingexamplesetsthelogginglevelforalltransports(IIOP,HTTP,andsoon):it_container_admin-getlogginglevel-subsystemIT_BUS.
BINDING.
SOAP-service{http://ws.
iona.
com/locator}LocatorService-setlogginglevel-subsystemSubSystem-levelLevel[-propagate][-service{Namespace}Localpart]LOG_FATALLOG_ERRORLOG_WARNLOG_INFO_HIGHLOG_INFO_MEDLOG_INFO_LOWLOG_SILENTLOG_INHERITit_container_admin-getlogginglevel-subsystemIT_BUS.
TRANSPORT.
HTTP-levelLOG_WARNit_container_admin-setlogginglevel-subsystemIT_BUS.
TRANSPORT-levelLOG_WARN-propagatetrueCHAPTER3|ArtixLogging74OverridechildsubsystemlevelsYoucanusethe-propagateoptiontooverridechildsubsystemlevelsthathavebeensetpreviously.
Forexample,takethesimplecasewhereIT_BUSissettoLOG_INFO,andnoothersubsystemsareset.
IftheIT_BUSlevelischanged,itisautomaticallypropagatedtoallIT_BUSchildren.
However,takethecasewhereIT_BUS.
COREissettoLOG_WARN,andIT_BUS.
TRANSPORTissettoLOG_INFO_LOW.
SettingIT_BUStoLOG_ERRORaffectsIT_BUSandallitschildren,exceptforIT_BUS.
COREandIT_BUS.
TRANSPORT.
Inthiscase,youcanuse-propagatetruetooverridethechildsubsystemlevelssetpreviously.
Forexample:SetloggingforservicesThefollowingexamplesetsthelogginglevelfortheSOAPbindingwhenusedwiththelocatorservice:The-propagateoptioncanalsobeusedwhensettingloggingforservice.
Forexample,ifyouhaveservice-specificloggingenabledforIT_BUS.
BINDINGandIT_BUS.
BINDING.
SOAP,settingaservice-specificloglevelforIT_BUS.
BINDINGwith-propagatetruealsosetstheservicelevelforIT_BUS.
BINDING.
SOAP.
it_container_admin-setlogginglevel-subsystemIT_BUS-levelLOG_ERROR-propagatetrueit_container_admin-setlogginglevel-subsystemIT_BUS.
BINDING.
SOAP-levelLOG_INFO_HIGH-service{http://ws.
iona.
com/locator}LocatorServiceit_container_admin-setlogginglevel-subsystemIT_BUS.
BINDING-levelLOG_INFO_LOW-propagatetrue-service{http://ws.
iona.
com/locator}LocatorServiceDynamicArtixLogging75InheritingalogginglevelYoucanusetheLOG_INHERITleveltocancelthecurrentlogginglevelandinheritfromtheparentsubsysteminstead.
Forexample,iftheIT_BUS.
COREsubsystemissettoLOG_INFO_LOW,anditsparent(IT_BUS)issettoLOG_ERROR,settingIT_BUS.
COREtoLOG_INHERITresultsinIT_BUS.
COREloggingatLOG_ERROR.
Thisisshowninthefollowingexample:Bydefault,allsubsystemsareeffectivelyinLOG_INHERITmodebecausetheyinheritalevelfromtheirparentsubsystem.
SilentloggingYoucanusetheLOG_SILENTleveltospecifythatagivensubsystemdoesnotperformanylogging,forexample:FurtherinformationFormoredetailsonusingtheit_container_admincommand,see"DeployingServicesinanArtixContainer"onpage129.
Formoredetailsonsubsystems,see"LoggingforSubsystemsandServices"onpage63.
it_container_admin-setlogginglevel-subsystemIT_BUS.
CORE-levelLOG_INHERITit_container_admin-setlogginglevel-subsystemIT_BUS.
TRANSPORT.
TUNNEL-levelLOG_SILENTCHAPTER3|ArtixLogging76ConfiguringMessageSnoopOverviewMessagesnoopisanART-basedmessageinterceptorthatsendsinput/outputmessagestotheArtixlogtoenableviewingofthemessagecontent.
ThisisausefuldebuggingtoolwhendevelopingandtestinganArtixsystem.
Messagesnoopisenabledbydefault.
Itisautomaticallyaddedasthelastinterceptorbeforethebindingtodetectanychangesthatotherinterceptorsmightmaketothemessage.
Bydefault,message_snooplogsatINFO_MEDintheMESSAGE_SNOOPsubsystem.
Youcanchangethesesettingsinconfiguration.
DisablingmessagesnoopMessagesnoopisinvokedoneverymessagecall,twiceintheclientandtwiceintheserver(assumingArtixisonbothsides).
Thismeansthatitcanimpactonperformance.
Moreimportantly,messagesnoopinvolvesriskstoconfidentiality.
Youcandisablemessagesnoopusingthefollowingsetting:SettingamessagesnooploglevelYoucansetamessagesnooploglevelgloballyorforaserviceport.
Thefollowingexamplesetsthelevelglobally:Thefollowingexamplesetsthelevelforaserviceport:artix:interceptors:message_snoop:enabled="false";WARNING:Forsecurityreasons,itisstronglyrecommendedthatmessagesnoopisdisabledinproductiondeployments.
artix:interceptors:message_snoop:log_level="WARNING";event_log:filters=["*=WARNING","IT_BUS=INFO_HI+WARN+ERROR","MESSAGE_SNOOP=WARNING"];artix:interceptors:message_snoop:http://www.
acme.
com/tests:myService:myPort:log_level="INFO_MED";event_log:filters=["*=INFO_MED","IT_BUS=","MESSAGE_SNOOP=INFO_MED"];ConfiguringMessageSnoop77SettingamessagesnoopsubsystemYoucansetmessagesnooptoaspecificsubsystemgloballyorforaserviceport.
Thefollowingexamplesetsthesubsystemglobally:Thefollowingexamplesetsthesubsystemforaserviceport:Ifmessagesnoopisdisabledglobally,butconfiguredforaservice/port,itisenabledforthatservice/portwiththespecifiedconfigurationonly.
Forexample:Settingmessagesnoopinconjunctionwithlogfiltersisusefulwhenyouwishtotraceonlymessagesthatarerelevanttoaparticularservice,andyoudonotwishtoseeloggingforothers(forexample,thecontainer,locator,andsoon).
artix:interceptors:message_snoop:log_subsystem="MY_SUBSYSTEM";event_log:filters=["*=INFO_MED","IT_BUS=","MY_SUBSYSTEM=INFO_MED"];artix:interceptors:message_snoop:http://www.
acme.
com/tests:myService:myPort:log_subsystem="MESSAGE_SNOOP";event_log:filters=["*=INFO_MED","IT_BUS=","MESSAGE_SNOOP=INFO_MED"];artix:interceptors:message_snoop:enabled="false";artix:interceptors:message_snoop:http://www.
acme.
com/tests:myService:myPort:log_level="WARNING";artix:interceptors:message_snoop:http://www.
acme.
com/tests:myService:myPort:log_subsystem="MY_SUBSYSTEM";event_log:filters=["*=WARNING","IT_BUS=INFO_HI+WARN+ERROR","MY_SUBSYSTEM=WARNING"];CHAPTER3|ArtixLogging78ConfiguringSNMPLoggingSNMPSimpleNetworkManagementProtocol(SNMP)istheInternetstandardprotocolformanagingnodesonanIPnetwork.
SNMPcanbeusedtomanageandmonitorallsortsofequipment(forexample,networkservers,routers,bridges,andhubs).
TheArtixSNMPLogStreamplug-inusestheopensourcelibrarynet-snmp(v.
5.
0.
7)toemitSNMPv1/v2traps.
Formoreinformationonthisimplementation,seehttp://sourceforge.
net/projects/net-snmp/.
ToobtainafreewareSNMPTrapReceiver,visithttp://www.
ncomtech.
com.
ArtixManagementInformationBase(MIB)AManagementInformationBase(MIB)fileisadatabaseofobjectsthatcanbemanagedusingSNMP.
Ithasahierarchicalstructure,similartoaDOSorUNIXdirectorytree.
Itcontainsbothpre-definedvaluesandvaluesthatcanbecustomized.
TheArtixMIBisshownbelow:Example5:ArtixMIBIONA-ARTIX-MIBDEFINITIONS::=BEGINIMPORTSMODULE-IDENTITY,OBJECT-TYPE,Integer32,Counter32,Unsigned32,NOTIFICATION-TYPEFROMSNMPv2-SMIDisplayStringFROMRFC1213-MIB;--v2s/current/currentionaOBJECTIDENTIFIER::={iso(1)org(3)dod(6)internet(1)private(4)enterprises(1)3027}ionaMibMODULE-IDENTITYLAST-UPDATED"200303210000Z"ORGANIZATION"IONATechnologiesPLC"ConfiguringSNMPLogging79CONTACT-INFO"CorporateHeadquartersDublinOfficeTheIONABuildingShelbourneRoadBallsbridgeDublin4IrelandPhone:353-1-662-5255Fax:353-1-662-5244USHeadquartersWalthamOffice200WestStreet4thFloorWaltham,MA02451Phone:781-902-8000Fax:781-902-8001Asia-PacificHeadquartersIONATechnologiesJapan,LtdAkasakaSanchomeBldg.
7F3-21-16Akasaka,Minato-ku,Tokyo,Japan107-0052Tel:+81335605611Fax:+81335605612E-mail:support@iona.
com"DESCRIPTION"ThisMIBmoduledefinestheobjectsusedandformatofSNMPtrapsthataregeneratedfromtheEventLogforArtixbasedsystemsfromIONATechnologies"::={iona1}Example5:ArtixMIBCHAPTER3|ArtixLogging80--iona(3027)--|--ionaMib(1)--|--|||--orbix3(2)IONAAdmin(3)Artix(4)-|--||--ArtixEventLogMibObjects(0)ArtixEventLogMibTraps(1)--||--|-eventSource(1)|-ArtixbaseTrapDef(1)--|-eventId(2)--|-eventPriority(3)--|-timeStamp(4)--|-eventDescription(5)ArtixOBJECTIDENTIFIER::={ionaMib4}ArtixEventLogMibObjectsOBJECTIDENTIFIER::={Artix0}ArtixEventLogMibTrapsOBJECTIDENTIFIER::={Artix1}ArtixBaseTrapDefOBJECTIDENTIFIER::={ArtixEventLogMibTraps1}--MIBvariablesusedasvarbindseventSourceOBJECT-TYPESYNTAXDisplayString(SIZE(0.
.
255))MAX-ACCESSnot-accessibleSTATUScurrentDESCRIPTION"Thecomponentorsubsystemwhichgeneratedtheevent.
"::={ArtixEventLogMibObjects1}Example5:ArtixMIBConfiguringSNMPLogging81eventIdOBJECT-TYPESYNTAXINTEGERMAX-ACCESSnot-accessibleSTATUScurrentDESCRIPTION"Theeventidforthesubsystemwhichgeneratedtheevent.
"::={ArtixEventLogMibObjects2}eventPriorityOBJECT-TYPESYNTAXINTEGERMAX-ACCESSnot-accessibleSTATUScurrentDESCRIPTION"Theseveritylevelofthisevent.
ThismapstoIT_Logging::EventPrioritytypes.
Allprioritytypesmaptofourgeneraltypes:INFO(I),WARN(W),ERROR(E),FATAL_ERROR(F)"::={ArtixEventLogMibObjects3}timeStampOBJECT-TYPESYNTAXDisplayString(SIZE(0.
.
255))MAX-ACCESSnot-accessibleSTATUScurrentDESCRIPTION"Thetimewhenthiseventoccurred.
"::={ArtixEventLogMibObjects4}eventDescriptionOBJECT-TYPESYNTAXDisplayString(SIZE(0.
.
255))MAX-ACCESSnot-accessibleSTATUScurrentDESCRIPTION"Thecomponent/applicationdescriptiondataincludedwithevent.
"::={ArtixEventLogMibObjects5}--SNMPv1TRAPdefinitions--ArtixEventLogBaseTrapsTRAP-TYPE--OBJECTS{--eventSource,--eventId,--eventPriority,Example5:ArtixMIBCHAPTER3|ArtixLogging82IONASNMPintegrationEventsreceivedfromvariousArtixcomponentsareconvertedintoSNMPmanagementinformation.
ThisinformationissenttodesignatedhostsasSNMPtraps,whichcanbereceivedbyanySNMPmanagerslisteningonthehosts.
Inthisway,ArtixenablesSNMPmanagerstomonitorArtix-basedsystems.
ArtixsupportsSNMPversion1and2trapsonly.
Artixprovidesalogstreamplug-incalledsnmp_log_stream.
ThesharedlibrarynameoftheSNMPplug-infoundintheartix.
cfgfileis:--timestamp,--eventDescription--}--STATUScurrent--ENTERPRISEiona--VARIABLES{ArtixEventLogMibObjects}--DESCRIPTION"ThegenerictrapgeneratedfromanArtixEventLog.
"ArtixBaseTrapDef1}--SNMPv2NotificationtypeArtixEventLogNotifNOTIFICATION-TYPEOBJECTS{eventSource,eventId,eventPriority,timestamp,eventDescription}STATUScurrentENTERPRISEionaDESCRIPTION"ThegenerictrapgeneratedfromanArtixEventLog.
"::={ArtixBaseTrapDef1}ENDExample5:ArtixMIBplugins:snmp_log_stream:shlib_name="it_snmp"ConfiguringSNMPLogging83ConfiguringtheSNMPplug-inTheSNMPplug-inhasfiveconfigurationvariables,whosedefaultscanbeoverriddenbytheuser.
Theavailabilityofthesevariablesissubjecttochange.
Thevariablesanddefaultsare:ConfiguringtheEnterpriseObjectIdentifierThelastplug-indescribed,oid,istheEnterpriseObjectIdentifier.
ThisisassignedtospecificenterprisesbytheInternetAssignedNumbersAuthority(IANA).
Thefirstsixnumberscorrespondtotheprefix:iso.
org.
dod.
internet.
private.
enterprise(1.
3.
6.
1.
4.
1).
Eachenterpriseisassignedauniquenumber,andcanprovideadditionalnumberstofurtherspecifytheenterpriseandproduct.
Forexample,theoidforIONAis3027.
IONAhasadded1.
4.
1.
0forArtix.
ThereforethecompleteOIDforIONA'sArtixis1.
3.
6.
1.
4.
1.
3027.
1.
4.
1.
0.
Tofindthenumberforyourenterprise,visittheIANAwebsiteathttp://www.
iana.
org.
TheSNMPplug-inimplementstheIT_Logging::LogStreaminterfaceandthereforeactslikethelocal_log_streamplug-in.
plugins:snmp_log_stream:community="public";plugins:snmp_log_stream:server="localhost";plugins:snmp_log_stream:port="162";plugins:snmp_log_stream:trap_type="6";plugins:snmp_log_stream:oid="yourIANAnumberindotteddecimalnotation"CHAPTER3|ArtixLogging8485CHAPTER4EnterprisePerformanceLoggingArtix'performanceloggingplug-insenableittointegrateeffectivelywiththird-partyEnterpriseManagementSystems(EMS).
InthischapterThischaptercontainsthefollowingsections:EnterpriseManagementIntegrationpage86ConfiguringPerformanceLoggingpage87PerformanceLoggingMessageFormatspage91RemotePerformanceLoggingpage94ConfiguringRemotePerformanceLoggingpage97CHAPTER4|EnterprisePerformanceLogging86EnterpriseManagementIntegrationOverviewTheperformanceloggingplug-insenablebothArtixandOrbixtointegrateeffectivelywithEnterpriseManagementSystems(EMS),suchasIBMTivoli,HPOpenView,orBMCPatrol.
Theperformanceloggingplug-inscanalsobeusedinisolationoraspartofabespokesolution.
EnterpriseManagementSystemsenablesystemadministratorsandproductionoperatorstomonitorenterprise-criticalapplicationsfromasinglemanagementconsole.
Thisenablesthemtoquicklyrecognizetherootcauseofproblemsthatmayoccur,andtakeremedialaction(forexample,ifamachineisrunningoutofdiskspace).
PerformanceloggingWhenperformanceloggingisconfigured,youcanseehoweachArtixserverisrespondingtoload.
Theperformanceloggingplug-inslogthisdatatofileorsyslog.
YourEMS(forexample,IBMTivoli)canreadtheperformancedatafromtheselogs,anduseittoinitiateappropriateactions,(forexample,issuearestarttoaserverthathasbecomeunresponsive,orstartanewreplicaforanoverloadedcluster).
ExampleEMSintegrationFigure1showsanoverviewoftheIONAandIBMTivoliintegrationatwork.
Inthisexample,arestartcommandisissuedtoanunresponsiveserver.
InFigure1,theperformancelogfilesindicateaproblem.
TheIONATivoliProviderusesthelogfileinterpretertoreadthelogs.
Theproviderseeswhenathresholdisexceededandfiresanevent.
TheeventcausesatasktobeactivatedintheTivoliTaskLibrary.
Thistaskrestartstheappropriateserver.
Thischapterexplainshowtomanuallyconfiguretheperformanceloggingplug-ins.
Italsoexplainstheformatoftheperformanceloggingmessages.
FordetailsonhowtointegrateyourEMSenvironmentwithArtix,seetheArtixManagementGuide,C++Runtime.
ConfiguringPerformanceLogging87ConfiguringPerformanceLoggingOverviewThissectionexplainshowtomanuallyconfigureperformancelogging.
Thissectionincludesthefollowing:"Performanceloggingplug-in".
"MonitoringArtixrequests".
"Specifyingalogfile".
"Monitoringclusters".
"ConfiguringaserverID".
"ConfiguringaclientID".
"PerformanceLoggingMessageFormats".
Performanceloggingplug-inTheperformanceloggingcomponentincludesthefollowingplug-ins:Note:YoucanalsousetheArtixDesignerGUItooltoconfigureperformanceloggingautomatically.
However,manualconfigurationgivesyoumorefine-grainedcontrol.
Table6:PerformanceLoggingPlug-inPlug-inDescriptionResponsemonitorMonitorsresponsetimesofrequestsastheypassthroughtheArtixbindingchains.
PerformsthesamefunctionforArtixastheresponsetimeloggerdoesforOrbix.
CollectorPeriodicallycollectsdatafromtheresponsemonitorplug-inandlogstheresults.
CHAPTER4|EnterprisePerformanceLogging88MonitoringArtixrequestsYoucanuseperformanceloggingtomonitorArtixserverandclientrequests.
Tomonitorbothclientandserverrequests,addthebus_response_monitorplug-intotheorb_pluginslistintheglobalconfigurationscope.
Forexample:Toconfigureperformanceloggingontheclientsideonly,specifythissettinginaclientscopeonly.
LoggingtoafileormemoryYoucanspecifywhetherloggingisoutputtoafileorstoredinmemoryusingplugins:bus_response_monitor:typevariable.
Specifyingfileoutputsperformanceloggingdatatoafile,whilespecifyingmemoryplacesthedataintomemorysoitcanberetrievedusingtheArtixcontainerservice.
Whenfileisenabled,memoryisalsoenabled.
Forexample:SpecifyingalogfileYoucanconfigurethecollectorplug-intologdatatoaspecificfilelocation.
Thefollowingexampleconfigurationresultsinperformancedatabeingloggedto/var/log/my_app/perf_logs/treasury_app.
log:MonitoringclustersYoucanconfigureyourEMStomonitoraclusterofservers.
Youcandothisbyconfiguringmultipleserverstologtothesamefile.
Iftheserversarerunningondifferenthosts,thelogfilelocationmustbeonanNFSmountedorshareddirectory.
Alternatively,youcanusesyslogdasamechanismformonitoringacluster.
Youcandothisbychoosingonesyslogdtoactasthecentralloggingserverforthecluster.
Forexample,sayyoudecidetouseahostnamedteddyasyourcentrallogserver.
Youmusteditthe/etc/syslog.
conffileoneachhostthatisrunningaserverreplica,andaddalinesuchasthefollowing:orb_plugins=["xmlfile_log_stream","soap","at_http","bus_response_monitor"];plugins:bus_response_monitor:type=file;plugins:it_response_time_collector:filename="/var/log/my_app/perf_logs/treasury_app.
log";#Substitutethenameofyourlogserveruser.
info@teddyConfiguringPerformanceLogging89Somesyslogdaemonswillnotacceptlogmessagesfromotherhostsbydefault.
Inthiscase,itmaybenecessarytorestartthesyslogdonteddywithaspecialflagtoallowremotelogmessages.
Youshouldconsultthemanpagesonyoursystemtodetermineifthisisnecessaryandwhatflagstouse.
ConfiguringaserverIDYoucanconfigureaserverIDthatwillbereportedinyourlogmessages.
ThisserverIDisparticularlyusefulinthecasewheretheserverisareplicathatformspartofacluster.
Inacluster,theserverIDenablesmanagementtoolstorecognizelogmessagesfromdifferentreplicainstances.
YoucanconfigureaserverIDasfollows:Thissettingisoptional;andifomitted,theserverIDdefaultstotheORBnameoftheserver.
Inacluster,eachreplicamusthavethisvaluesettoauniquevaluetoenablesensibleanalysisofthegeneratedperformancelogs.
ConfiguringaclientIDYoucanalsoconfigureaclientIDthatwillbereportedinyourlogmessages,forexample:Thissettingenablesmanagementtoolstorecognizelogmessagesfromclientapplications.
Thissettingisoptional;andifomitted,itisassumedthatthataserverisbeingmonitored.
ConfigurationexampleThefollowingsimpleexampleconfigurationfileisfromthemanagementdemosuppliedinyourArtixinstallation:plugins:it_response_time_collector:server-id="Locator-1";plugins:it_response_time_collector:server-id="my_client_app";CHAPTER4|EnterprisePerformanceLogging90Inthisexample,thebus_response_monitorplug-inissetintheglobalscope.
Thisspecifiessettingsforboththeclientandserverapplications.
includeetc/domains/artix.
cfg";demos{management{orb_plugins=["xmlfile_log_stream","soap","at_http","bus_response_monitor"];client{plugins:it_response_time_collector:server-id="management-demo-client";plugins:it_response_time_collector:filename="management_demo_client.
log";};server{plugins:it_response_time_collector:server-id="management-demo-server";plugins:it_response_time_collector:filename="management_demo_server.
log";};};};PerformanceLoggingMessageFormats91PerformanceLoggingMessageFormatsOverviewThissectiondescribestheperformanceloggingmessageformatsusedbyIONAproducts.
Itincludesthefollowing:"Artixlogmessageformat".
"Orbixlogmessageformat".
"Simplelifecyclemessageformats".
ArtixlogmessageformatPerformancedataisloggedinawell-definedformat.
ForArtixapplications,thisformatisasfollows:YYYY-MM-DDHH:MM:SSserver=ServerID[namespace=nnnservice=sssport=pppoperation=name]count=navg=nmax=nmin=nint=noph=nTable7:ArtixlogmessageargumentsArgumentDescriptionserverTheserverIDoftheprocessthatisloggingthemessage.
namespaceTheArtixnamespace.
serviceTheArtixservice.
portTheArtixport.
operationThenameoftheoperationforCORBAinvocationsortheURIforrequestsonservlets.
countThenumberofoperationsofinvoked(IIOP).
orThenumberoftimesthisoperationorURIwasloggedduringthelastinterval(HTTP).
avgTheaverageresponsetime(milliseconds)forthisoperationorURIduringthelastinterval.
CHAPTER4|EnterprisePerformanceLogging92Thecombinationofnamespace,serviceandportabovedenoteauniqueArtixendpoint.
OrbixlogmessageformatTheformatforOrbixlogmessagesisasfollows:maxThelongestresponsetime(milliseconds)forthisoperationorURIduringthelastinterval.
minTheshortestresponsetime(milliseconds)forthisoperationorURIduringthelastinterval.
intThenumberofmillisecondstakentogatherthestatisticsinthislogfile.
ophOperationsperhour.
Table7:ArtixlogmessageargumentsArgumentDescriptionYYYY-MM-DDHH:MM:SSserver=ServerID[operation=Name]count=navg=nmax=nmin=nint=noph=nTable8:OrbixlogmessageargumentsArgumentDescriptionserverTheserverIDoftheprocessthatisloggingthemessage.
operationThenameoftheoperationforCORBAinvocationsortheURIforrequestsonservlets.
countThenumberofoperationsofinvoked(IIOP).
orThenumberoftimesthisoperationorURIwasloggedduringthelastinterval(HTTP).
avgTheaverageresponsetime(milliseconds)forthisoperationorURIduringthelastinterval.
maxThelongestresponsetime(milliseconds)forthisoperationorURIduringthelastinterval.
PerformanceLoggingMessageFormats93SimplelifecyclemessageformatsTheserverwillalsologsimplelifecyclemessages.
Allserverssharethefollowingcommonformat.
minTheshortestresponsetime(milliseconds)forthisoperationorURIduringthelastinterval.
intThenumberofmillisecondstakentogatherthestatisticsinthislogfile.
ophOperationsperhour.
Table8:OrbixlogmessageargumentsArgumentDescriptionYYYY-MM-DDHH:MM:SSserver=ServerIDstatus=CurrentStatusTable9:SimplelifecyclemessageformatsargumentsArgumentDescriptionserverTheserverIDoftheprocessthatisloggingthemessage.
statusAtextstringdescribingthelastknownstatusoftheserver(forexample,starting_up,running,shutting_down).
CHAPTER4|EnterprisePerformanceLogging94RemotePerformanceLoggingOverviewTheperformanceloggingplug-inscanbeconfiguredtologdatatoalocalfileortoaremoteendpoint.
Dependingonyourspecificarchitecture,itmightnotalwaysbedesirableorfeasibletodeploytherequiredmanagementtoolsonaparticularplatform(forexample,onz/OS).
Inthiscase,itwouldnotbeappropriatetopersisttheperformanceloggingdatatoalocalfile,becausetherewouldbenolocalapplicationtoconsumeit.
Insomesituations,NFSorasimilarfilesharingmechanismmightbeusedtopersistdataacrossyourdistributedsystem.
However,securityandperformanceconcernsoftenpreventtheuseofsuchprotocols.
Insuchcases,Artixprovidesaremoteloggingfacilityforthepurposesofsendingloggingdatatoaremoteendpointwherethedatacanbepersistedandsubsequentlyconsumedbyanapplicationthatisnativetothatremotesystem.
ComponentsofaremoteloggingframeworkThecomponentsofaremoteloggingframeworkareasfollows:Theperformanceloggingcollectorplug-inrunswithinadeployedapplicationonthesourcehost.
Thisisthehostthatsendsitsloggingdatatoaremoteendpoint.
ThecollectorisconfiguredtoharvesttherequiredperformanceloggingdataandtowritethisdatatoaremoteCORBAendpoint(insteadof,forexample,toalocalfileonthesourcehost).
TheremoteloggerdaemonisanArtixapplicationthatisdeployedontheremotetargethost.
Itloadstheremotelogreceiverservant,whichisacceptstheperformanceloggingdatafromthesourceapplicationsandlogsthisdatatoalocalfileonthetargethost.
TheEMScomponent(forexample,aTivoliorBMCPatrolagent)runsontheremotetargethost.
Itconsumesthedatafromthefileandpropagatestheperformanceinformationtothecentralizedregionmanager.
Note:RemoteloggingisonlysupportedintheC++versionoftheperformanceloggingcollectorplug-in.
RemotePerformanceLogging95Figure1showshowremoteloggingworksinArtix.
Figure1:RemoteLoggingFrameworkCHAPTER4|EnterprisePerformanceLogging96DeployingaremoteloggerdaemonAsexplainedin"Componentsofaremoteloggingframework"onpage94,theremoteloggerdaemonloadstheremotelogreceiverservant,whichacceptstheperformanceloggingdatafromthesourceapplication(s),andlogsthisdatatoalocalfileonthetargethost.
Youmaydeploytheremoteloggerplug-ininanyArtixapplication.
Theremoteloggerplug-inshouldbedeployedinastandalonecontainerwhosesolepurposeistologdatafromoneormoresourceapplications.
ThelocalfileontheremotehostcanthenbeconsumedbytheEMSagentrunningonthathost,orusedaspartofsomecustom-madesolution.
PointstonoteThefollowingpointsshouldbenoted:IIOPisusedforthedatacommunicationbetweenthecollectorandtheremoteloggerdaemon.
Thisaddsverylowoverheadtotheloggingpayload,becauseitusesabinaryprotocolonthewire(CDR).
Tosecurethemessagetransfer,IIOP/TLScanbeusedfordatacommunicationbetweenthecollectorandtheremoteloggerdaemon.
Thetimestampsembeddedintheremoteloggingdataarelocalizedtothespecificsourcesystemonwhichthemonitoredapplicationisrunning.
Youmustensurethatthesystemclocksonallparticipatingsystemsaresynchronizedtoanacceptablelevel,asgovernedbyyourEMSoryourcustom-madesolution.
ConfiguringRemotePerformanceLogging97ConfiguringRemotePerformanceLoggingOverviewThissectionexplainshowtoconfigureremotelogging,whichenablesyoutosendloggingdatatoaremoteendpointonanotherhostratherthantoalocalfile.
ConfiguringtheRemoteLoggerDaemonToconfiguretheremoteloggerdaemonthatrunsontheremotetargethost,addthefollowingconfigurationscopeandsettingstotheArtixconfigurationdomain:…remote_logger_daemon{orb_plugins=["local_log_stream","remote_log_receiver"];event_log:filters=["IT_MGMT_LOGGING=*"];plugins:remote_log_receiver:log_filename="/var/logs/remote_perflogs.
txt";plugins:remote_log_receiver:ior_filename="/var/publish/logger_ref.
txt";plugins:remote_log_receiver:iiop:addr_list=["host:port"];plugins:remote_log_receiver:prerequisite_plugins=["iiop_profile","giop","iiop"];};…Note:YoumayaddthisconfigurationscopedirectlytoyourArtixconfigurationdomaininartix.
cfg,oryoumaycreateaseparateconfigurationfilethatincludesartix.
cfg.
CHAPTER4|EnterprisePerformanceLogging98RemoteloggingconfigurationsettingsThesettingsfortheremote_log_receiverplug-inareexplainedasfollows:TLSsecurityIfyouareusingTLSsecurity:Ensurethatyoureplacetheplugins:remote_log_receiver:iiop:addr_listconfigurationitemwithplugins:remote_log_receiver:iiop_tls:addr_list.
Ensurethattheplugins:remote_log_receiver:prerequisite_pluginsconfigurationitemlists"iiop_tls"ratherthan"iiop".
RunningtheremoteloggerdaemonToruntheremoteloggerdaemon,runtheArtixcontainerasfollows:plugins:remote_log_receiver:log_filenameThisisthelocalfileontheremotehosttowhichalllogsaredirected.
plugins:remote_log_receiver:ior_filenameWhentheremoteloggerdaemonisstarted,itwritesastringifiedInteroperableObjectReference(IOR)tothefilespecifiedbythisconfigurationitem.
ThisIORmaybesubsequentlymadeavailabletothesourceapplicationsthatareactingasclientsoftheremotelogger.
However,thisisnotrequiredifthesourceapplicationsuseacorbalocURLratherthananIORtocontacttheremotelogger.
plugins:remote_log_receiver:iiop:addr_listThisspecifiesthehostnameorIPaddressofthehostonwhichtheremoteloggerisrunning,andtheportthatitusestolistenforloggingrequests.
plugins:remote_log_receiver:prerequisite_pluginsThismustspecifytheIIOPplug-insthattheremoteloggerneedsforcommunicationwiththesourcehost(s).
it_container-ORBnameremote_logger_daemonNote:Thisisassumingthattherelevantconfigurationscopeiscalledremote_logger_daemon.
ConfiguringRemotePerformanceLogging99ConfiguringadeployedapplicationonthesourcehostYoumustalsoconfigureyourdeployedapplicationtouseperformanceloggingwiththeremoteloggercapability.
Forthepurposesofillustration,itdescribesthestepsthatarerequiredtoconfigureanArtixforz/OSapplication.
ConfigurationstepsToenableadeployedapplication(forexample,onz/OS)touseperformanceloggingwiththeremoteloggercapability:1.
Ensurethattheremoteloggerdaemonhasbeenconfiguredcorrectlyanddeployedonthetargethost,asdescribedin"ConfiguringtheRemoteLoggerDaemon"onpage97.
2.
Opentheconfigurationdomainforyourdeployedapplication(bydefault,thisisartixhlq.
CONFIG(ARTIX)forArtixforz/OSapplications).
3.
Gototheappropriateconfigurationscopeforyourapplication.
4.
Addit_response_time_loggertotheendoftheORBplug-inslistsetting.
Also,ensurethatIIOPisenabledfortheapplication,forexample:5.
Addit_response_time_loggertotheserverbindinglistfortheapplication.
Forexample:orb_plugins=["local_log_stream","iiop_profile","giop","iiop",…,"it_response_time_logger"];Note:Ensurethatyouhaveamanagementlicenseavailable.
binding:server_binding_list=["SOAP+it_response_time_logger","it_response_time_logger"];CHAPTER4|EnterprisePerformanceLogging1006.
Addthefollowingcollectorplug-inconfigurationvariables:ExampleoutputThefollowingisexampleoutputfromtheperformancelogontheremotefilesystemwhereanumberofdifferentoperationshavebeenrunagainsttheapplication:#updatethelogevery30secondsplugins:it_response_time_collector:period="30";#theidoftheserverforthelogoutputplugins:it_response_time_collector:server-id="server-id";#theremoteendpointdetails:plugins:it_response_time_collector:remote_logging_enabled="true";initial_references:IT_PerfLoggingReceiver:reference="corbaloc:iiop:1.
2@remote_host:1234/IT_PerfLoggingReceiver";Note:Ensurethattheserver-idvalueisreplacedwiththeactualserverIDforthelogoutput(forexample,cics-server-adapter-1).
2006-10-1810:08:22server=cics-server-adapter-1status=starting_up2006-10-1810:08:22server=cics-server-adapter-1status=running2006-10-1810:08:52server=cics-server-adapter-1status=running2006-10-1810:09:22server=cics-server-adapter-1status=running2006-10-1810:09:22server=cics-server-adapter-1[operation=test_bounded]count=1avg=110max=110min=110int=30001oph=1192006-10-1810:09:22server=cics-server-adapter-1[operation=test_unbounded]count=1avg=809max=809min=809int=30001oph=1192006-10-1810:09:52server=cics-server-adapter-1status=running2006-10-1810:09:52server=cics-server-adapter-1[operation=call_me]count=1avg=793max=793min=793int=29998oph=1202006-10-1810:10:22server=cics-server-adapter-1status=running2006-10-1810:10:22server=cics-server-adapter-1[operation=_get_currentMappings]count=1avg=0max=0min=0int=30000oph=1202006-10-1810:10:52server=cics-server-adapter-1status=running2006-10-1810:11:22server=cics-server-adapter-1status=running2006-10-1810:11:52server=cics-server-adapter-1status=running2006-10-1810:12:22server=cics-server-adapter-1status=runningConfiguringRemotePerformanceLogging1012006-10-1810:12:22server=cics-server-adapter-1[operation=resolve]count=1avg=0max=0min=0int=29999oph=1202006-10-1810:12:52server=cics-server-adapter-1status=running2006-10-1810:12:57server=cics-server-adapter-1status=shutdown_started2006-10-1810:12:57server=cics-server-adapter-1status=shutdown_completeCHAPTER4|EnterprisePerformanceLogging102103CHAPTER5UsingArtixwithInternationalCodesetsTheArtixSOAPandCORBAbindingsenableyoutotransmitandreceivemessagesinarangeofcodesets.
InthischapterThischapterincludesthefollowingtopics:IntroductiontoInternationalCodesetspage104WorkingwithCodesetsusingSOAPpage107WorkingwithCodesetsusingCORBApage108WorkingwithCodesetsusingFixedLengthRecordspage111WorkingwithCodesetsusingMessageInterceptorspage114RoutingwithInternationalCodesetspage123CHAPTER5|UsingArtixwithInternationalCodesets104IntroductiontoInternationalCodesetsOverviewAcodedcharacterset,orcodesetforshort,isamappingbetweenintegervaluesandcharactersthattheyrepresent.
ThebestknowncodesetisASCII(AmericanStandardCodeforInformationInterchange).
ASCIIdefines94graphiccharactersand34controlcharactersusingthe7-bitintegerrange.
EuropeanlanguagesThe94charactersdefinedbytheASCIIcodesetaresufficientforEnglish,buttheyarenotsufficientforEuropeanlanguages,suchasFrench,Spanish,andGerman.
Toremedythesituation,an8-bitcodeset,ISO8859-1,alsoknownasLatin-1,wasinvented.
Thelower7-bitportionisidenticaltoASCII.
Theextracharactersintheupper8-bitrangecoverthoselanguagesusedwidelyinWesternEurope.
ManyothercodesetsaredefinedunderISO8859framework.
ThesecoverlanguagesinotherregionsofEurope,aswellasRussian,ArabicandHebrew.
ThemostrecentadditionisISO8859-15,whichisarevisionofISO8859-1.
ThisaddstheEurocurrencysymbolandotherletterswhileremovinglessusedcharacters.
ForfurtherinformationaboutISO-8859-xencoding,seethefollowingwebsite:"TheISO8859AlphabetSoup"(http://wwwwbs.
cs.
tu-berlin.
de/user/czyborra/charsets/).
IdeogramsAsiancountriesthatuseideogramsintheirwritingsystemsneedmorecharactersthanfitinan8-bitinteger.
Therefore,theyinventeddouble-bytecodesets,whereacharacterisrepresentedbyabitpatternof2bytes.
Theselanguagesalsoneededtomixthedouble-bytecodesetwithASCIIinasingletextfile.
So,characterencodingschemas,orsimplyencodings,wereinventedasawaytomixcharactersofmultiplecodesets.
SomeofthepopularencodingsusedinJapaninclude:ShiftJISJapaneseEUCJapaneseISO2022IntroductiontoInternationalCodesets105UnicodeUnicodeisanewcodesetthatisgainingpopularity.
Itaimstoassignauniquenumber,orcodepoint,toeverycharacterthatexists(andevenonceexisted)inalllanguages.
Toaccomplishthis,Unicode,whichbeganasadouble-bytecodeset,hasbeenexpandedintoaquadruple-bytecodeset.
Unicode,inpureform,canbedifficulttousewithinexistingcomputerarchitectures,becausemanyAPIsarebyte-orientedandassumethatthebytevalue0meanstheendofthestring.
Forthisreason,UnicodeTransformationFormatfor8-bitchannel,orUTF-8,isfrequentlyused.
Whenbrowserslist"Unicode"initsencodingselectionmenu,theyusuallymeanUTF-8,ratherthanthepureformofUnicode.
FormoreinformationaboutUnicodeanditsvariants,visitUnicode(http://www.
unicode.
org/).
CharsetnamesToaddresstheneedforcomputernetworkstoconnectdifferenttypesofcomputersthatusedifferentencodings,theInternetAssignedNumberAuthority,orIANA,hasaregistryofencodingsathttp://www.
iana.
org/assignments/character-sets.
IANAnamesareusedbymanyInternetstandardsincludingMIME,HTML,andXML.
Table10listsIANAnamesforsomepopularcharsets.
Table10:IANACharsetNamesIANANameDescriptionUS-ASCII7-bitASCIIforUSEnglishISO-8859-1WesternEuropeanlanguagesUTF-8ByteorientedtransformationofUnicodeUTF-16Double-byteorientedtransformationofUnicodeShift_JISJapaneseDOS&WindowsEUC-JPJapaneseadaptationofgenericEUCscheme,usedinUNIXISO-2022-JPJapaneseadaptationofgenericISO2022encodingschemeCHAPTER5|UsingArtixwithInternationalCodesets106CORBAnamesInCORBA,codesetsareidentifiedbynumericalvaluesregisteredwiththeOpenGroup'sregistry,OSFCodesetRegistry:ftp://ftp.
opengroup.
org/pub/code_set_registry/code_set_registry1.
2g.
txt.
JavanamesJavahasitsownnamesforcharsets.
Forexample,ISO-8859-1isnamedISO8859_1,Shift_JISisnamedSJIS,andUTF-8isnamedUTF8.
JavaistransitioningtoIANAcharsetnames,tobealignedwithMIME.
JDK1.
3andaboverecognizesbothnames.
Note:IANAnamesarecaseinsensitive.
Forexample,US-ASCIIcanbespelledasus-asciiorUS-ascii.
Note:ArtixusesIANAcharsetnamesevenforCORBAcodesets.
WorkingwithCodesetsusingSOAP107WorkingwithCodesetsusingSOAPOverviewBecauseSOAPmessagesareXMLbased,theyarecomposedprimarilyofcharacterdatathatcanbeencodedusinganyoftheexistingcodesets.
Iftheapplicationsinasystemareusingdifferentcodesets,theycannotinterpretthemessagespassingbetweenthem.
TheArtixSOAPplug-inusestheXMLprologueofSOAPmessagestoensurethatitstaysinsyncwiththeapplicationsthatitinteractswith.
MakingrequestsWhenmakingrequestsorbroadcastingamessage,theSOAPplug-indeterminesthecodesettousefromitsArtixconfigurationscope.
YoucansettheSOAPplug-in'scharacterencodingusingtheplugins:soap:encodingconfigurationvariable.
ThistakestheIANAnameofthedesiredcodeset.
ThedefaultvalueisUTF-8.
Formoreinformationonthisconfigurationvariable,seetheArtixConfigurationReference.
ForgeneralinformationonconfiguringArtixapplications,see"GettingStarted"onpage31.
RespondingtoSOAPrequestsWhenanArtixserverreceivesaSOAPmessage,itcheckstheXMLprologuetoseewhatencodingcodesetthemessageuses.
IftheXMLprologuespecifiesthemessage'scodeset,Artixusesthespecifiedcodesettoreadthemessageandtowriteoutitsresponsetotherequest.
Forexample,anArtixserverthatreceivesarequestwiththeXMLprologueshowninExample6decodesthemessageusingUTF-16andencodesitsresponseusingUTF-16.
IfanArtixserverreceivesaSOAPmessagewheretheXMLprologuedoesnotincludetheencodingattribute,theserverwillusewhateverdefaultcodesetisspecifiedinitsconfigurationtodecodethemessageandencodetheresponse.
Example6:XMLPrologueCHAPTER5|UsingArtixwithInternationalCodesets108WorkingwithCodesetsusingCORBAOverviewTheArtixCORBAplug-insupportsbothwidecharactersandnarrowcharacterstoaccommodateanarrayofcodesets.
Italsosupportscodesetnegotiation.
CodesetnegotiationistheprocessbywhichtwoCORBAprocesseswhichusedifferentnativecodesetsdeterminewhichcodesettouseasatransmissioncodeset.
Occasionally,theprocessrequirestheselectionofaconversioncodesettotransmitdatabetweenthetwoprocesses.
Thealgorithmisdefinedinsection13.
10.
2.
6oftheCORBAspecification(http://www.
omg.
org/cgi-bin/apps/docformal/02-12-06.
pdf).
NativecodesetAnativecodeset(NCS)isacodesetthataCORBAprogramspeaksnatively.
ForJAX-RPC,thisisUTF-8(0x05010001)forcharandString,andUTF-16(0x00010109)forwcharandwstring.
ForCandC++,thisistheencodingthatissetbysetlocale(),whichinturndependsontheLANGandLC_xxxxenvironmentvariables.
YoucanconfiguretheArtixCORBAplug-in'snativecodesetsusingtheconfigurationvariableslistedinTable11.
Note:ForCORBAprogramingwithJAX-RPC,youcanspecifyacodesetotherthanthetruenativecodeset.
Table11:ConfigurationVariablesforCORBANativeCodesetConfigurationVariableDescriptionplugins:codeset:char:ncsSpecifiesthenativecodesetfornarrowcharacterandstringdata.
plugins:codeset:wchar:ncsSpecifiesthenativecodesetforwidecharacterandstringdata.
WorkingwithCodesetsusingCORBA109ConversioncodesetAconversioncodeset(CCS)isanalternativecodesetthattheapplicationregisterswiththeORB.
MorethanoneCCScanberegisteredforeachofthenarrowandwideinterfaces.
CCSshouldbechosensothattheexpectedinputdatacanbeconvertedtoandfromthenativecodesetwithoutdataloss.
Forexample,Windowscodepage1252(0x100204e4)canbeaconversioncodesetforISO-8859-1(0x00010001),assumingonlythecommoncharactersbetweenthetwocodesetsareusedinthedata.
YoucanconfiguretheArtixCORBAplug-in'slistofconversioncodesetsusingtheconfigurationvariableslistedinTable12.
TransmissioncodesetAtransmissioncodeset(TCS)isthecodesetagreeduponafterthecodesetnegotiation.
Thedataonthewireusesthiscodeset.
Itiseitherthenativecodeset,oneoftheconversioncodesets,orUTF-8forthenarrowinterfaceandUTF-16forthewideinterface.
NegotiationalgorithmCodesetnegotiationusesthefollowingalgorithmtodeterminewhichcodesettouseintransferringdatabetweenclientandserver:1.
Iftheclientandserverareusingthesamenativecodeset,notranslationisrequired.
2.
Iftheclienthasaconvertertotheserver'scodeset,theserver'snativecodesetisusedasthetransmissioncodeset.
3.
Iftheclientdoesnothaveanappropriateconverterandtheserverdoeshaveaconvertertotheclient'scodeset,theclient'snativecodesetisusedasthetransmissioncodeset.
Table12:ConfigurationVariablesforCORBAConversionCodesetsConfigurationVariableDescriptionplugins:codeset:char:ccsSpecifiesthelistofconversioncodesetsfornarrowcharacterandstringdata.
plugins:codeset:wchar:ccsSpecifiesthelistofconversioncodesetsforwidecharacterandstringdata.
CHAPTER5|UsingArtixwithInternationalCodesets1104.
Ifneithertheclientnortheserverhasanappropriateconverter,theserverORBtriestofindaconversioncodesetthatbothserverandclientcanconverttoandfromwithoutlossofdata.
Theselectedconversioncodesetisusedasthetransmissioncodeset.
5.
Ifnoconversioncodesetcanbefound,theserverORBdeterminesifusingUTF-8(narrowcharacters)orUTF-16(widecharacters)willallowcommunicationbetweentheclientandserverwithoutlossofdata.
IfUTF-8orUTF-16isacceptable,itisusedasthetransmissioncodeset.
Ifnot,aCODESET_INCOMPATIBLEexceptionisraised.
CodesetcompatibilityThefinalstepsinvolveacompatibilitytest,buttheCORBAspecificationdoesnotdefinewhenacodesetiscompatiblewithanother.
ThecompatibilitytestalgorithmemployedinOrbixisoutlinedbelow:1.
ISO8859Latin-ncodesetsarecompatible.
2.
UCS-2(double-byteUnicode),UCS-4(four-byteUnicode),andUTF-xarecompatible.
3.
Allothercodesetsarenotcompatiblewithanyothercodesets.
Thiscompatibilityalgorithmissubjecttochangewithoutnoticeinfuturereleases.
Therefore,itisbesttoconfigurethecodesetvariablesasexplicitlyaspossibletoreducedependencyonthecompatibilityalgorithm.
WorkingwithCodesetsusingFixedLengthRecords111WorkingwithCodesetsusingFixedLengthRecordsOverviewArtixfixedrecordlengthsupportenablesArtixtointeractwithmainframesystemsusingCOBOL.
Forexample,manyCOBOLapplicationssendfixedlengthrecorddataoverWebSphereMQ.
Artixprovidesafixedbindingthatmapslogicalmessagestoconcretefixedrecordlengthmessages.
Thisbindingenablesyoutospecifyattributessuchasencodingstyle,justification,andpaddingcharacter.
EncodingattributeTheArtixfixedbindingprovidesanoptionalencodingattributeforbothitsfixed:bindingandfixed:bodyelements.
Theencodingattributespecifiesthecodesetusedtoencodethetextdata.
ValidvaluesareanyIANAcodesetname.
Seehttp://www.
iana.
org/assignments/character-setsfordetails.
Theencodingattributeforthefixed:bindingelementisaglobalsetting;whilethefixed:bodyattributeisperoperation.
Bothsettingsareoptional.
Ifyoudonotseteither,thedefaultvalueisUTF-8.
Formoredetails,seefixed-binding.
xsd,availableinArtixInstallDir\cxx_java\schemas.
FixedbindingexampleThefollowingWSDLexampleshowsafixedbindingwithencodingattributesforfixed:bodyelements.
Thisbindingincludestwooperations,echoVoidandechoString.
Example7:FixedLengthRecordBindingExample7:FixedLengthRecordBindingWorkingwithCodesetsusingFixedLengthRecords113FurtherinformationFormoredetailsontheArtixfixedlengthbinding,seeArtixBindingsandTransports,C++Runtime.
Example7:FixedLengthRecordBindingCHAPTER5|UsingArtixwithInternationalCodesets114WorkingwithCodesetsusingMessageInterceptorsOverviewArtixprovidessupportforcodesetconversionfortransportsthatdonothavetheirownconceptofheaders.
Forexample,IBMWebsphereMQ,BEATuxedo,andTibcoRendezvous.
ThisgenericsupportisimplementedusinganArtixmessageinterceptorandWSDLportextensors.
Forexample,anArtixC++clientcoulduseArtixMainframetoaccessamainframesystem,usingabindingforfixedlengthrecordoverMQ.
Inthisscenario,anArtixmessageinterceptorcanbeconfiguredtoenablecodesetconversionbetweenASCIIandEBCDIC(ExtendedBinaryCodedDecimalInterchangeCode).
YoucanenablethiscodesetconversionsimplybyeditingyourWSDLfile,orbyusingaccessormethodsinyourapplicationcode.
Thissectionexplainshowtousebothoftheseapproaches.
CodesetconversionattributesThisgenericsupportforcodesetconversionisimplementedusingamessageinterceptor.
Thismessageinterceptormanipulatesthefollowingcodesetconversionattributes:Youcanspecifytheseattributestoconvertclient-siderequestsandserver-sideresponses.
Allthreeattributesareoptional.
Note:CodesetconversionsetinapplicationcodetakesprecedenceoverthesamesettingsinaWSDLfile.
LocalCodeSetSpecifiesthecodesetusedlocallybyaclientorserverapplication.
OutboundCodeSetSpecifiesthecodesetusedbytheapplicationforoutgoingmessages.
InboundCodeSetSpecifiesthecodesetusedbytheapplicationforincomingmessages.
WorkingwithCodesetsusingMessageInterceptors115ConfiguringcodesetconversioninaWSDLfileYoucanconfigurecodesetconversionbysettingthecodesetconversionattributesinaWSDLfile.
Example8showsthecontentsoftheArtixinternationalizationschema(i18n-context.
xsd).
Example8:Artixi18nSchemaI18nClientContextInformationCHAPTER5|UsingArtixwithInternationalCodesets116TheArtixinternationalizationmessageinterceptorusesthisschemaasaportextensor.
ThisenablesyoutoconfigurecodesetconversionattributesinaWSDLfile.
Client/serverWSDLexampleThefollowingexampleshowscodesetconversionsettingsforaclientandaserverapplicationspecifiedinasampleWSDLfile:I18nServerContextInformationExample8:Artixi18nSchemaExample9:i18nSpecifiedinaWDSLFileWorkingwithCodesetsusingMessageInterceptors117ThissampleWSDLfileshowsasingleservicenamedI18nService,withtwobindingsandtwoportsnamedI18nFIXED_HTTPPortandI18nFIXED_MQPort.
Thebindinginbothcasesisfixedlengthrecord,eachwithasingleoperation.
Example9:i18nSpecifiedinaWDSLFileCHAPTER5|UsingArtixwithInternationalCodesets118EnablingcodesetconversioninapplicationcodeYoucanalsoenablecodesetconversionattributesbycallingthefollowingaccessormethodsinyourC++applicationcode:AnArtixContextContainerinthemessageinterceptor,andtheWSDLconfigurationarecheckedforeachattribute.
Thisisperformedduringtheclient'sintercept_invoke()methodandtheserver'sintercept_dispatch()method.
Theclientrequestbufferorserverresponsebuffercanbeconvertedtoanotherencodingasneeded.
Thisconversioncanoccurontheoutboundorinboundinterceptpoints.
Theinterceptorreferstothecurrentcontextonaper-threadbasis.
FordetailedinformationonArtixcontexts,seeDevelopingArtixApplicationswithC++.
LinkingwiththecontextlibraryThemessageinterceptorusesacommontypelibraryofArtixcontextattributes.
Theapplicationmustbelinkedwiththiscommonlibrary,andwithanytransportsthatusethiscontexttosetorgetattributes.
Thegeneratedheaderfilesforthiscommonlibraryareavailableinthefollowingdirectory:Youmustensurethatyourapplicationlinkswiththecontextlibrarythatcontainsthegeneratedstubcodefori18n-context.
xsd.
voidsetLocalCodeSet(constIT_Bus::String*val);voidsetLocalCodeSet(constIT_Bus::String&val);voidsetOutboundCodeSet(constIT_Bus::String*val);voidsetOutboundCodeSet(constIT_Bus::String&val);voidsetInboundCodeSet(constIT_Bus::String*val);voidsetInboundCodeSet(constIT_Bus::String&val);ArtixInstallDir\include\it_bus_pdk\context_attrsWorkingwithCodesetsusingMessageInterceptors119ClientcodeexampleExample10showsanexampleofthecodethatyouneedtoaddtoyourC++clientapplication:Example10:Accessingi18ninC++ClientCodevoidI18nTest::echoString(I18nBaseClient*client,constString&instr){Stringoutstr;try{//Setthei18nrequestcontexttomatchthefixedbindingencodingsettingIT_Bus::Bus_varbus=client->get_bus();ContextRegistry*reg=bus->get_context_registry();ContextCurrent&cur=reg->get_current();ContextContainer*registered_ctx=cur.
request_contexts();AnyType&i18n_ctx_info=registered_ctx->get_context(IT_ContextAttributes::I18N_INTERCEPTOR_CLIENT_QNAME,true);ClientConfiguration&i18n_ctx_cfg=dynamic_cast(i18n_ctx_info);//SettheInboundcodesettomatchthebindingencodingstaticconstStringLOCAL_CODE_SET="ISO-8859-1";i18n_ctx_cfg.
setLocalCodeSet(LOCAL_CODE_SET);constString&local_codeset=(*i18n_ctx_cfg.
getLocalCodeSet());client->echoString(instr,outstr);//Readthei18nreplycontextregistered_ctx=cur.
reply_contexts();AnyType&i18n_ctx_reply_info=registered_ctx->get_context(IT_ContextAttributes::I18N_INTERCEPTOR_CLIENT_QNAME,true);constClientConfiguration&i18n_ctx_reply_cfg=dynamic_cast(i18n_ctx_reply_info);CHAPTER5|UsingArtixwithInternationalCodesets120ServercodeexampleExample10showsexampleofthecodethatyouneedtoaddtoyourC++servantapplication.
constString*local_codeset_reply=i18n_ctx_reply_cfg.
getLocalCodeSet();constString*outbound_codeset_reply=i18n_ctx_reply_cfg.
getOutboundCodeSet();constString*inbound_codeset_reply=i18n_ctx_reply_cfg.
getInboundCodeSet();if(local_codeset_reply)coutc_str()c_strc_str()get_context_registry();ContextCurrent&cur=reg->get_current();ContextContainer*registered_ctx=cur.
request_contexts();AnyType&i18n_ctx_info=registered_ctx->get_context(IT_ContextAttributes::I18N_INTERCEPTOR_SERVER_QNAME,false);constServerConfiguration&i18n_ctx_cfg=dynamic_cast(i18n_ctx_info);constString*local_codeset=i18n_ctx_cfg.
getLocalCodeSet();constString*outbound_codeset=i18n_ctx_cfg.
getOutboundCodeSet();constString*inbound_codeset=i18n_ctx_cfg.
getInboundCodeSet();if(local_codeset)coutc_str()c_str()c_str()get_context(IT_ContextAttributes::I18N_INTERCEPTOR_SERVER_QNAME,true);ServerConfiguration&i18n_reply_ctx_cfg=dynamic_cast(i18n_reply_ctx);//SetthelocalcodesettomatchthebindingencodingstaticconstStringLOCAL_CODE_SET="ISO-8859-1";i18n_reply_ctx_cfg.
setLocalCodeSet(LOCAL_CODE_SET);String&set_local_context=(*i18n_reply_ctx_cfg.
getLocalCodeSet());assert(set_local_context==LOCAL_CODE_SET);}Example11:Accessingi18ninC++ServerCodeCHAPTER5|UsingArtixwithInternationalCodesets122ArtixconfigurationsettingsFinally,youmustalsoenablethei18nmessageinterceptorinyourartix.
cfgfile.
Example12showstherequiredsettings:FurtherinformationFormoreinformationdetailsonwritingArtixC++applicationsandonArtixcontexts,seeDevelopingArtixApplicationswithC++.
catch(IT_Bus::ContextException&ex){coutservicens:SimpleServiceServiceit_simple_service_cpp_bus_pluginCxxwsdd-service{http://www.
iona.
com/test}CustomService-pluginNametestplugin-pluginTypeCxxwsdd-serviceQName-pluginNamePluginName-pluginTypeCxx[-pluginImplLibrary/ClassName][-pluginDirDir][-wsdlurlWsdlLocation][-providerProviderNamespace][-fileOutputFile][-dOutputDir][-h][-v][-verbose][-quiet]GeneratingaPlug-inandDeploymentDescriptor137Thefollowingargumentsarerequired:Thefollowingargumentsareoptional:Table13:RequiredArgumentstowsdd-serviceQNameSpecifiesthenameofaservicetobedeployed.
-pluginNamePluginNameSpecifiesthenamethataplug-inisregisteredas.
-pluginTypeCxxSpecifiestheplug-intype.
Table14:OptionalArgumentstowsdd-pluginImplLibrary/ClassNameSpecifiesalibraryname(.
dll/.
so)foraC++plug-in.
-pluginDirDirSpecifiesthelocationwhereplug-inlibrary/classesarelocated.
Thisoption,ifspecified,hasnoeffectondeployment.
-wsdlurlWsdlLocationSpecifiesaURLtoaserviceWSDL.
-providerProviderNamespaceSpecifiestheprovidernamespace.
Usedinthecontainer/deploy_routesdemo.
Forexample,thiscanbeusedbyplug-instoprovideservantimplementationsformorethanoneservice.
-fileOutputFileSpecifiesthenameofthegenerateddescriptorfile.
ThedefaultisdeployserviceLocalName.
Forexample,if-service{http://www.
iona.
com/test}CustomServiceisused,itisdeployCustomService.
xml-dOutputDirThelocationwhereadescriptorshouldbegenerated.
-h[elp]Displaysdetailedhelpinformationforeachoption.
-v[ersion]Displaystheversionofthetool.
-verboseDisplaysoutputinverbosemode.
CHAPTER6|DeployingServicesinanArtixContainer138AddingbusinesslogicForC++applications,youmuststilladdyourbusinesslogiccodetotheservantimplementationclass.
ThesuppliedArtixdemosincludeafullyimplementedservantfileinsteadofthegeneratedfile.
ArtixdeploymentdescriptorsAswellashostinguser-definedservices,anArtixcontainercanbeusedtohostArtixservicessuchasthelocator.
Thefollowingisanexamplegenerateddeploymentdescriptorforthelocatorservice:Fordetailsondeployingalocatorinthecontainer,seetheArtixLocatorGuide.
-quietDisplaysoutputinquietmode.
Table14:OptionalArgumentstowsddservicens:SimpleServiceServiceit_simple_service_java_bus_pluginJavacom.
iona.
bus.
tests.
SimpleServiceServicePluginFactoryRunninganArtixContainerServer139RunninganArtixContainerServerOverviewAnArtixcontainerserverisanArtixservermainlinethatinitializesanArtixbus,andloadsanArtixcontainerservice.
Aswellashostingyourownserviceplug-ins,theArtixcontainerservercanalsobeusedtohostArtixservices,suchasthelocator,sessionmanager,router,andsoon.
YoucanrunasmanyinstancesoftheArtixcontainerserverasyourapplicationsrequire.
ThissectionexplainshowtorunanArtixcontainerserverprocessusingtheit_containercommand.
it_containercommandTorunanArtixcontainerserver,usetheit_containercommand.
Thishasthefollowingsyntax:it_container[-s[ervice]Options][-d[aemon]][-p[ort]PortNumber][-publish[-fileFilename]][-deployDeploymentDescriptor][-deployfolder][-envName=Value][-v[ersion]][-h[elp]]-s[ervice]OnWindows,runsthecontainerserverasaWindowsservice.
Withoutthisparameter,itrunsinforeground.
See"RunninganArtixContainerasaWindowsService"onpage152.
-d[aemon]OnUNIX,runsthecontainerserverasadaemoninthebackground.
Withoutthisparameter,itrunsintheforeground.
-p[ort]PortNumberSpecifiestheportnumberforthecontainerservice.
Thereisnodefaultportnumber.
-publish[-fileFilename]SpecifiesthelocationtoexportthecontainerserviceURL.
Bydefault,thisis/ContainerService.
url.
Youcanoverridethedefaultusing-file.
CHAPTER6|DeployingServicesinanArtixContainer140RunningthecontainerserverinthebackgroundOnUNIX,torunacontainerserverinthebackground,usetheit_container-daemoncommand.
Ifthe-daemonoptionisnotspecified,thecontainerserverrunsintheforegroundoftheactivecommandwindow.
ThisoptiondoesnotapplyonWindows.
PublishingthecontainerserviceURLinafileTopublishacontainerserviceURL,usethe-publishoption,forexample:The-publishoptiontellsthecontainerservertopublishthecontainerserviceURLinalocalfile.
ThisURLcanthenbelaterretrievedbytheit_container_admincommand,whichusesittocontactthecontainerservice,andinitializeacontainerserviceclientproxy.
Bydefault,aContainerService.
urlfileiscreatedinthelocaldirectory.
Usethe-fileoptiontooverridethisbehavior.
-deployDescriptorDeploysaserviceusingaspecifieddeploymentdescriptor(forexample,atstartup).
Thisisinsteadofdeployingwiththecontainerservice(see"Usingtheit_container_admincommand"onpage143).
-deployfolderPathSpecifiesthelocationofalocalfoldertostoredeploymentdescriptors.
Thisenablesredeploymentofexistingservicesonrestart(see"DeployingServicesonRestart"onpage148).
-envName=ValueSpecifiesargumentspassedtothecontainerserverprocesssuchasenvironmentvariables(see"Specifyingargumentstothecontainerserver"onpage142).
-v[ersion]Printsversioninformationandexits.
-h[elp]Printsusagesummaryandexits.
it_container-publish-filemy_directory/my_container_service.
urlRunninganArtixContainerServer141RunningthecontainerserveronaspecifiedportTorunacontainerserveronaspecificport,specifythe-portoption,forexample:Thisportisusedforthecontainerservice.
Thisisalsotheportforthewsdl_publishplug-in.
Thecontaineradministrativeclientuseswsdl_publishtogetcontractsforthecontainerserviceandforallotherserviceshostedbythecontainer.
Thisportnumbercanthenbeusedbyacontainerserviceadministrationclientwhencontactingthecontainerserver,forexample:SpecifyingconfigurationtothecontainerserverYoucanrunit_containerwithoutanyconfiguration,andthisissufficientformanysimpleapplications.
However,ifyourapplicationrequiresadditionalsettings,youcanstartit_containerwithcommand-lineconfiguration.
Forsimpleapplications,thecontainerserverloadsanyplug-insthatyouneedtoinstantiateyourservice,soyoudonotnormallyneedtoconfigureaplug-inslist,oranyotherconfiguration.
However,someadvancedfeaturesmayinvolvelaunchingit_containerwithcommand-lineconfiguration.
Thefollowingexampleisfromthe.
.
samples\advanced\locatordemoandshowsrunningthelocatorserviceinthecontainerserver:Inthisexample,thelocatorservicepicksupspecificconfigurationfromitsdemo.
locator.
servicescope.
Formoredetails,seethedemosforthelocator,sessionmanager,androuter.
it_container-port1111it_container-port2222it_container_admin-port1111it_container-BUSnamedemo.
locator.
service-BUSdomain_namelocator-BUSconfig_domains_dir.
.
/.
.
/etc-publish-file.
.
/.
.
/etc/ContainerService.
urlCHAPTER6|DeployingServicesinanArtixContainer142SpecifyingargumentstothecontainerserverYoucanusethe-envoptiontospecifyargumentspassedtothecontainerserverprocessasfollows:AllargumentspassedtothecontainerprocessaresetbeforeBus::init()iscalled.
Forexample,youcanusethe-envoptiontosetenvironmentvariablesasfollows:Youcanspecifythe-envoptionmultipletimestoaddmorethanonechangetotheenvironment,forexample:Seealso"InstallingacontainerasaWindowsservice"onpage154it_container–envfoo=barit_container-envPATH="c:\myApp;%PATH%"it_container–envfoo=bar–envfoo2=bar2–envfoo3=bar3Note:Duetooperatingsystemdependentlimitations,notallenvironmentvariablescanbesetonallplatforms(forexample,LD_LIBRARY_PATHonSolaris).
RunninganArtixContainerAdministrationClient143RunninganArtixContainerAdministrationClientOverviewThissectionexplainshowtousetheArtixcontaineradministrationclienttoperformtaskssuchasdeployingageneratedplug-inintotheArtixcontainerserver,andretrievingaserviceURL.
Itexplainsthefullsyntaxoftheit_container_admincommand,whichisusedtocontroltheArtixcontaineradministrationclient.
Usingtheit_container_admincommandThefullsyntaxfortheit_container_admincommandisasfollows:-deploy-filedd.
xmlDeploysanewserviceintothecontainerserver.
Thisinvolvesloadingaplug-inthatcontainstheserviceimplementation.
YoumustspecifyanArtixdeploymentdescriptorusingthe-fileoption.
-listservicesDisplaysallservicesintheapplication.
Showsthestateofeachservice(forexample,initialized,activated,de-activated,orshuttingdown).
-startservice-service{Namespace}LocalPartRestartsthespecifiedservicethatisvisiblebutdormant,orthathasbeenpreviouslystopped.
-stopservice-service{Namespace}LocalPartStopsthespecifiedrunningservice.
-removeservice-service{Namespace}LocalPartRemovesandundeploysalltraceofthespecifiedservicefromtheapplication.
-publishreference-service{Namespace}LocalPart[-fileFilename]Getsanendpointreferenceforthespecifiedservice.
The-fileoptionpublishesthereferencetoalocalfile.
Thiscanthenbeusedtoinitializeaclientapplication.
CHAPTER6|DeployingServicesinanArtixContainer144-publishwsdl-service{Namespace}LocalPart[-fileFilename]GetstheWSDLforthespecifiedservice.
The-fileoptionpublishestheWSDLtoalocalfile.
Thiscanthenbeusedtoinitializeaclientapplication.
-publishurl-service{Namespace}LocalPart[-fileFilename]GetsanHTTPURLforthespecifiedservicefromwhichyoucanthendownloadtheWSDL.
The-fileoptionpublishestheURLtoalocalfile.
Thiscanthenbeusedtoinitializeaclientapplication.
-shutdown[-soft]Shutsdowntheentireapplication.
The-softoptionshutsdowngracefully.
-portContainerPortContactsthecontainerserveronthespecifiedport.
Thereisnodefaultcontainerport.
See"Runningthecontainerserveronaspecifiedport"onpage141.
Thiscanbeusedwithotheroptionsinsteadof-container.
-hostContainerHostnameContactsthecontainerserveronthespecifiedhost.
Defaultstolocalhostifunspecified.
The-hostoptionisforusewith-portonly.
-containerFile.
urlRunsthespecifiedcontainerservice.
Thiscanbeusedwithotheroptionsinsteadof-portand-host.
-getlogginglevel[-subsystemSubSystem][-service{Namespace}LocalPart]Getsthedynamiclogginglevelforthespecifiedsubsystemorservice.
See"DynamicArtixLogging"onpage72.
-setlogginglevel-subsystemSubSystem-levelLevel[-propagate][-service{Namespace}Localpart]Setsthelogginglevelforaspecifiedsubsystemofaspecifiedservice.
See"DynamicArtixLogging"onpage72.
Note:Bydefault,it_container_adminlooksinthelocaldirectoryfortheContainerService.
urlfile.
Ifthisfileisnotlocal,usethe-containeroption,orthe-portand-hostoptions,tocontactthecontainer.
RunninganArtixContainerAdministrationClient145Deployingthegeneratedplug-inTodeployageneratedplug-inintothecontainerserver,usethe-deployoption,forexample:The-fileoptionspecifiesagenerateddeploymentdescriptor.
Thisliststheservicethatthisplug-incanprovide,theplug-inname,andplug-intype.
Inthisexample,theportableC++plug-inlibrarynameisexpectedtobethesameastheplug-inname.
Thelibraryisexpectedtobelocatedinthe.
.
/plugindirectory.
Whenacontainerserviceloadstheplug-in,itregistersaservantfortheservicethatisdescribedinthedeploymentdescriptor.
GettingserviceWSDLTogettheWSDLforadeployedservicefromthecontainer,usethe-publishwsdloption,forexample:The-publishurloptiongetstheservice'sWSDLcontract.
The-fileoptionpublishestheURLtoalocalfile.
Whentheclientruns,itreadsthepublishedWSDLfromthelocalfile,andusesittoinitializeaclientstub,andcommunicatewithadeployedservice.
Usingthe-publishreference,-publishwsdl,and-publishurloptionsmeansthatyoucanwriteWSDLcontractswithouthard-codedports,andthatyourclientswillstillbeabletocallagainstthem.
it_container_admin-deploy-file.
.
/plugin/deploySimpleServiceService.
xmlit_container_admin-publishwsdl-service{http://www.
iona.
com/bus/demos}WellWisherService-filemy_serviceCHAPTER6|DeployingServicesinanArtixContainer146GettingaserviceURLTogetaURLforadeployedservicefromthecontainerservice,usethe-publishurloption,forexample:The-publishurloptiongetsaURLtotheservice'sWSDLcontract.
The-fileoptionpublishestheURLtoalocalfile.
Whentheclientruns,itreadsthepublishedWSDLURLfromthelocalfile,andusesittoinitializeaclientstub,andthencommunicatewithadeployedservice.
ListingdeployedservicesTodisplayalistoftheservicesinyourapplication,usethe-listservicesoption,forexample:Thisexampleshowstheoutputlistedundertheit_container_admin-listservicescommand.
TheACTIVATEDservicestateindicatesthataserviceisrunningandacceptingrequests.
Inthisexample,the-portoptionisusedtocontactacontainerserverthatwasalreadystartedonport2222.
ServicestatesThepossibleservicestatesareasfollows:it_container_admin-publishurl-service{http://www.
iona.
com/bus/tests}SimpleServiceService-filemy_serviceit_container_admin-port2222-listservices{http://www.
iona.
com/demos/wellwisher}WellWisherServiceACTIVATED{http://www.
iona.
com/demos/greeter}GreeterServiceACTIVATEDNOT_INITIALIZEDServicehasnotyetinitializedanimplementationobjectorworkqueue.
INITIALIZEDAtransientservicestate.
Aserviceremaininginthisstateindicatesthatactivationfailed,andtheservicewasnotremovedfromthebus.
ACTIVATEDServiceimplementationobjectandworkqueuecreated,listeneracceptingrequests.
DEACTIVATEDServicenotacceptingrequests,butstillinmemory,andcanreturntoACTIVATEDstate.
RunninganArtixContainerAdministrationClient147StoppingdeployedservicesTostopacurrentlydeployedservice,usethe-stopserviceoption,forexample:Thisfollowingexampleshowstheoutputfrom-listservicesaftertheservicehasbeenstopped.
TheWellWisherServiceisnowlistedasDEACTIVATED.
SpecifyingconfigurationtotheadministrationclientYoucanrunit_container_adminwithoutanyconfiguration.
Thisissufficientformostsimpleapplications.
However,ifyourapplicationrequiresadditionalsettings,youcanstartit_container_adminwithcommand-lineconfiguration.
Forsimpleapplications,thecontainerserviceloadsanyplug-insthatyouneedtoinstantiateyourservice,soyoudonotnormallyneedtoconfigureaplug-inslist,oranyotherconfiguration.
However,someadvancedfeaturesmayinvolvelaunchingit_container_adminwithcommand-lineconfiguration.
Thefollowingexampleshowsshuttingdownthelocatorserviceusingtheit_container_admin-shutdownoption:Formoredetails,seethedemosforthelocator,sessionmanager,androuter.
SHUTDOWN_PENDINGServicewaitingtocompleteanypendingrequests,butstoppedacceptingnewrequests.
SHUTDOWN_COMPLETEServiceworkqueuestopped,andunloadedfrommemory.
it_container_admin-port2222-stopservice-service{http://www.
iona.
com/demos/wellwisher}WellWisherServiceit_container_admin-port2222-listservices{http://www.
iona.
com/demos/wellwisher}WellWisherServiceDEACTIVATED{http://www.
iona.
com/demos/greeter}GreeterServiceACTIVATEDit_container_admin-BUSdomain_namelocator-BUSconfig_domains_dir.
.
/.
.
/etc-container.
.
/.
.
/etc/ContainerService.
url-shutdownCHAPTER6|DeployingServicesinanArtixContainer148DeployingServicesonRestartOverviewTheArtixcontainercanbeconfiguredtoretaininformationabouttheserviceplug-insthatithasdeployed.
Thisenablesittoreloadservicesautomaticallyonrestart.
Thisabilitytorememberdeployedservicesisknownaspersistentdeployment.
Toenablepersistentdeployment,youmustconfigurethecontainertousealocalfoldertostoredeploymentdescriptors.
Thesedescriptorsspecifywhatthecontainershoulddeployatstartup.
Thecontainerensuresthatthisfolderaccuratelyreflectswhatisdeployedincaseofarestart.
HowitworksToreloadservicesthathavebeendeployedbythecontainerservicebeforeshutdown,thecontainerpersistsalldeploymentdescriptorswhenprocessingnewdeploymentrequests.
Thecontainerneedstoknowthelocationofalocalfolderwheredeploymentdescriptorfilesaresavedto,andwheretoreadthemfromonrestart.
Thecontainerfindsthelocationofthisfolderfromeither:Acommand-lineargumentpassedtothecontainer.
Aconfigurationvariableinanartix.
cfgfile.
Atstartup,thecontainerlooksintheconfigureddeploymentfolderanddeploysthecontentsofthefolder.
Itdeploysallservicesthatitfindsinthefolderwherepossible.
Ifanydeploymentfails,thecontainerfailstostart.
Note:Thecommand-lineargumentstakeprecedenceovertheconfigurationvariables.
DeployingServicesonRestart149PersistentdeploymentmodesYoucanconfigurethedeploymentdescriptorfolderforeitherread/writeorread-onlydeployment.
Dynamicread/writedeploymentInthiscase,thecontaineraddsandremovesfilesfromthedeploymentfolderdynamicallyasservicesaredeployedorremovedfromthecontainer.
Whenacalltodeployaserviceismade,adescriptorfileisaddedtothefolder.
Whenacalltoremoveaserviceismade,adescriptorfileisremoved,andtheserviceisnotredeployeduponrestart.
Read-onlydeploymentThedeploymentdescriptorfoldercanalsobeusedasaread-onlyinitializationfolderthatpredeploysthesamerequiredsetofservicesaftereveryrestart.
Whenadeploymentfolderisread-only,thecontainerpredeploysthesamesetofservicesonrestart.
Nodeploymentdescriptorsareremovedfrom,orsavedinto,areadonlydeploymentfolderbythecontainer.
Bymakingadeploymentfolderread-only,youcansharedeploymentdescriptorsbetweenmultiplecontainerinstances.
Inthisscenario,youcanenableasinglecontainerinstancetomodifythecontentsofthisfolder,andallcontainerinstancesareaffectedafterrestart.
Enablingdynamicread/writedeploymentYoucanenablearead/writedeploymentfolderusingthefollowingcommand-linearguments:Alternatively,youcansetthefollowingvariableinaconfigurationfile:Thismeansthatthe.
.
/etcfolderisusedforpredeployingservicesandpersistingnewdescriptors.
it_container-deployfolder.
.
/etcplugins:container:deployfolder=".
.
/etc";CHAPTER6|DeployingServicesinanArtixContainer150Enablingread-onlydeploymentYoucanenablearead-onlydeploymentfolderusingthefollowingcommand-linearguments:Alternatively,youcansetthefollowingvariablesinaconfigurationfile:Thismeansthatthe.
.
/etcfolderisusedforpredeployingservicesonly.
PredeployingaserviceonstartupTheit_containercommandalsoprovidesa-deployargument,whichcanbeusedtopredeployasingleserviceonstartup,forexample:The-deployand-deployfolderargumentscanbeusedtogether,forexample:ThismeansthatMyServiceidentifiedbydeployMyService.
xml,andallservicesidentifiedbydescriptorsinthe.
.
/etcfolder,aredeployed.
ThedeployMyService.
xmlthatisspecifiedusingthe-deployargumentisnotcopiedintoadeploymentfolder.
Ifyouwishtocopyadescriptortothedeploymentfolder,usethefollowingcommand:NamingconventionsTheArtixcontainerusesthefollowingformatwhenpersistingdeploymentdescriptorsintofiles:Youshouldfollowthesamepatternwhengeneratingcustomdescriptorswherepossible.
Thecontainerexpectsthatallfilesinthedeploymentfolderthathavethe.
xmlextensionarevaliddeploymentdescriptors.
it_container-deployfolder-readonly.
.
/etcplugins:container:deployfolder=".
.
/etc";plugins:container:deployfolder:readonly="true";it_container-deploydeployCORBAService.
xmlit_container-deploydeployMyService.
xml-deployfolder.
.
/etcit_container_admin-deploy-filedeployMyService.
xml-deployfolder-deployfolder.
.
/etcdeployLocalServiceName.
xmlDeployingServicesonRestart151Bydefault,deploymentdescriptorsgeneratedbyArtixtoolsusethenameoftheservice'slocalpart.
Ifyouhavetwoserviceswiththesamelocalpartbutdifferentnamespaces,youshouldusethewsdd-fileoptiontoavoidthenameclashing.
Formoredetails,see"Usingwsdd"onpage136.
RemovingaserviceWhenusingaread/writedeploymentfolder,youcanremoveaservicebycallingit_container_admin-removeserviceonarunningcontainer.
Forexample:Alternatively,youcanremovethedeploymentdescriptorfilefromthefolder.
Bothoftheseapproachesensurethatthecontainerdoesnotreloadtheserviceatstartup.
Whenusingaread-onlyfolder,removingaserviceusing-removeservicedoesnotpreventitfrombeingredeployedafterarestart.
Onlyremovingadescriptorfilefromthefolderpreventsitfrombeingredeployed.
WarningsandexceptionsItispossiblethatusingdifferentdescriptorsmightleadtothecontainerattemptingtodeploythesameservicetwice.
Inthiscase,thecontainerlogsawarningmessageandproceedswithdeployingotherservices.
Anexceptionisthrownifanattempttodeploythesameserviceismadefromanadministrationconsole.
FurtherinformationForaworkingexampleofpersistentdeployment,seethefollowingArtixdemo:.
.
.
/samples/advanced/container/deploy_pluginit_container_admin-removeservice-service{http://www.
iona.
com/bus/tests}SimpleServiceServiceNote:Copyingorremovingfilesfromthedeploymentfolderhasnoimpactifthecontainerisalreadyrunning.
Thecontainercannotreacttotheseevents.
Thecontentsofthefolderisreadonceatstartup.
Thisonlyappliestoservicesthatarestartedusingdeploymentdescriptors.
CHAPTER6|DeployingServicesinanArtixContainer152RunninganArtixContainerasaWindowsServiceOverviewOnWindows,youcaninstallinstancesofanArtixcontainerserverasaWindowsservice.
Bydefault,thismeansthattheinstalledcontainerwillstartupwhenyoursystemrestarts.
ThisfeaturealsoenablesyoutomanagethecontainerusingtheWindowsservicecontrols.
Forexample,youcanstartorstopacontainerusingtheWindowsControlPanel,orWindowsnetcommands,suchasnetstopServiceName.
FormatofservicenamesWhenacontainerisinstalledasaWindowsservice,thecontainernametakesthefollowingformatintheWindowsregistry:Forexample,ifyoucallyourservicetest_service,thenamegeneratedbytheinstallcommandthatappearsintheregistryis:Thisnameisstoredunderthefollowingentryintheregistry:SettingyourenvironmentvariablesBeforeinstallingtheArtixcontainerasaWindowsservice,youmustensurethatyoursystemenvironmentvariableshavebeensetcorrectly,andthatyourmachinehasrebooted.
ThesestepscanbeperformedeitherwheninstallingArtix,oratanytimepriortoinstallingthecontainerasaWindowsservice.
Yourenvironmentvariablesenablethecontainertofindalltheinformationitneedsonrestart.
Theymustbesetasfollows:ITArtixContainerServiceNameITArtixContainertest_serviceHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ServicesRunninganArtixContainerasaWindowsService153EnvironmentVariableSettingIT_PRODUCT_DIRYourArtixinstallationdirectory(forexample,c:\artix).
Note:ThisisneededonlyifyourPATHspecifies%IT_PRODUCT_DIR%,insteadofthefullpathtoanyArtixdirectories.
PATHShouldincludethefollowing:AnyC++plug-insthatwillbedeployedbythecontainer.
ArtixInstallDir\bin.
TheJRElibraries,JDKInstallDir\jre\binandJDKInstallDir\jre\bin\server.
CLASSPATHShouldincludethefollowing:AnyJAX-RPCplug-insthatwillbedeployedbythecontainer.
Iftheplug-inispackagedinaJAR,youmustlistthe.
jarfile.
If.
classfilesareused,onlythedirectoryneedstobelisted.
TheArtixC++runtimeJAR,ArtixInstallDir\lib\artix-rt.
jarArtixInstallDir\etcYourJDK/JREruntimeJAR(forexample,JDKInstallDir\jre\lib\rt.
jar).
CHAPTER6|DeployingServicesinanArtixContainer154InstallingacontainerasaWindowsserviceToinstallacontainerasaWindowsservice,usetheit_container-serviceinstallcommand:Theseparametersaredescribedasfollows:Inadditiontothese-serviceinstallparameters,thefollowingit_containerparametersalsoapply:it_container-serviceinstall[-BUSParamName[ParamValue]]-displaynameName-svcNameServiceName-BUSParamNameRepresentszeroormore-BUSParamNamecommand-lineoptions(forexample,-BUSlicense_file).
ThesespecifythelocationoftheArtixlicensefile,domainname,configurationdirectory,orArtixbusname.
Thesevaluesmustbespecifiedeitherascommand-lineparametersorenvironmentvariables.
However,specifyingonthecommandlineallowseasierdeploymentofmultipleit_containerinstancesasmultipleWindowsservices.
-displaynameSpecifiesthenamethatisdisplayedintheWindowsServicesdialog(selectStart|Settings|ControlPanel|ApplicationTools|Services).
The-displaynameparameterisrequired.
-svcNameSpecifiestheservicenamethatislistedintheWindowsregistry(selectStart|Run,andtyperegedit).
The-svcNameparameterisrequired.
-portSpecifiestheportthatthecontainerwillrunon(see"Runningthecontainerserveronaspecifiedport"onpage141).
Thisparameterisrequired.
-deployfolderSpecifiesalocalfoldertostoredeploymentdescriptors.
Thisenablesredeploymentonstartup(see"DeployingServicesonRestart"onpage148).
Thisparameterisoptional.
-envName=ValueSpecifiesargumentspassedtothecontainerprocess,whicharealsopassedtotheWindowsservicecommandline.
Forexample,-envPATH="c:\myApp;%PATH%".
See"Specifyingargumentstothecontainerserver"onpage142RunninganArtixContainerasaWindowsService155ExamplecommandThefollowingexampleshowsalltheparametersneededtoinstallacontainerinstanceasaWindowsservice:Ifyoudonotsetyourlicensefile,domainname,andconfigurationdirectory,asenvironmentvariables,youmustsetthemas-BUSParamNameentries(therecommendedapproach).
The-BUSnameparameterisoptional.
ExampleserviceTheinstalledWindowsserviceislistedintheServicesdialog,asshowninFigure4.
it_container-serviceinstall-BUSlicense_filec:\InstallDir\etc\licenses.
txt-BUSconfig_dirc:\InstallDir\etc-BUSdomain_nameartix-displayName"MyTestService"-svcNamemy_test_service-port2222-deployfolderC:\deployed_filesFigure4:InstalledWindowsServiceCHAPTER6|DeployingServicesinanArtixContainer156ClickingonMyTestServicedisplaysthepropertiesshowninFigure5.
Afterrunningtheit_container-serviceinstallcommand,youmuststarttheservicesmanually.
However,whenyourcomputerisrestarted,theinstalledservicesareconfiguredtorestartautomatically.
UninstallingacontainerTouninstallacontainerasaWindowsservice,usetheit_containeruninstallcommand.
Forexample:Figure5:ServicePropertiesit_container-serviceuninstall-svcNameServiceNameit_container-serviceuninstall-svcNamemy_artix_testDebuggingPlug-insDeployedinaContainer157DebuggingPlug-insDeployedinaContainerOverviewWhendevelopingandtestingArtixplug-ins,youmayneedtodebugyourplug-incodewhileitrunsintheArtixcontainer.
ThissectionexplainshowtodebugC++plug-insdeployedinanArtixcontainer.
DebuggingArtixC++plug-insTheeasiestoptionistocreateanemptyprojectinyourdevelopmentenvironment(forexample,MicrosoftVisualC++orSunWorkshop),andsetupadebugsession.
TodebuganArtixC++plug-in,performthefollowingsteps:1.
StartyourdevelopmenttoolfromanenvironmentthatisinitializedforArtix(forexample,ashellthathasalreadyruntheartix_envscript).
2.
Whenconfiguringthedebugsession,providethesamedetailsfortheexecutableandparametersaswhenstartingtheArtixcontainerfromcommandline.
Figure6showsaVisualC++examplebasedontheArtixhello_world_soap_httpdemo.
Figure6:ProjectSettingsinVisualC++CHAPTER6|DeployingServicesinanArtixContainer1583.
Loadtheapplicationplug-insourcecodeintoyourdevelopmentenvironment,andsetthebreakpointsaccordingly.
4.
Startthedebugsession.
OnWindows,usingVisualC++,startingthedebugsessionmayraisetheexceptionshowninFigure7:ThisisbecausetheArtixcontainerexecutabledoesnotcontainanydebuginformation,andasaresult,VisualC++disablesallpreviouslysetbreakpoints.
Whenthecontainerhasstartedinthedebugger,youmayneedtore-enablethebreakpointsintheapplicationcode.
Figure7:VisualC++DebugException159CHAPTER7DeployinganArtixTransformerArtixprovidesanXSLTtransformerservicethatcanbeconfiguredtorunasaservantprocessthatreplacesanArtixserver.
InthischapterThischapterdiscussesthefollowingtopics:TheArtixTransformerpage160StandaloneDeploymentpage164DeploymentasPartofaChainpage167OptionalConfigurationpage170CHAPTER7|DeployinganArtixTransformer160TheArtixTransformerOverviewTheArtixtransformerprovidesameansofprocessingmessageswithoutwritingapplicationcode.
ThetransformerprocessesmessagesbasedonXSLTscriptsandreturnstheresulttotherequestingapplication.
XSLTstandsforExtensibleStylesheetLanguageTransformations.
TheseXLSTscriptscanperformmessagetransformations,suchasconcatenatingtwostringfields,reorderingthefieldsofacomplextype,andtruncatingvaluestoagivennumberofdecimalplaces.
XSLTscriptscanalsobeusedtovalidatedatabeforepassingitontoaWebserviceforprocessing,andanumberofotherapplications.
DeploymentPatternsTheArtixtransformerisimplementedasanArtixplug-in.
Therefore,itcanbeloadedintoanyArtixprocess.
Thismakesitextremelyflexibleinhowitcanbedeployedinyourenvironment.
Ifthespeedofcallsorsecurityisanissue,thetransformercanbeloadeddirectlyintoanapplication.
Ifyouneedtospreadresourcesacrossanumberofmachines,thetransformerplug-incanbeloadedinaseparateprocess.
TherearetwomainpatternsfordeployingtheArtixtransformer:StandalonedeploymentDeploymentaspartofachainStandalonedeploymentThefirstpatternistodeploythetransformerbyitself.
ThisisusefulifyourapplicationisdoingbasicdatamanipulationthatcanbedescribedinanXSLTscript.
Thetransformerreplacestheserverprocessandsavesyouthecostofdevelopingserverapplicationcode.
Thisstyleofdeploymentcanalsobeusefulforperformingdatavalidationbeforepassingrequeststoaserverforprocessing.
TheArtixTransformer161ThemoststraightforwardwaytodeploythetransformeristodeployitasaseparateservantprocesshostedbytheArtixcontainerserver.
Whendeployedinthiswaythetransformerreceivesrequestsfromaclient,processesthemessagebasedonsuppliedXSLTscripts,andreplieswiththeresultsofthescript.
Inthisconfiguration,shownFigure9,thetransformerbecomestheserverprocessintheArtixsolution.
Figure8:ArtixTransformerDeployedasaServantYoucanmodifythedeploymentpatternshowninFigure9byeliminatingtheArtixcontainerserverandhavingyourclientdirectlyloadthetransformer'splug-inasshowninFigure9.
ThissavestheoverheadofmakingcallsoutsideofCHAPTER7|DeployinganArtixTransformer162theclientprocesstoreachthetransformerHowever,itcanreducetheoverallefficiencyofyoursystemifthetransformerrequiresalargeamountofresourcestoperformitswork.
Figure9:ArtixTransformerLoadedbyaClientDeploymentaspartofachainThesecondpatternistodeploytheArtixtransformeraspartofaWebservicechaincontrolledbytheWebservicechainbuilder.
Thisdeploymentisusefulifyouneedtoconnectlegacyclientstoupdatedserverswhoseinterfacesmayhavechangedorareconnectingapplicationsthathavedifferentinterfaces.
Itcanalsobeusefulforarangeofapplicationswheredatatransformationisneededaspartofalargersetofbusinesslogic.
Figure10showsanexampleofthistypeofdeploymentwherethetransformerandthechainbuilderarebothhostedbytheArtixcontainerserver.
Thechainbuilderdirectstherequeststothetransformerwhichtransformsmessages.
Whenthetransformerreturnstheprocesseddata,thechainbuilderthenpassesitontoTheArtixTransformer163theserver.
Inthisexample,theserverreturnstheresultstotheclientwithoutfurtherprocessing,buttheresultscanalsobepassedbackthroughthetransformer.
Neithertheclientnortheserverneedtobeawareoftheprocessing.
Figure10:ArtixTransformerDeployedwiththeChainBuilderYoucouldmodifythisdeploymentpatterninanumberofways,dependingonhowyouallocateresources.
Forexample,youcanconfiguretheclientprocesstoloadthechainbuilderandthetransformer.
Youcanalsoloadthechainbuilderandthetransformerintoseparateprocesses.
CHAPTER7|DeployinganArtixTransformer164StandaloneDeploymentOverviewTodeployaninstanceoftheArtixtransformeryoumustfirstdecidewhatprocessishostingthetransformer'splug-in.
Youmustthenaddthefollowingtotheprocessconfigurationscope:Thetransformerplug-in,xslt.
AnArtixendpointconfigurationtorepresentthetransformer.
Thetransformer'sconfigurationinformation.
Updatingtheorb_pluginslistConfiguringtheapplicationtoloadthetransformerrequiresaddingittotheapplication'sorb_pluginslist.
Theplug-innameforthetransformerisxslt.
Example13showsanorb_pluginslistforaprocesshostingthetransformer.
AddinganArtixendpointdefinitionThetransformerisdefinedasagenericArtixendpoint.
Toinstantiateitasaservant,Artixmustknowthefollowingdetails:ThelocationoftheArtixcontractthatdefinesthetransformer'sendpoint.
Theinterfacethattheendpointimplements.
Thephysicaldetailsofitsinstantiation.
Thisinformationisconfiguredusingtheconfigurationvariablesintheartix:endpointnamespace.
ThesevariablesaredescribedinTable15.
Example13:Plug-inListforUsingXSLTorb_plugins={"xslt","xml_log_stream"};Table15:ArtixEndpointConfigurationVariableFunctionartix:endpoint:endpoint_listSpecifiesalistoftheendpointsandtheirnamesforthecurrentconfigurationscope.
artix:endpoint:endpoint_name:wsdl_locationSpecifiesthelocationofthecontractdescribingthisendpoint.
StandaloneDeployment165ConfiguringthetransformerConfiguringthetransformerinvolvestwostepsthatenableittoinstantiateitselfasaservantprocessandperformitswork.
Configuringthelistofservants.
Configuringthelistofscripts.
ConfiguringthelistofservantsThenameoftheendpointsthatwillbebroughtupastransformerservantsisspecifiedinplugins:xslt:servant_list.
Theendpointidentifierisoneoftheendpointsdefinedinartix:endpoint:endpoint_listentry.
Thetransformerusestheendpoint'sconfigurationinformationtoinstantiatetheappropriateservantsConfiguringthelistofscriptsThelistoftheXSLTscriptsthateachservantusestoprocessrequestsisspecifiedinplugins:xslt:endpoint_name:operation_map.
Eachendpointspecifiedintheservantlisthasacorrespondingoperationmapentry.
TheoperationmapisspecifiedasalistusingthesyntaxshowninExample14.
artix:endpoint:endpoint_name:wsdl_portSpecifiestheportthatthisendpointcanbecontactedon.
Usethefollowingsyntax:[{service_qname}]service_name[/port_name]Forexample:{http://www.
mycorp.
com}my_service/my_portTable15:ArtixEndpointConfigurationVariableFunctionNote:artix:endpoint:endpoint_listmustbespecifiedinthesameconfigurationscope.
Example14:OperationMapSyntaxplugins:xslt:endpoint_name:operantion_map=["wsdlOp1@filename1","wsdlOp2@filename2"wsdlOpN@filenameN"];CHAPTER7|DeployinganArtixTransformer166Eachentryinthemapspecifiesalogicaloperationthatisdefinedintheservice'scontractbyanoperationelement,andtheXSLTscripttorunwhenarequestismadeontheoperation.
YoumustspecifyanXSLTscriptforeveryoperationdefinedfortheendpoint.
Ifyoudonot,thetransformerraisesanexceptionwhentheunmappedoperationisinvoked.
ConfigurationexampleExample15showstheconfigurationscopeofanArtixapplication,transformer,thatloadstheArtixTransformertoprocessmessages.
ThetransformerisconfiguredasanArtixendpointnamedhannibalandthetransformerusestheendpointinformationtoinstantiateaservanttohandlerequests.
Example15:ConfigurationforUsingtheArtixTransformertransformer{orb_plugins=["local_log_stream","xslt"];artix:endpoint:endpoint_list=["hannibal"];artix:endpoint:hannibal:wsdl_location="transformer.
wsdl";artix:endpoint:hannibal:wsdl_port="{http://transformer.
com/xslt}WhiteHat/WhitePort";plugins:xslt:servant_list=["hannibal"]plugins:xslt:hannibal:operation_map=["op1@.
.
/script/op1.
xsl","op2@.
.
/script/op2.
xsl","op3@.
.
/script/op3.
xsl"]}DeploymentasPartofaChain167DeploymentasPartofaChainOverviewDeployingtheArtixTransformeraspartofWebservicechainallowsyoutouseitaspartofanintegrationsolutionwithoutneedingtonecessarilymodifyyourapplications.
TheArtixWebservicechainbuilderfacilitatestheplacementofthetransformerintoaseriesofWebservicecallsmanagedbyArtix.
Theplug-inarchitectureofthetransformerandthechainbuilderallowforyoutodeploythistypeofsolutioninavarietyofwaysdependingonwhatisthebestfitforyourparticularsolution.
Themoststraightforwardwaytodeploythistypeofsolutionistodeployboththetransformerandthechainbuilderintothesameprocess.
ThisisthedeploymentthatwillbeusedtooutlinethestepsforconfiguringthetransformertobedeployedaspartofaWebservicechain.
Ingeneral,youwillneedtocompleteallofthesamestepsregardlessofhowyouchoosetodeployyoursolution.
ProcedureTodeploythetransformeraspartofaWebservicechainyouneedtocompletethefollowingsteps:1.
Modifyyourprocess'sconfigurationscopetoloadthetransformerandthechainbuilder.
2.
ConfigureArtixendpointsforeachoftheapplicationsthatwillbepartofthechain.
3.
ConfigureanArtixendpointtorepresentthetransformer.
4.
Configurethetransformer.
5.
Configuretheservicechaintoincludethetransformerattheappropriateplaceinthechain.
CHAPTER7|DeployinganArtixTransformer168Updatingtheorb_pluginslistConfiguringtheapplicationtoloadthetransformerplug-inandthechainbuilderplug-inrequiresaddingthemtotheprocess'sorb_pluginslist.
Theplug-innameforthetransformerisxsltandtheplug-innameforthechainbuilderisws_chain.
Example16showsanorb_pluginslistforaprocesshostingthetransformerandthechainbuilder.
ConfiguringtheendpointsinthechainTheArtixWebservicechainbuilderusesgenericArtixendpointstorepresentalloftheapplicationsinachain,includingthetransformer.
Table15onpage164showstheconfigurationvariablesusedtoconfigureagenericArtixendpoint.
ConfiguringthetransformerThetransformerrequiresthesameconfigurationinformationregardlessofhowitisdeployed.
Youmustprovideitwiththenameoftheendpointsitwillinstantiatefromthelistofendpointsandprovideeachinstantiationwithanoperationmap.
Formoreinformationaboutprovidingthisinformationsee"Configuringthetransformer"onpage165.
PlacingthetransformerinthechainThechainbuilderinstantiatesaservantforeachendpointspecifiedinitsservantlist.
Eachservantcanhaveamultipleoperations.
ForeachoperationthatwillbeinvolvedinaWebservicechain,youneedtospecifyalistofendpointsandtheiroperationsthatmakeupthechain.
Thislistisspecifiedusingplugins:chain:endpoint_name:operation_name:service_chain.
Toincludethetransformerinoneofthechains,youaddtheappropriateoperationandendpointnamesforthetransformerattheappropriateplaceintheservicechain.
Formoreinformationonconfiguringthechainbuildersee"DeployingaServiceChain"onpage173.
ConfigurationexampleExample17showsaconfigurationscopethatcontainsconfigurationinformationfordeployingthetransformeraspartofaWebservicechain.
Example16:LoadingtheArtixTransformerasPartofaChainorb_plugins={"xslt","ws_chain","xml_log_stream"};DeploymentasPartofaChain169Example17:ConfiguringtheArtixTransformerinaWebServiceChaintransformer{orb_plugins=["ws_chain","xslt"];event_log:filters=["*=FATAL+ERROR+WARNING","IT_XSLT=*"];bus:qname_alias:oldClient="{http://bank.
com}ATM";bus:initial_contract:url:oldClient="bank.
wsdl";bus:qname_alias:newServer="{http://bank.
com}newATM";bus:initial_contract:url:newServer="bank.
wsdl";artix:endpoint:endpoint_list=["transformer"];artix:endpoint:transformer:wsdl_location="bank.
wsdl";artix:endpoint:transformer:wsdl_port="{http://bank.
com}transformer/transformer_port";plugins:xslt:servant_list=["transformer"];plugins:xslt:transformer:operation_map=["transform@transformer.
xsl"];plugins:chain:servant_list=["oldClient"];plugins:chain:oldClient:client_operation:service_chain=["transform@transformer","withdraw@newServer"];};Note:Eventhoughalistofservantscanbespecified,onlyoneservantiscurrentlysupportedinaprocess.
CHAPTER7|DeployinganArtixTransformer170OptionalConfigurationOverviewYoucanalsousethefollowingoptionalconfigurationsettings:"SpecifyinganXSLTtracefilter""Specifyingmessagepartelementnames"SpecifyinganXSLTtracefilterYoucanusetheplugins:xslt:endpoint_name:trace_filtervariabletotraceanddebugtheoutputoftheXSLTengine.
Forexample:Thesesettingsaredescribedasfollows:SpecifyingmessagepartelementnamesYoucanusetheplugins:xslt:endpoint_name:use_element_namevariabletospecifywhethertousethemessagepartelementnameormessagepartnamewhenperformingtransformations.
Thedefaultvalueisfalse,whichmeanstousethemessagepartname.
UsingthemessagepartelementnamematchesthebehaviorofArtixcontent-basedrouting.
Tousethemessagepartelementname,specifythefollowingsetting:plugins:xslt:endpoint_name:trace_filter="INPUT+TEMPLATE+ELEMENT+GENERATE+SELECT";INPUTTracestheXMLinputpassedtotheXSLTengine.
TEMPLATETracestemplatematchesintheXSLTscript.
ELEMENTTraceselementgeneration.
GENERATETracesgenerationoftextandattributes.
SELECTTracesnodeselectionsintheXSLTscript.
plugins:xslt:endpoint_name:use_element_name="true";OptionalConfiguration171ThefollowingWSDLfileextractshowsanexamplemessagepartelementnameandpartname:ThefollowingXSLfileextractshowstheexamplepartelementnamewhenthisvariableissettotrue:Ifthisvariableissettofalse,thepartnameisusedinstead(inthiscase,client_request).
CHAPTER7|DeployinganArtixTransformer172173CHAPTER8DeployingaServiceChainArtixprovidesachainbuilderthatenablesyoutocreateaseriesofservicestoinvokeaspartofalargerprocess.
InthischapterThischapterincludesthefollowingsections:TheArtixChainBuilderpage174ConfiguringtheArtixChainBuilderpage176CHAPTER8|DeployingaServiceChain174TheArtixChainBuilderOverviewTheArtixchainbuilderenablesyoutolinktogetheraseriesofservicesintoamulti-partprocess.
Thisisusefulifyouhaveprocessesthatrequireasetorderofstepstocomplete,orifyouwishtolinktogetheranumberofsmallerservicemodulesintoacomplexservice.
ChainingservicestogetherForexample,youmayhavefourservicesthatyouwishtocombinetoservicerequestsfromasingleclient.
YoucandeployaservicechainliketheoneshowninFigure11.
Figure11:ChainingFourServerstoFormaSingleServiceTheArtixChainBuilder175Inthisscenario,theclientmakesasinglerequestandthechainbuilderdispatchestherequestalongthechainstartingatServer1.
ThechainbuildertakestheresponsefromServer1andpassesthattothenextendpointinthechain,Server2.
ThiscontinuesuntiltheendofthechainisreachedatServer4.
Thechainbuilderthenreturnsthefinishedresponsetotheclient.
ThechainbuilderisimplementedasanArtixplug-insoitcanbedeployedintoanyArtixprocess.
Thedecisionaboutwhichprocessthatyoudeployitindependsonthecomplexityofyoursystem,andalsohowyouchoosetoallocateresourcesforyoursystem.
AssumptionsTomakethediscussionofdeployingthechainbuilderasstraightforwardaspossible,thischapterassumesthatyouaredeployingitintoaninstanceoftheArtixcontainerserver.
However,theconfigurationstepsforconfiguringanddeployingachainbuilderarethesamenomatterwhichprocessyouchoosetodeployitin.
CHAPTER8|DeployingaServiceChain176ConfiguringtheArtixChainBuilderOverviewToconfiguretheArtixchainbuilder,completethefollowingsteps:1.
Addthechainbuilder'splug-intotheorb_pluginslist.
2.
Configurealltheservicesthatareapartofthechain.
3.
Configurethechainsothatitknowswhatservantstoinstantiateandtheservicechainforeachoperationimplementedbytheservant.
Addingthechainbuilderintheorb_pluginslistConfiguringtheapplicationtoloadthechainbuilder'splug-inrequiresaddingittotheapplication'sorb_pluginslist.
Theplug-innameforthechainbuilderisws_chain.
Example18showsanorb_pluginslistforaprocesshostingthechainbuilder.
ConfiguringtheservicesinthechainEachservicethatisapartofthechain,andtheclientthatmakesrequeststhroughthechainservice,mustbeconfiguredinthechainbuilder'sconfigurationscope.
Forexample,youmustsupplytheservicenameandthelocationofitscontract.
Thisprovidesthechainbuilderwiththenecessaryinformationtoinstantiateaservantthattheclientcanmakerequestsagainst.
Italsosuppliestheinformationneededtomakecallstotheservicesthatmakeupthechain.
Example18:Plug-inListforUsingaWebServiceChainorb_plugins={"ws_chain","xml_log_stream"};ConfiguringtheArtixChainBuilder177Toconfiguretheservicesinthechain,usetheconfigurationvariablesinTable16.
ConfiguringtheservicechainsThechainbuilderrequiresyoutoprovidethefollowingdetailsAlistofservicesthatareclientstothechainbuilder.
Alistofoperationsthateachclientcaninvoke.
Servicechainsforeachoperationthattheclientscaninvoke.
SpecifyingtheservantlistThefirstconfigurationsettingtellsthechainbuilderhowmanyservantstoinstantiate,theinterfacesthattheservantsmustsupport,andthephysicaldetailsofhowtheservantsarecontacted.
Youspecifythisusingtheplugins:chain:servant_listvariable.
ThistakesalistofservicenamesfromthelistofArtixservicesthatyoudefinedearlierintheconfigurationscope.
SpecifyingtheoperationlistThesecondpartofthechainbuilder'sconfigurationisalistoftheoperationsthateachclienttothechainbuildercaninvoke.
Youspecifythisusingplugins:chain:endpoint:operation_listwhereendpointreferstooneoftheendpointsinthechain'sservicelist.
plugins:chain:endpoint:operation_listtakesalistoftheoperationsthataredefinedintagsintheendpoint'scontract.
Youmustlistalloftheoperationsfortheendpointoranexceptionwillbethrownatruntime.
Youmustalsobesuretoenteralistofoperationsforeachendpointspecifiedinthechain'sservicelist.
Table16:ArtixServiceConfigurationVariableFunctionbus:qname_alias:serviceSpecifiesaservicenameusingthefollowingsyntax:{service_qname}service_nameForexample:{http://www.
mycorp.
com}my_servicebus:initial_contract:url:serviceSpecifiesthelocationofthecontractdescribingthisservice.
Thedefaultisthecurrentworkingdirectory.
CHAPTER8|DeployingaServiceChain178SpecifyingtheservicechainThethirdpieceofthechainbuilder'sconfigurationistospecifyaservicechainforeveryoperationdefinedintheendpointslistedinplugins:chain:servant_list.
Thisisspecifiedusingtheplugins:chain:endpoint:operation:service_chainconfigurationvariable.
ThesyntaxforenteringtheservicechainsisshowninExample19.
Foreachentry,thesyntaxisasfollows:Example19:EnteringaServiceChainplugins:chain:endpoint:operation:service_chain=["op1@endpt1","op2@endpt2"opN@endptN"];endpointSpecifiesthenameofanendpointfromthechainbuilder'sservantlistoperationSpecifiesoneoftheoperationsdefinedbyanoperationentryintheendpointscontract.
Theentriesinthelistrefertooperationsimplementedbyotherendpointsdefinedintheconfiguration.
opNSpecifiesoneoftheoperationsdefinedbyanoperationentryinthecontractdefiningtheservicespecifiedbyendptN.
Theoperationsintheservicechainareinvokedintheorderspecified.
Thefinalresultisreturnedbacktothechainbuilderwhichthenrespondstotheclient.
ConfiguringtheArtixChainBuilder179InstantiatingproxyservicesThechaininvokesonotherservices,andforthisreason,itinstantiatesproxyservices.
Itcaninstantiateproxieswhenthechainservantstarts(thedefault),orlater,whenacallismade.
Thefollowingconfigurationvariablespecifiestoinstantiateproxyserviceswhenacallismade:Thisdefaultstofalse,whichmeansthatproxiesareinstantiatedwhenthechainservantstarts.
However,youmightnotbeabletoinstantiateproxieswhenthechainservantisstartedbecausetheservanttocallhasnotstarted.
Forexample,thisapplieswhenusingtheArtixlocatororUDDI.
ConfigurationexampleExample17showsthecontentsofaconfigurationscopeforaprocessthathoststhechainbuilder.
plugins:chain:init_on_first_call="true";Table17:ConfigurationforHostingtheArtixChainBuildercolaboration{orb_plugins=["ws_chain"];bus:qname_alias:customer="{http://needs.
com}POC";bus:initial_contract:url:customer="order.
wsdl";bus:qname_alias:pm="{http://ORBSrUs.
com}prioritize";bus:initial_contract:url:pm="manager.
wsdl";bus:qname_alias:designer="{http://ORBSrUs.
com}design";bus:initial_contract:url:designer="designer.
wsdl";bus:qname_alias:builder="{http://ORBSrUs.
com}produce";bus:initial_contract:url:builder="engineer.
wsdl";plugins:chain:servant_list=["customer"];plugins:chain:customer:requestSolution:service_chain=["estimatePriority@pm","makeSpecification@designer","buildORB@builder"];};CHAPTER8|DeployingaServiceChain180ConfigurationguidelinesWhenWebservicesarechained,thefollowingrulesmustbeobeyed:Theinputtypeofthechainservice(inthisexample,customer)mustmatchtheinputofthefirstserviceinthechain(pm).
Theoutputtypeofapreviousserviceinthechainmustmatchtheinputtypeofthenextserviceinthechain.
Theoutputtypeofthelastserviceinthechainmustmatchtheoutputofthechainservice.
OneconfigurationentrymustexistforeachoperationintheportTypeofthechainservice(forexample,customer).
Thissimpleexampleshowsonlyoneentry,andtheportTypeforthecustomerendpointhasonlyoneoperation(requestSolution).
Thechainservicecaninvokeonlyonservicesthathaveoneport.
Finally,notalloperationsmustbeconfiguredinthechain,onlythosethatareinvokedupon.
Thismeansthatnocheckismadewhenalloperationsaremappedtoachain.
Ifaclientinvokesonanunmappedoperation,thechainservicethrowsaFaultException.
181CHAPTER9DeployingHighAvailabilityArtixusesBerkeleyDBhighavailabilitytoprovidesupportforreplicatedservices.
ThischapterexplainshowtoconfigureanddeployhighavailabilityinArtix.
InthischapterThischapterdiscussesthefollowingtopics:Introductionpage182SettingupaPersistentDatabasepage185ConfiguringPersistentServicesforHighAvailabilitypage186ConfiguringLocatorHighAvailabilitypage190ConfiguringClient-SideHighAvailabilitypage193CHAPTER9|DeployingHighAvailability182IntroductionOverviewScalableandreliableArtixapplicationsrequirehighavailabilitytoavoidanysinglepointoffailureinadistributedsystem.
Youcanprotectyoursystemfromsinglepointsoffailureusingreplicatedservices.
Areplicatedserviceiscomprisedofmultipleinstances,orreplicas,ofthesameservice;andtogether,theseactasasinglelogicalservice.
Clientsinvokerequestsonthereplicatedservice,andArtixroutestherequeststooneofthememberreplicas.
Theroutingtoareplicaistransparenttotheclient.
HowitworksArtixhighavailabilitysupportisbuiltonBerkeleyDB,andusesitsreplicationfeatures.
BerkeleyDBhasamaster-slavereplicamodelwhereasinglereplicaisdesignatedthemaster,andcanprocessbothreadandwriteoperationsfromclients.
Allotherreplicasareslavesandcanonlyprocessreadoperations.
Slavesautomaticallyforwardwriterequeststomasters,andmasterspushallupdatesouttoslaves,asshowninFigure12.
Figure12:ArtixMasterSlaveReplicationIntroduction183ElectingamasterUsingArtixhighavailability,whenmembersofareplicatedclusterstartup,theyallstartupasslaves.
Whentheclustermembersstarttalkingtoeachother,theyholdanelectiontoselectamaster.
ElectionprotocolTheprotocolforselectingamasterisasfollows:1.
Foranelectiontosucceed,amajorityofvotesmustbecast.
Thismeansthatforagroupofthreereplicas,tworeplicasmustcastvotes.
Foragroupoffour,threereplicasmustcastvotes;foragroupoffive,threemustcastvotes,andsoon.
2.
Ifaslaveexistswithamoreup-to-datedatabasethantheotherslaves,itwinstheelection.
3.
Ifalltheslaveshaveequivalentdatabases,theelectionresultisbasedontheconfiguredpriorityforeachslave.
Theslavewiththehighestprioritywins.
AftertheelectionWhenamasterisselected,electionsstop.
However,iftheslaveslosecontactwiththemaster,theremainingslavesholdanewelectionformaster.
Ifaslavecannotgetamajorityofvotes,nobodyispromoted.
Atthispoint,thedatabaseremainsasaslave,andkeepsholdingelectionsuntilamastercanbefound.
Ifthisisthefirsttimeforthedatabasetostartup,itblocksuntilthefirstelectionsucceeds,anditcancreateadatabaseenvironmentondisk.
Ifthisisnotthefirsttimethatthedatabasehasstartedup,itstartsasaslave(usingthedatabasefilesalreadyondiskfromitspreviousrun),andcontinuesholdingelectionsinthebackgroundanyway.
Auto-demotionIntheeventofanetworkpartition,bydefault,themasterreplicaisconfiguredtoautomaticallydemoteitselftoaslavewhenitlosescontactwiththereplicacluster.
Thispreventsthecreationofduplicatemasters.
Note:Becausevotingisdonebymajority,itisrecommendedthathighavailabilityclustershaveanoddnumberofmembers.
Therecommendedminimumnumberofreplicasisthree.
CHAPTER9|DeployingHighAvailability184RequestforwardingSlavereplicasautomaticallyforwardwriterequeststothemasterreplicainacluster.
Becauseslaveshaveread-onlyaccesstotheunderlyingBerkeleyDBinfrastructure,onlythemastercanmakeupdatestothedatabase.
Thisfeatureworksasfollows:1.
Whenareplicatedserverstartsup,itloadstherequest_forwarderplug-in.
2.
Whentheclientinvokesontheserver,therequest_forwarderplug-inchecksifitshouldforwardtheoperation,andwheretoforwarditto.
TheserverprogrammerindicateswhichoperationsarewriteoperationsusinganAPI.
3.
Iftheserverisrunningasaslave,ittriestoforwardanywriteoperationstothemaster.
Ifnomasterisavailable,anexceptionisthrowntotheclient,indicatingthattheoperationcannotbeprocessed.
Becausetheforwardingworksasaninterceptorwithinaplug-in,thereisminimalcodeimpacttotheuser.
Noservantcodeisimpacted.
Fordetailsonhowtoconfigurerequestforwarding,see"Specifyingyourorb_pluginslist"onpage187.
SettinguphighavailabilityYoucanconfigureallthenecessarysettingsinanartix.
cfgfile(see"ConfiguringPersistentServicesforHighAvailability"onpage186).
ReplicationissupportedforC++servicedevelopment,andbytheArtixlocator(see"ConfiguringLocatorHighAvailability"onpage190).
MasterandreplicasmustsharesamearchitectureMasterandslavereplicasmustsharethesamearchitecture.
Forexample,ifyouconfigureyourmasterservicetorunona32-bitSparcstationallreplicasmustalsorunona32-bitSparcstation.
SettingupaPersistentDatabase185SettingupaPersistentDatabaseOverviewToenableaserviceabletotakeadvantageofhighavailability,itneedstoworkwithapersistentdatabase.
ThisiscreatedusingaC++API.
Therearenoconfigurationstepsrequired.
TheArtixconfigurationvariablesforpersistentdatabasesaresetwithdefaultvaluesthatshouldnotneedtobechanged.
UsingthePersistenceAPIArtixprovidessetofC++APIsformanipulatingpersistentdata.
Forexample,theC++APIusesthePersistentMaptemplateclass.
Thisclassstoresdataasnamevaluepairs.
ThisAPIisdefinedinit_bus_pdk\persistent_map.
h.
ThisAPIenablesyoutoperformtaskssuchasthefollowing:CreateaPersistentMapdatabase.
InsertdataintoaPersistentMap.
GetdatafromaPersistentMap.
RemovedatafromaPersistentMap.
Formoredetails,seetheDevelopingArtixApplicationsinC++.
FurtherinformationFordetailedinformationontheBerkeleyDBdatabaseenvironment,seehttp://www.
oracle.
com/database/berkeley-db/index.
htmlArtixshipsBerkeleyDB4.
2.
52.
Alternatively,youcandownloadandbuildBerkeleyDBtoobtainadditionaladministrationtools(forexample,db_dump,db_verify,db_recover,db_stat).
CHAPTER9|DeployingHighAvailability186ConfiguringPersistentServicesforHighAvailabilityOverviewForaservicetoparticipateinahighavailabilitycluster,itmustfirstbedesignedtousepersistentmaps("SettingupaPersistentDatabase"onpage185).
However,servicesthatusepersistentmapsarenotreplicatedautomatically;youmustconfigureyourservicetobereplicated.
ConfiguringaserviceforreplicationToreplicateaservice,youmustaddareplicationlisttoyourconfiguration,andthenaddconfigurationscopesforeachreplicatedinstanceofyourservice.
Typically,youwouldcreateascopeforyourreplicacluster,andthencreatesub-scopesforeachreplica.
Thisavoidsduplicatingconfigurationsettingsthatarecommontoallreplicas,andseparatestheclusterfromanyotherservicesconfiguredinyourdomain.
SpecifyingareplicationlistTospecifyaclusterofreplicas,usethefollowingconfigurationvariable:Thistakesalistofreplicasspecifiedusingthefollowingsyntax:Forexample,thefollowingentryconfiguresaclusterofthreereplicasspreadacrossmachinesnamedjimi,noel,andmitch.
plugins:artix:db:replicasReplicaName=HostName:PortNumplugins:artix:db:replicas=["rep1=jimi:2000","rep2=mitch:3000","rep3=noel:4000"];Note:ItisrecommendedthatyousetReplicaNametothesamevalueasthereplica'ssub-scope(see"Configurationexample"onpage188).
ConfiguringPersistentServicesforHighAvailability187Specifyingyourorb_pluginslistBecauseIIOPisusedforcommunicationbetweenreplicas,youmustincludethefollowingplug-insinyourreplica'sorb_pluginslist:iiop_profilegiopiiopInaddition,toenableautomaticforwardingofwriterequestsfromslavetomasterreplicas,includetherequest_forwarderplug-in.
Youmustalsospecifythisplug-inasaserverrequestinterceptor.
Thefollowingexampleshowstherequiredconfiguration:Thisconfigurationisloadedwhenthereplicaservicestartsup.
SpecifyingreplicaprioritiesIneachofthesub-scopesforthereplicas,youmustgiveeachreplicaapriority,andconfiguretheIIOPconnectionusedbythereplicastoconductelections.
Thisinvolvesthefollowingconfigurationvariables:orb_plugins=["xmlfile_log_stream","local_log_stream","request_forwarder","iiop_profile","giop","iiop"];binding:artix:server_request_interceptor_list="request_forwarder";Note:Toenableforwardingofwriterequests,programmersmusthavealreadyspecifiedintheservercodewhichoperationscanwritetothedatabase.
Fordetails,see"Forwardingwriterequests"onpage198.
CHAPTER9|DeployingHighAvailability188ConfigurationexampleThefollowingexampleshowsasimpleexampleinanartix.
cfgfile:plugins:artix:db:prioritySpecifiesthereplicapriority.
Thehighertheprioritythemorelikelythereplicaistobeelectedasmaster.
Youshouldsetthisvariableifyouareusingreplication.
Thereisnoguaranteethatthereplicawiththehighestpriorityiselectedmaster.
Thefirstconsiderationforelectingamasteriswhohasthemostcurrentdatabase.
Note:Settingareplicapriorityto0meansthatthereplicaisneverelectedmaster.
plugins:artix:db:iiop:portSpecifiestheIIOPportthereplicastartson.
Thisentrymustmatchthecorrespondingentryinthereplicalist.
ha_cluster{plugins:artix:db:replicas=["rep1=jimi:2000","rep2=mitch:3000","rep3=noel:4000"];rep1{plugins:artix:db:priority=80;plugins:artix:db:iiop:port=2000;};rep2{plugins:artix:db:priority=20;plugins:artix:db:iiop:port=3000;};rep3{plugins:artix:db:priority=0;plugins:artix:db:iiop:port=4000;};};ConfiguringPersistentServicesforHighAvailability189ConfigurationguidelinesYoushouldkeepthefollowinginmind:Bydefault,theDBhomedirectorydefaultstoReplicaConfigScope_db(forexample,rep1_db),whereReplicaConfigScopeistheinner-mostreplicaconfigurationscope.
Ifthisdirectorydoesnotalreadyexist,itwillbecreatedinthecurrentworkingdirectory.
AllreplicasmustberepresentedbyseparateWSDLportsinthesameWSDLservicecontract.
Bydefault,youshouldspecifytheinner-mostreplicascopeastheWSDLportname(forexample,rep1).
ConfiguringaminoritymasterItisrecommendedthathighavailabilityclustershaveanoddnumberofmembers,andtherecommendedminimumnumberisthree.
However,itispossibletouseaclusterwithtwomembersifyouspecifythefollowingconfiguration:Thisallowsaloneslavetopromoteitselfifitseesthatthemasterisunavailable.
Thisisonlyallowedwhenthereplicaclusterhastwomembers.
Thisvariabledefaultstofalse(whichmeansitisnotallowedbydefault).
Ifitissettotrue,aslavethatcannotreachitspartnerreplicawillpromoteitselftomaster,eventhoughitonlyhasfiftypercentofthevotes(oneoutoftwo).
ConfiguringrequestforwardloggingYoucanalsospecifytooutputloggingfromtherequest_forwarderplug-in.
Todothis,specifythefollowingloggingsubsysteminyoureventlogfilter:plugins:artix:db:allow_minority_master=true;WARNING:Thisvariablemustbeusedwithcaution.
Ifitissettotrue,andthetworeplicasintheclusterbecomeseparatedduetoanetworkpartition,theybothendupasmaster.
Thiscanbeveryproblematicbecausebothreplicascouldmakedatabaseupdates,andresolvingthoseupdateslatercouldbeverydifficult,ifnotimpossible.
event_log:filters=["IT_BUS.
SERVICE.
REQUEST_FORWARDER=INFO_LOW+WARN+ERROR+FATAL"];CHAPTER9|DeployingHighAvailability190ConfiguringLocatorHighAvailabilityOverviewReplicatingthelocatorinvolvesspecifyingthesameconfigurationthatyouwoulduseforotherArtixservices,asdescribedin"ConfiguringPersistentServicesforHighAvailability"onpage186.
However,therearesomeadditionalconfigurationvariablesthatalsoapplytothelocator.
SettinglocatorpersistenceToenablepersistenceinthelocator,setthefollowingvariable:Thisspecifieswhetherthelocatorusesapersistentdatabasetostorereferences.
Thisdefaultstofalse,whichmeansthatthelocatorusesanin-memorymaptostorereferences.
Whenreplicatingthelocator,youmustsetpersist_datatotrue.
Ifyoudonot,replicationisnotenabled.
SettingloadbalancingWhenpersist_dataissettotrue,theloadbalancingbehaviorofthelocatorchanges.
Bydefault,thelocatorusesaroundrobinmethodtohandoutreferencestoservicesthatareregisteredwithmultipleendpoints.
Settingpersist_datatotruecausesthelocatortoswitchfromroundrobintorandomloadbalancing.
Youcanchangethedefaultbehaviorofthelocatortoalwaysuserandomloadbalancingbysettingthefollowingconfigurationvariable:Note:Alllocatorservicereplicasmustberunningonthesameoperatingsystem.
plugins:locator:persist_data="true";plugins:locator:selection_method="random";ConfiguringLocatorHighAvailability191ConfigurationexampleThefollowingexampleshowstheconfigurationrequiredforaclusterofthreelocatorreplicas.
UsingmultiplelocatorreplicagroupsAhighlyavailablelocatorconsistsofagroupoflocators,oneofwhichisactive.
Therestarereplicas,whichareusedonlywhentheactivelocatorbecomesunavailable.
ThelocatorgroupisrepresentedbyalocatorWSDLfilethatcontainsmultipleendpoints—oneforeachlocator.
Whentheha_confplug-inisloadedbyArtixclients,itusesthisWSDLfiletoresolveandconnecttoalocator.
Ittriesthefirstendpoint,andifthisdoesnotyieldavalidconnection,ittriesthesecondendpoint,andsoon.
Example20:SettingsforLocatorHighAvailabilityservice{.
.
.
bus:initial_contract:url:locatoretc/locator.
wsdl";orb_plugins=["local_log_stream","wsdl_publish","request_forwarder","service_locator","iiop_profile","giop","iiop"];binding:artix:server_request_interceptor_list="request_forwarder";plugins:locator:persist_data="true";plugins:artix:db:replicas=["Locator1=localhost:7876","Locator2=localhost:7877","Locator3=localhost:7878"];Locator1{plugins:artix:db:priority="100";plugins:artix:db:iiop:port="7876";};Locator2{plugins:artix:db:priority="75";plugins:artix:db:iiop:port="7877";};Locator3{plugins:artix:db:priority="0";plugins:artix:db:iiop:port="7878";};CHAPTER9|DeployingHighAvailability192Usingtheha_confplug-in,Artixclientapplicationscanfailoverbetweenlocatorsinthesamereplicagroup.
However,ifyouareusingtwoseparatereplicalocatorgroups,youwantyourclientstotryonegroupfirst,andthentheother.
Inthiscase,youcanuseoneofthefollowingapproachestofailoverbetweentwoseparatereplicalocatorgroups:CombinethetwogroupsYoucancombinetwogroupsbytakingthelocatorendpointsfromthesecondreplicagroup'sWSDLfile,andaddingthemtothelistofendpointsinthefirstreplicagroup'sWSDLfile.
YounowhaveasingleWSDLfilethatcontainsallthelocatorendpoints.
Theha_confplug-inwilltrytocontactlocatorsintheorderspecifiedinthisWSDLfile.
ChangetheconfiguredcontractFirst,setyourArtixconfigurationsothatgroup1.
wsdlisthefirstreplicagroup'sWSDLfile,forexample:Thenifaconnectioncannotbemadetoanyendpointfromthisfile,changetheconfiguredWSDLfiletogroup2.
wsdl,re-initializethebus,andtryagain.
Inthisway,byusinganextratry/catchstatementintheclient,youcanachievefailoverbetweentworeplicalocatorgroups.
FurtherinformationForaworkingexampleofArtixlocatorhighavailability,seethe.
.
.
advanced/high_availability_locatordemo.
bus:initial_contract:url:locator="group1.
wsdl";ConfiguringClient-SideHighAvailability193ConfiguringClient-SideHighAvailabilityOverviewWhenyouhaveimplementedahighlyavailableserviceusingagroupofreplicaservers,asuitablyconfiguredclientcantalktothemasterreplica.
Intheeventthatthemasterreplicafails,oneoftheotherreplicastakesoverasmaster,andtheclientfailsovertooneoftheotherreplicas.
Asfarastheclientapplicationlogicisconcerned,thereisnodiscernibleinterruptiontotheservice.
Thissectionshowshowtoconfiguretheclienttousehighavailabilityfeatures.
Italsoexplainstheimpactontheserver.
ConfigurationstepsInmostcases,configuringhighavailabilityontheclientsideconsistsoftwosteps:Createaservicecontractthatspecifiesthereplicagroup.
Configuretheclienttousethehighavailabilityservice.
SpecifyingthereplicagroupinyourcontractBeforeyourclientcancontactthereplicasinareplicagroup,youmusttelltheclienthowtocontacteachreplicainthegroup.
YoucandothisbywritingtheWSDLcontractforyourserviceinaparticularway.
Example21showsthehello_world.
wsdlcontractfromthe.
.
.
\advanced\high_availability_persistent_serversdemo.
Example21:SpecifyingaReplicaGroupinaContractxmlversion="1.
0"encoding="UTF-8">CHAPTER9|DeployingHighAvailability194InExample21,theSOAPServiceservicecontainsthreeports,allofthesameporttype.
Thecontractspecifiesfixedportnumbersfortheendpoints.
Byconvention,youshouldensurethatthefirstportspecifiedbytheservicecorrespondstothemasterserver.
.
.
.
Example21:SpecifyingaReplicaGroupinaContractConfiguringClient-SideHighAvailability195ConfiguringtheclienttousehighavailabilityToconfigureyourclientforhighavailability,performthefollowingsteps:1.
Inyourclientscope,addthehighavailabilityplug-in(ha_conf)totheorb_pluginslist.
Forexample:2.
ConfiguretheclientsothattheArtixbuscanresolvetheservicecontract.
Youcandothisbyspecifyingthefollowingconfigurationintheclientscope:Alternatively,youcanalsodothisusingthe-BUSservice_contractcommandlineparameterasfollows:Formoredetailsonconfiguringinitialcontracts,seeChapter13.
ImpactontheserverInExample21,thecontractspecifiesthreeseparateportsinthesameservicenamedSOAPService.
Theimplicationisthateachportisimplementedbyadifferentprocess,andifoneoftheseprocessesfails,theclientswitchestooneoftheothers.
client{orb_plugins=[.
.
.
,"ha_conf"];};client{bus:qname_alias:soap_service="{http://www.
iona.
com/hello_world_soap_http}SOAPService";bus:initial_contract:url:soap_serviceetc/hello_world.
wsdl";};myclient-BUSservice_contract.
.
/.
.
/etc/hello_world.
wsdlCHAPTER9|DeployingHighAvailability196Becausetheserversusethesamecontract,theserver-sidecodemustbewrittensothattheservercanbeinstructedtoinstantiateaparticularport.
Example22showssomerelevantcode.
Dependingonwhichargumenttheserverisstartedwith(1,2,or3),itinstantiateseitherServer1,Server2orServer3.
Example22:ServerCodeChooseswhichPorttoInstantiate//C++Stringcfg_scope="demos.
high_availability_persistent_servers.
server.
";Stringwsdl_urletc/hello_world.
wsdl";Stringserver_number=argv[1];Stringservice_name="SOAPService";Stringport_name="Server";if(server_number=="1"){cfg_scope+="one";port_name+="1";}elseif(server_number=="2"){cfg_scope+="two";port_name+="2";}elseif(server_number=="3"){cfg_scope+="three";port_name+="3";}else{cerrregister_servant(servant,wsdl_url,service_qname,port_name);coutoperations,constIT_Bus::QName&service,constIT_Bus::String&port,constIT_Bus::String&wsdl_url)IT_THROW_DECL((DBException));plugins:ha_conf:strategy="random";plugins:ha_conf:random:selection="always";plugins:ha_conf:strategy="random";plugins:ha_conf:random:selection="subsequent";ConfiguringClient-SideHighAvailability199FurtherinformationForworkingexamplesofhighavailabilityinArtix,seethefollowingdemos:.
.
.
advanced/high_availability_persistent_servers.
.
.
advanced/high_availability_locatorForfulldetailsofalldatabaseenvironmentandhighavailabilityconfigurationsettings,seetheArtixConfigurationReference,C++Runtime.
CHAPTER9|DeployingHighAvailability200201CHAPTER10DeployingWS-ReliableMessagingArtixsupportsWebServicesReliableMessaging(WS-RM)forC++applications.
ThischapterexplainshowtodeployWS-RMinanArtixruntimeenvironment.
InthischapterThischapterdiscussesthefollowingtopics:Introductionpage202EnablingWS-RMpage205ConfiguringWS-RMAttributespage207ConfiguringWS-RMThreadingpage215ConfiguringWS-RMPersistencepage217CHAPTER10|DeployingWS-ReliableMessaging202IntroductionOverviewWebServicesReliableMessaging(WS-RM)isastandardprotocolthatensuresthereliabledeliveryofmessagesinadistributedenvironment.
Itenablesmessagestobedeliveredreliablybetweendistributedapplicationsinthepresenceofsoftware,system,ornetworkfailures.
Forexample,WS-RMcanbeusedtoensurethatthecorrectmessageshavebeendeliveredacrossanetworkexactlyonce,andinthecorrectorder.
WebServicesReliableMessagingisalsoknownasWS-ReliableMessaging.
HowitworksWS-RMensuresthereliabledeliveryofmessagesbetweenasourceanddestinationendpoint.
Thesourceistheinitialsenderofthemessageandthedestinationistheultimatereceiver,asshowninFigure13.
Figure13:WebServicesReliableMessagingIntroduction203TheflowofWS-RMmessagescanbedescribedasfollows:1.
TheRMsourcesendsaCreateSequenceprotocolmessagetotheRMdestination.
Thiscontainsareferenceforthesourceendpointthatreceivesacknowledgements(wsrm:AcksToendpoint).
2.
TheRMdestinationsendsaCreateSequenceResponseprotocolmessagebacktotheRMsource.
ThiscontainsthesequenceIDfortheRMsequencesession.
3.
TheRMsourceaddsanRMSequenceheadertoeachmessagesentbytheapplicationsource.
ThiscontainsthesequenceID,andauniquemessageID.
4.
TheRMsourcetransmitseachmessagetotheRMdestination.
5.
TheRMdestinationacknowledgesthereceiptofthemessagefromtheRMsourcebysendingmessagesthatcontaintheRMSequenceAcknowledgementheader.
6.
TheRMdestinationdeliversthemessagetotheapplicationdestinationinanexactly-once-in-orderfashion.
7.
TheRMsourceretransmitsamessageforwhichithasnotyetreceivedanacknowledgement.
Thefirstretransmissionattemptismadeafterabaseretransmissioninterval.
Successiveretransmissionattemptsaremadeafteralinearinterval,oranexponentialbackoffinterval(thedefaultbehavior).
Formoredetails,see"ConfiguringWS-RMAttributes"onpage207.
WS-RMdeliveryassurancesWS-RMguaranteesreliablemessagedeliveryinadistributedenvironment,regardlessofthetransportprotocolused.
Thesourceordestinationendpointraisesanerrorifreliabledeliverycannotbeassured.
ThedefaultArtixWS-RMdeliveryassurancepolicyisExactlyOnceInOrder.
Thismeansthateverymessagethatissentisdeliveredwithoutduplication.
Ifnot,anerrorisraisedonatleastoneendpoint.
Inaddition,messagesaredeliveredinthesameorderthattheyaresent.
ArtixalsosupportstheExactlyOnceConcurrentandExactlyOnceReceivedOrderdeliveryassurancepolicies.
Formoredetails,see"Messagedeliveryassurancepolicies"onpage213.
CHAPTER10|DeployingWS-ReliableMessaging204SupportedspecificationsArtixsupportsthe2005/02versionoftheWS-ReliableMessagingspecification,whichisbasedontheWS-Addressing2004/08specification.
ArtixsupportsboththeWS-Addressing2004/08specificationandtheWS-Addressing2005/03specification.
However,WS-Addressing2004/08mustbeusedwithWS-ReliableMessaging.
FormoreinformationonWS-Addressing,see"ConfiguringaWS-AMessageExchangePattern"onpage225.
FurtherinformationFordetailedinformationonWS-RM,seethespecificationat:http://specs.
xmlsoap.
org/ws/2005/02/rm/ws-reliablemessaging.
pdfEnablingWS-RM205EnablingWS-RMOverviewThissectiondescribesthestepsrequiredtoenableWS-RMintheArtixruntime.
Allthenecessarysettingsarespecifiedinanartix.
cfgfile.
PrerequisitesWhenyouenableWS-RM,thisautomaticallyenablesaWS-Addressing2004MessageExchangePattern,whichisrequiredforWS-RM.
ForfulldetailsonhowtomanuallyconfigureWS-Addressing,seeChapter11.
Inaddition,ifyouwishtomakeatwo-wayinvocation,youmustconfigureaWS-RM-enabledWSDLportwithanon-anonymousreply-toendpoint.
Forfulldetails,see"Configuringanon-anonymousreply-toendpoint"onpage226.
Settingyourorb_pluginslistTouseArtixWS-RM,youmustfirstspecifythewsrmplug-inontheorb_pluginslistsforyourclientandserver.
Forexample:Note:AWS-Addressing2004MEPmustbeusedwithWS-RM.
YoucannotuseaWS-Addressing2005MEPwithWS-RM.
orb_plugins=["xmlfile_log_stream","iiop_profile","giop","iiop","wsrm"];CHAPTER10|DeployingWS-ReliableMessaging206ConfiguringWS-RMWS-RMcanbeenabledinanartix.
cfgfileeitheratthebus-leveloraspecificWSDLportlevel.
Port-specificconfigurationoverridesbus-specificconfiguration.
BusconfigurationToenableWS-RMforaspecificbus,usethefollowingsetting:WSDLportconfigurationToenableWS-RMforaspecificWSDLport,specifytheWSDLserviceQNameandtheWSDLportname,forexample:plugins:messaging_port:wsrm_enabled="true";plugins:messaging_port:wsrm_enabled:http://www.
iona.
com/bus/tests:SOAPHTTPService:SOAPHTTPPort="true";ConfiguringWS-RMAttributes207ConfiguringWS-RMAttributesOverviewYoucanspecifyvariousArtixWS-RMattributesinanartix.
cfgfileatthebus-levelorWSDLportlevel.
Port-specificconfigurationoverridesbus-specificconfiguration.
TheconfigurableWS-RMattributesareasfollows:"WS-RMacknowledgementendpointURI""UsereplyToendpointforacknowledgement""Useserverendpointforacknowledgement""Baseretransmissioninterval""Exponentialbackoffforretransmission""Maximumunacknowledgedmessagesthreshold""Maxretransmissionattemptsthreshold""Acknowledgementinterval""NumberofmessagesinanRMsequence""Messagedeliveryassurancepolicies""Per-threadRMsession"Youcanalsosettheseattributesinyourclientcode(see"ConfiguringattributesinWS-RMcontexts"onpage214).
WS-RMacknowledgementendpointURIThisattributespecifiestheendpointatwhichtheWS-RMsourcereceivesacknowledgements.
Thisisalsoknownasthewsrm:AcksToendpoint.
ThedefaultvalueistheWS-AanonymousURI:BusconfigurationThefollowingexampleshowshowtoconfiguretheacknowledgementendpointforaspecificbus:http://schemas.
xmlsoap.
org/ws/2004/08/addressing/role/anonymousplugins:wsrm:acknowledgement_uri="http://localhost:0/WSASource/DemoAcksTo/";CHAPTER10|DeployingWS-ReliableMessaging208WSDLportconfigurationThefollowingexampleshowshowtoconfiguretheacknowledgementendpointforaspecificWSDLport:UsereplyToendpointforacknowledgementIfaproxyisusedtomaketwo-wayinvocations,youcanconfiguretheproxysothatitsdecoupledreply-toendpoint(wsa:replyTo),whichreceivestheapplicationresponse,alsoreceivesacknowledgementsforapplicationrequests.
Inthisway,thewsa:replyToendpointactsasawsrm:AcksToendpoint.
BusconfigurationThefollowingexampleshowshowtoconfigurethisforaspecificArtixbus:WSDLportconfigurationThefollowingexampleshowshowtoconfigurethisforaspecificWSDLport:UseserverendpointforacknowledgementIfaserviceisusedtomaketwo-wayinvocations,youcanconfiguretheservicesothattheserverendpoint,whichreceivestheapplicationrequest,alsoreceivesacknowledgementsfortheapplicationresponse.
Inotherwords,theserveractsasawsrm:AcksToendpointforthereverseWS-RMchannel.
BusconfigurationThefollowingexampleshowshowtoconfigureforaspecificArtixbus:plugins:wsrm:acknowledgement_uri:http://www.
iona.
com/bus/tests:SOAPHTTPService:SOAPHTTPPort="http://localhost:0/WSASource/DemoAcksTo/";plugins:wsrm:use_wsa_replyto_endpoint_for_wsrm_acknowledgement="true";plugins:wsrm:use_wsa_replyto_endpoint_for_wsrm_acknowledgement:http://www.
iona.
com/bus/tests:SOAPHTTPService:SOAPHTTPPort="true";plugins:wsrm:use_server_endpoint_for_wsrm_acknowledgement="true";ConfiguringWS-RMAttributes209WSDLportconfigurationThefollowingexampleshowshowtoconfigureforaspecificWSDLport:OrderofpreferenceforacknowledgementendpointsTheorderofpreferenceinwhichawsrm:AcksToendpointischosenforaRMsourceendpointisasfollows:1.
IftheRMsourceendpointisexplicitlyconfigured(inaconfigurationfileorcode)touseanon-anonymouswsrm:AcksToendpoint,itischosen.
2.
Ontheclient-side,iftheRMsourceendpointisconfiguredtousethewsa:replyToendpointaswsrm:AcksTo,itischosenfortheapplicationrequest.
Ontheserver-side,iftheRMsourceendpointisconfiguredtousetheserverendpointaswsrm:AcksTo,itischosenfortheapplicationresponse.
3.
Ifneither1or2isspecified,theanonymouswsrm:AcksToendpointischosen.
BaseretransmissionintervalThisattributespecifiestheintervalatwhichaWS-RMsourceretransmitsamessagethathasnotyetbeenacknowledged.
Thedefaultvalueis2000milliseconds.
BusconfigurationThefollowingexampleshowshowtosetthebaseretransmissionintervalforaspecificbus:WSDLportconfigurationThefollowingexampleshowshowtosetthebaseretransmissionintervalforaspecificWSDLport:plugins:wsrm:use_server_endpoint_for_wsrm_acknowledgement:http://www.
iona.
com/bus/tests:SOAPHTTPService:SOAPHTTPPort="true";plugins:wsrm:base_retransmission_interval="3000";plugins:wsrm:base_retransmission_interval:http://www.
iona.
com/bus/tests:SOAPHTTPService:SOAPHTTPPort="3000";CHAPTER10|DeployingWS-ReliableMessaging210ExponentialbackoffforretransmissionThisattributedeterminesifsuccessiveretransmissionattemptsforanunacknowledgedmessageareperformedatexponentialintervals.
Thedefaultvalueisfalse,whichmeansthattheyareattemptedatexponentialintervals.
Ifthevalueistrue(exponentialbackoffdisabled),theretransmissionofunacknowledgedmessagesisperformedatthebaseretransmissioninterval.
BusconfigurationThefollowingexampleshowshowtosettheexponentialbackoffforretransmissionforaspecificbus:WSDLportconfigurationThefollowingexampleshowshowtosettheexponentialbackoffforretransmissionforaspecificWSDLport:MaximumunacknowledgedmessagesthresholdThisattributespecifiesthemaximumpermissiblenumberofunacknowledgedmessagesattheWS-RMsource.
WhentheWS-RMsourcereachesthislimit,itsendsthelastmessagewithawsrm:AckRequestedheaderindicatingthataWS-RMacknowledgementshouldbesentbytheWS-RMdestinationassoonaspossible.
Inaddition,whentheWS-RMsourcehasreachedthislimit,itdoesnotacceptfurthermessagesfromtheapplicationsource.
Thismeansthatthecallerthread(makingtheinvocationontheproxy)isblockeduntilthenumberofunacknowledgedmessagesdropsbelowthethreshold.
Thedefaultvalueis-1(nolimitonnumberofunacknowledgedmessages).
BusconfigurationThefollowingexampleshowshowtosetthemaximumunacknowledgedmessagesthresholdforaspecificbus:plugins:wsrm:disable_exponential_backoff_retransmission_interval="true";plugins:wsrm:disable_exponential_backoff_retransmission_interval:http://www.
iona.
com/bus/tests:SOAPHTTPService:SOAPHTTPPort="true";plugins:wsrm:max_unacknowledged_messages_threshold="50";ConfiguringWS-RMAttributes211WSDLportconfigurationThefollowingexampleshowshowtosetthemaximumunacknowledgedmessagesthresholdforaspecificWSDLport:MaxretransmissionattemptsthresholdThisattributespecifiesthemaximumnumberofretransmissionattemptsthattheRMsourcesessionmakesforanunacknowledgedmessage.
Ifthenumberofretransmissionattemptsreachesthisthreshold,theRMsourcesessionsendsawsrm:SequenceTerminatedfaulttothepeerRMdestinationsession,andclosesthesession.
AnysubsequentattempttosendamessageonthissessionresultsinanIT_Bus::Exception.
Thedefaultvalueis-1(nolimitonthenumberofretransmissionattempts).
BusconfigurationThefollowingexampleshowshowtosetthemaximumnumberofretransmissionattemptsforaspecificbus:WSDLportconfigurationThefollowingexampleshowshowtosetthemaximumnumberofretransmissionattemptsforaspecificWSDLport:AcknowledgementintervalThisattributespecifiestheintervalatwhichtheWS-RMdestinationsendsasynchronousacknowledgements.
Theseareinadditiontothesynchronousacknowledgementsthatitsendsuponreceiptofanincomingmessage.
Thedefaultasynchronousacknowledgementintervalis3000milliseconds.
AsynchronousacknowledgementsaresentbytheRMdestinationonlyifbothofthefollowingconditionsaremet:1.
TheRMdestinationisusinganon-anonymouswsrm:AcksToendpoint.
2.
TheRMdestinationiswaitingforsomemessagestobereceivedfromtheRMsource.
plugins:wsrm:max_unacknowledged_messages_threshold:http://www.
iona.
com/bus/tests:SOAPHTTPService:SOAPHTTPPort="50";plugins:wsrm:max_retransmission_attempts="8";plugins:wsrm:max_retransmission_attempts:http://www.
iona.
com/bus/tests:SOAPHTTPService:SOAPHTTPPort="8";CHAPTER10|DeployingWS-ReliableMessaging212Forexample,theRMdestinationreceivesfivemessageswithmessageIDsof1,2,3,4,and5.
Thismeansthatithasreceivedallmessagesuptothehighestreceivedmessage(5).
Therearenomissingmessagesinthiscase,sotheRMdestinationwillnotsendanasynchronousacknowledgement.
However,takethecasewheretheRMdestinationreceives5messageswithmessageIDsof1,2,4,5,and7.
Thismeansthatmessages3and6aremissing,andtheRMdestinationisstillwaitingtoreceivethem.
ThisisthecasewheretheRMdestinationsendsasynchronousacknowledgements.
BusconfigurationThefollowingexampleshowshowtosettheacknowledgementintervalforaspecificbus:WSDLportconfigurationThefollowingexampleshowshowtosettheacknowledgementintervalforaspecificWSDLport:NumberofmessagesinanRMsequenceThisattributespecifiesthemaximumnumberofusermessagesthatarepermittedinaWS-RMsequence.
Thedefaultisunlimited;andthisissufficientisformostcases.
Whenthisattributeisset,theRMendpointcreatesanewRMsequencewhenthelimitisreachedandafterreceivingalltheacknowledgementsforthemessagespreviouslysent.
Thenewmessageisthensentusingthenewsequence.
BusconfigurationThefollowingexampleshowshowtosetthemaximumnumberofmessagesforaspecificbusNote:TheRMdestinationstillsendssynchronousacknowledgementsuponreceiptofamessagefromtheRMsource.
plugins:wsrm:acknowledgement_interval="2500";plugins:wsrm:acknowledgement_interva:http://www.
iona.
com/bus/tests:SOAPHTTPService:SOAPHTTPPort="2500";plugins:wsrm:max_messages_per_sequence="1";ConfiguringWS-RMAttributes213WSDLportconfigurationThefollowingexampleshowshowtosetthemaximumnumberofmessagesforaspecificWSDLport:MessagedeliveryassurancepoliciesYoucanconfiguretheRMdestinationtousethefollowingdeliveryassurancepolicies:ExactlyOnceInOrder:TheRMdestinationdeliversthemessagestotheapplicationdestinationexactlyonce,andinincreasingorderofRMmessageID.
Thecallstotheapplicationdestinationarethereforeserialized.
Thisisthedefault.
ExactlyOnceConcurrent:TheRMdestinationdeliversthemessagestotheapplicationdestinationexactlyonce.
Butinsteadofaserializedmessagedelivery(asinExactlyOnceInOrder),messagesaredeliveredconcurrently,sotheymaynotbedeliveredinorder.
However,foramessagewithIDnthatisbeingdelivered,allthemessagesintherangeof1tonarereceivedandacknowledgedbytheRMdestination.
ExactlyOnceReceivedOrder:TheRMdestinationdeliversthemessagestotheapplicationdestinationexactlyonce,andassoonasitisreceivedfromtheunderlyingtransport.
TheRMdestinationmakesnoattempttoensurethateitherthemessagesaredeliveredintheorderofmessageID,orallthepreviousmessageshavebeenreceived/acknowledged.
Thebenefitofthispolicyisthatitavoidsacontext-switchduringdispatchintheRMlayer,andmessagesarenotstoredinthein-memoryundeliveredmessagesmap.
BusconfigurationThedefaultdeliveryassurancepolicyisExactlyOnceInOrder.
Youcanspecifyadifferentpolicyatbuslevelusingthefollowingvariable:plugins:wsrm:max_messages_per_sequence:http://www.
iona.
com/bus/tests:SOAPHTTPService:SOAPHTTPPort="1";plugins:wsrm:delivery_assurance_policy="ExactlyOnceConcurrent";CHAPTER10|DeployingWS-ReliableMessaging214WSDLportconfigurationThefollowingexampleshowshowtosetthispolicyattheWSDLportlevel:Per-threadRMsessionWhenanRMsourceendpointisconcurrentlyinvoked,bydefault,theRMsessionissharedbyallthreads.
However,withtheper-threadRMsessionattributeenabled,theRMsourceendpointtransparentlycreatesadifferentRMsequencesessionforeachinvokingthread.
EnablingthissettingeliminatesthepossibilityofindeterminatemessageIDallocation.
AllmessagessentbyaparticularthreadareallocatedamessageIDinincreasingorder.
WhentheRMsourceendpointisclosed,itclosesalltheopenRMsequencesessions.
Thedefaultvalueisfalse(disabled).
BusconfigurationThefollowingexampleshowshowtoenableaper-threadRMsessionforaspecificbus:WSDLportconfigurationThefollowingexampleshowshowtoenableaper-threadRMsessionforaspecificWSDLport:ConfiguringattributesinWS-RMcontextsForC++applications,youcanalsospecifyArtixWS-RMattributesprogrammaticallyusingaconfigurationcontext.
Usingthisapproach,thecontextisspecifictothecurrentproxyonly,andcannotbeusedbyanotherproxycreatedsubsequently.
Forfulldetailsandexamples,seeDevelopingArtixApplicationswithC++.
TheorderofprecedenceforsettingWS-RMattributesisasfollows:1.
Configurationcontext(programmatic).
2.
WSDLport(configurationfile).
3.
Artixbus(configurationfile).
plugins:wsrm:delivery_assurance_policy:http://www.
iona.
com/bus/tests:SOAPHTTPService:SOAPHTTPPort="ExactlyOnceConcurrent";plugins:wsrm:enable_per_thread_sequence_scope="true";plugins:wsrm:enable_per_thread_sequence_scope:http://www.
iona.
com/bus/tests:SOAPHTTPService:SOAPHTTPPort="true";ConfiguringWS-RMThreading215ConfiguringWS-RMThreadingOverviewTheArtixWS-RMlayermaintainsabus-specificinternalthreadpool.
Itusesthisworkqueuetoborrowexecutionresourcesforvariousasynchronoustasks.
Forexample,thesetasksinclude:RetransmissionschedulingattheRMsource.
RetransmissionsattheRMsource.
AsynchronousacknowledgementschedulingattheRMdestination.
AsynchronousacknowledgementattheRMdestination.
Concurrentmessagedispatchestotheapplicationdestination.
ConfiguringaWS-RMthreadpoolYoucanconfiguretheWS-RMthreadpoolusingthefollowingvariables:initial_threadsspecifiesthenumberofinitialthreadsintheWS-RMthreadpool.
Thedefaultis:highwatermarkspecifiesthemaximumnumberofthreadsallowedintheWS-RMthreadpool.
Thedefaultis:lowwatermarkspecifiestheminimumnumberofthreadsallowedintheWS-RMthreadpool.
Thedefaultis:plugins:wsrm:thread_pool:initial_threads="5";plugins:wsrm:thread_pool:high_water_mark="-1";plugins:wsrm:thread_pool:low_water_mark="-1";CHAPTER10|DeployingWS-ReliableMessaging216maxqueuesizespecifiesthemaximumnumberofrequestitemsthatcanbequeuedontheWS-RMthreadworkqueue.
Thedefaultis:stacksizespecifiesthestacksizeforeachthread.
Thestacksizeisspecifiedinbytes.
Thedefaultis:plugins:wsrm:thread_pool:max_queue_size="-1";plugins:wsrm:thread_pool:stack_size="OS-specificDefaultThreadStackSize";ConfiguringWS-RMPersistence217ConfiguringWS-RMPersistenceOverviewTheArtixWS-RMfeaturesalreadydescribedinthischapterprovidereliabilityforcasessuchasnetworkfailures.
EnablingWS-RMpersistenceimprovestheQualityofServicebyprovidingreliabilityacrossothertypesoffailuressuchasanRMsourceordestinationcrash.
WS-RMpersistenceinvolvesstoringthestateofthevariousRMendpointsinpersistentstorage.
Thisenablestheendpointswhenreincarnatedtocontinuesendingandreceivingmessagesasbeforethecrash.
ArtixenablesWS-RMpersistenceforatbuslevelinaconfigurationfile,orincodeusinganArtixcontext.
TheWS-RMpersistencestoreimplementationusesaBerkeleyDB,andisavailableasaseparateplug-in.
Inaddition,thepersistentstoreisalsoexposedusingaC++API.
Ifyouwishtoimplementyourownpersistencemechanism,youcanimplementthisAPIwithyourpreferredDB(seeDevelopingArtixApplicationswithC++).
HowitworksArtixWS-RMpersistenceworksasfollows:AttheRMsourceendpoint,anoutgoingmessageispersistedbeforetransmission.
Itisevictedfromthepersistentstoreaftertheacknowledgementisreceived.
Afterarecoveryfromcrash,itrecoversthepersistedmessagesandretransmitsuntilallthemessageshavebeenacknowledged.
Atthatpoint,theRMsequenceisclosed.
AttheRMdestinationendpoint,anincomingmessageispersisted,anduponasuccessfulstore,theacknowledgementissent.
Whenamessageissuccessfullydispatched,itisevictedfromthepersistentstore.
Afterarecoveryfromcrash,itrecoversthepersistedmessagesanddispatchesthem.
ItalsobringstheRMsequencetoastatewherenewmessagesareaccepted,acknowledged,anddelivered.
Note:WS-RMpersistenceissupportedforonewaycallsonly.
Itisdisabledbydefault.
CHAPTER10|DeployingWS-ReliableMessaging218EnablingWS-RMpersistenceToenableWS-RMpersistenceforaspecificArtixbus,performthefollowingsteps:1.
Addthewsrm_dbplug-intotheorb_pluginslist.
Forexample:Thewsrm_dbplug-inistheplug-inthatimplementstheRMpersistentstoreAPI.
Thewsrmplug-inisloadedautomaticallywhenwsrm_dbisspecifiedintheorb_pluginslist.
2.
ConfiguretheBerkeleyDBstoreusedbythewsrm_dbplug-inasfollows:Thedefaultvalueisthecurrentdirectory(.
).
FurtherdetailsForworkingexamplesofreliablemessaginginArtix,seethe.
.
.
/advanced/wsrmdemo.
orb_plugins=["xmlfile_log_stream","iiop_profile","giop","iiop","wsrm_db"];plugins:artix:db:home="db_directory";219PartIIIAccessingArtixServicesInthispartThispartcontainsthefollowingchapters:ConfiguringWS-Addressingpage221PublishingWSDLContractspage229AccessingContractsandReferencespage241AccessingServiceswithUDDIpage261EmbeddingArtixinaBEATuxedoContainerpage267220221CHAPTER11ConfiguringWS-AddressingArtixsupportsWS-AddressingforC++applications.
ThischapterexplainshowtoconfigureWS-AddressingMessageExchangePatternsinanArtixruntimeenvironment.
InthischapterThischapterdiscussesthefollowingtopics:Introductionpage222ConfiguringaWS-AMessageExchangePatternpage225CHAPTER11|ConfiguringWS-Addressing222IntroductionOverviewWebServicesAddressing(WS-A)providesamechanismtoidentifyandlocateWebservicesandmessages,whichisindependentofthetransportsused.
ThissectionexplainstheWS-AddressingMessageExchangePatterns(MEPs)usedbyArtix.
WS-AddressingMessageExchangePatternsArtixsupportsWS-Addressing2004and2005MessageExchangePatternsinSOAPmessageheaders.
TheseenableArtixtosendarequesttoanendpointspecifiedbyawsa:Toheader,andtoreceiveareplyatanendpointspecifiedbyawsa:ReplyToheader.
AnonymousURIIfawsa:ReplyToheaderisnotspecified,bydefault,ArtixusestheanonymousURItosynchronouslyreceivethereply.
Forexample,theWS-Addressing2004anonymousURIis:WhiletheWS-Addressing2005anonymousURIisNon-anonymousaddressWhenanon-anonymouswsa:ReplyToheaderisused,thereplyisreceivedasynchronouslyatthereply-toendpoint.
Thereplyismatchedwiththerequestusingwsa:MessageIdandwsa:RelatesTomessageheaders.
Fromtheuser'sperspective,thisisstillatwo-waysynchronouscall,andtheasynchronicityishandledbyArtix.
Foronewaycalls,thereply-toendpointisnotneeded.
http://schemas.
xmlsoap.
org/ws/2004/08/addressing/role/anonymoushttp://www.
w3.
org/2005/08/addressing/anonymousIntroduction223HowitworksArtixWS-AMEPsfollowatypicalrequest-responsepattern.
AttheHTTPconnectionlevel,whenananonymouswsa:ReplyToheaderisused,theresponseisreturnedonthesameHTTPconnection.
However,whenanon-anonymouswsa:ReplyToisused,theresponseisreturnedonaseparateconnection.
ThisalsomeansthatanArtixclientlistensontheendpointdenotedbythewsa:ReplyToheader.
Thefollowingstepsshowthisdecoupledrequest-responseMEPinmoredetail:1.
TheArtixclientcreatesanHTTPlistenerspecifiedbythewsa:ReplyToheader.
Ifthelistenercannotbecreated,itthrowsanIT_Bus::Exception.
2.
TheArtixclientsendsanHTTPrequestcontainingtheapplicationrequesttotheservice.
3.
TheArtixruntimetreatstheapplicationrequestasone-way.
ThismeanstheArtixHTTPstackexpectstoreceiveanHTTPresponsewithstatuscode202(Accepted).
4.
TheArtixclientreceivestheapplicationresponsefromtheserviceasaHTTPrequestonadecoupledHTTPconnection.
5.
TheArtixruntimetreatstheapplicationresponseasone-wayandsendsbackaHTTPresponsewithstatuscode202(Accepted)onthedecoupledHTTPconnection.
Thisdecoupledmechanismmeanstherecanbemultipleoutstandingapplicationrequestsatanytime.
Therequestandresponsearecorrelatedusingwsa:MessageIdandwsa:RelatesToheaders.
Inaddition,therequestingclientthreadblocksandcreatesalistenerbeforesendingtherequest.
Thisisimportantintheeventoffirewalls,portconflicts,andsoon.
CHAPTER11|ConfiguringWS-Addressing224WS-AddressingandsecurityInadecoupledinteraction,whenanon-anonymouswsa:ReplyToisused,thesecurityconfigurationfortherequestisthesameasanormalArtixclient-serversecurityscenario.
However,therolesarereversedfortheresponse.
TheclientcreatesanHTTPlistenercorrespondingtothewsa:replyToendpoint,andtheservercreatesanHTTPconnectiontosendbacktheresponse.
Therefore,thesecurityroleisreversedinthisscenario.
Theclientshouldbeconfiguredforserver-sidesecurity,andtheservershouldbeconfiguredforclient-sidesecurity.
ForfulldetailsofhowtoconfigureArtixclient-serversecurity,seetheArtixSecurityGuide.
WS-AddressingandWS-RMWhenWS-ReliableMessagingisenabledintheArtixruntime,thisautomaticallyenablesaWS-Addressing2004MEP.
ForinformationonhowtoconfigureWS-ReliableMessaging,seeChapter10.
SupportedspecificationsArtixsupportsboththeWS-Addressing2004/08specificationandtheWS-Addressing2005/03specification.
However,WS-Addressing2004/08mustbeusedwithWS-ReliableMessaging(WS-RM).
FordetailsofhowtoconfigureaMEP,see"ConfiguringaWS-AMessageExchangePattern"onpage225.
FurtherinformationFordetailedinformation,seetheWS-AddressingWSDLBindingspecificationat:http://www.
w3.
org/TR/2006/WD-ws-addr-wsdl-20060216/Note:AWS-Addressing2004MEPmustbeusedwithWS-RM.
YoucannotuseaWS-Addressing2005MEPwithWS-RM.
ConfiguringaWS-AMessageExchangePattern225ConfiguringaWS-AMessageExchangePatternOverviewThissectionexplainshowtoconfigureaWS-AddressingMessageExchangePatternintheArtixruntime.
EnablingaWS-Addressing2004MEPYoucanenableaWS-Addressing2004MEPinanArtix.
cfgfileeitherattheArtixbus-leveloraspecificWSDLportlevel.
Port-specificconfigurationoverridesbus-specificconfiguration.
WhenWS-RMisenabled,aWS-Addressing2004MEPisenabledautomatically(see"WS-AddressingandWS-RM"onpage224).
BusconfigurationToenableaWS-AddressingMEPatbuslevel,usethefollowingsetting:WSDLportconfigurationToenableWS-AataspecificWSDLportlevel,specifytheWSDLserviceQNameandtheWSDLportname,forexample:EnablingaWS-Addressing2005MEPSimilarly,youcanenableaWS-Addressing2005MEPinanArtix.
cfgfileeitherattheArtixbus-leveloraspecificWSDLportlevel.
Port-specificconfigurationoverridesbus-specificconfiguration.
BusconfigurationToenableaWS-AddressingMEPatbuslevel,usethefollowingsetting:plugins:messaging_port:supports_wsa_mep="true";plugins:messaging_port:supports_wsa_mep:http://www.
iona.
com/bus/tests:SOAPHTTPService:SOAPHTTPPort="true";plugins:messaging_port:supports_wsa_2005_mep="true";CHAPTER11|ConfiguringWS-Addressing226WSDLportconfigurationToenableWS-AataspecificWSDLportlevel,specifytheWSDLserviceQNameandtheWSDLportname,forexample:Configuringanon-anonymousreply-toendpointTheWS-Areply-toendpointspecifiesaURIforreceivingacknowledgementmessagesfromthedestination.
Thescopeofareply-toendpointisattheproxylevel.
InArtix,twoproxiescannotsharethesameendpoint.
Thismeansthateachproxyhasitsownreply-toendpoint.
Therearetwowaysofconfiguringareply-toendpoint:"Settingareply-toendpointinconfiguration""Settingareply-toendpointinacontext"Settingareply-toendpointinconfigurationTheWS-Areply-toendpointcanbesetinanArtix.
cfgfile,attheArtixbuslevelorWSDLportlevel.
Becausereply-toendpointsmusthaveauniqueURIper-proxy,abaseURIisspecifiedinconfiguration.
Forexample,ifthebaseURIisspecifiedas:Andiftwoproxiesareinstantiated,thefirstproxyhasareply-toendpointwhoseURIisasfollows:Similarly,thesecondproxyhasareply-toendpointwhoseURIisasfollows:plugins:messaging_port:supports_wsa_2005_mep:http://www.
iona.
com/bus/tests:SOAPHTTPService:SOAPHTTPPort="true";Note:EitherWS-A2004orWS-A2005shouldbeenabled.
Ifbothareenabled,ArtixenablesWS-A2005,andignoresWS-A2004,andlogsaMessagingPortwarningmessage.
plugins:messaging_port:base_replyto_url="http://localhost:0/WSATestClient/BaseReplyTo/";"http://localhost:2356/WSATestClient/BaseReplyTo/ReplyTo0001";"http://localhost:2356/WSATestClient/BaseReplyTo/ReplyTo0002";ConfiguringaWS-AMessageExchangePattern227Settingareply-toendpointinacontextForC++applications,youcanalsosetaWS-Areply-toendpointprogrammaticallyusingaconfigurationcontext.
Usingthisapproach,thecontextisspecifictothecurrentproxyonly,andcannotbeusedbyaproxycreatedsubsequently.
Youmustalsoensurethatitisdeletedafteruse.
Forfulldetailsandexamples,seeDevelopingArtixApplicationswithC++.
FurtherdetailsFordetailedinformation,seetheWS-AddressingWSDLBindingspecificationat:http://www.
w3.
org/TR/2006/WD-ws-addr-wsdl-20060216/CHAPTER11|ConfiguringWS-Addressing228229CHAPTER12PublishingWSDLContractsThischapterdescribeshowtopublishWSDLfilesthatcorrespondtospecificWebservices.
ThisenablesclientstoaccesstheWSDLfileandinvokeontheservice.
InthischapterThischapterdiscussesthefollowingtopics:ArtixWSDLPublishingServicepage230ConfiguringtheWSDLPublishingServicepage232QueryingtheWSDLPublishingServicepage236CHAPTER12|PublishingWSDLContracts230ArtixWSDLPublishingServiceOverviewTheArtixWSDLpublishingserviceenablesArtixprocessestopublishWSDLfilesforspecificWebservices.
PublishedWSDLfilescanbedownloadedbyotherArtixprocesses(forexample,especiallyclients),orviewedinaWebbrowser.
TheycanalsobedownloadedbyWebserviceprocessescreatedbyothervendortools(forexample,Systinet).
TheWSDLpublishingserviceenablesArtixapplicationstobeusedinvariousdeploymentmodels,withouttheneedtospecifyfilesystemlocations.
ItistherecommendedwaytopublishWSDLforArtixservices.
TheWSDLpublishingserviceisimplementedbythewsdl_publishplug-in.
Thisplug-incanbeloadedbyanyArtixprocessthathostsaWebserviceendpoint.
Thisincludesserverapplications,Artixroutingapplications,andapplicationsthatexposeacallbackobject.
UsewithendpointreferencesItisrecommendedthatyouusetheWSDLpublishingserviceforanyapplicationsthatgenerateandexportreferences.
Tousereferences,theclientmusthaveaccesstotheWSDLcontractreferredtobythereference.
ThesimplestwaytoaccomplishthisistousetheWSDLpublishingservice.
Figure14showsanexampleofcreatingreferenceswiththeWSDLpublishingservice.
Thewsdl_publishplug-inautomaticallyopensaport,fromwhichclientscandownloadacopyoftheserver'sdynamicallyupdatedWSDLfile.
GeneratedreferenceshavetheirWSDLlocationsettothefollowingURL:Hostnameistheserverhost,WSDLPublishPortisaTCP/IPportusedtoserveupWSDLcontracts,andQueryStringisastringthatrequestsaparticularWSDLcontract(see"QueryingtheWSDLPublishingService"onpage236).
IfaclientaccessestheWSDLlocationURL,theserverconvertstheWSDLmodeltoXMLontheflyandreturnstheWSDLcontractinaHTTPmessage.
Formoredetailsonreferences,seeDevelopingArtixApplicationsinC++.
http://Hostname:WSDLPublishPort/QueryStringArtixWSDLPublishingService231MultipletransportsTheWSDLpublishingservicemakestheWSDLfileavailablethroughanHTTPURL.
However,theWebservicedescribedintheWSDLfilecanuseatransportotherthanHTTP.
Forexample,whenthewsdl_publishplug-inisloadedintoanArtixserverprocessthathostsaWebserviceusingIIOP,itpublishestheservice'sWSDLfileatanHTTPURL.
Figure14:CreatingReferenceswiththeWSDLPublishingServiceCHAPTER12|PublishingWSDLContracts232ConfiguringtheWSDLPublishingServiceOverviewThissectiondescribeshowtoloadthewsdl_publishplug-in,andconfigureittosuityourneeds.
Loadingthewsdl_publishplug-inToloadthewsdl_publishplug-in,addthewsdl_publishstringtoyourorb_pluginssetting,intheprocessconfigurationscope.
Forexample,ifyourconfigurationscopeissamples.
server,youmightusethefollowingorb_pluginslist:Whentheprocessstarts,theWSDLfileisavailableatanHTTPURLthatusesaTCP/IPportassignedbytheoperatingsystem.
ThisURLisembeddedintheWSDLlocationvalueinanendpointreference.
ProcessesreceivingthereferencecandownloadtheWSDLfilefromthisURL.
However,thereisnoeasywaytodeterminetheportassignedbytheoperatingsystem.
ThismakesitdifficulttoviewtheWSDLfileinawebbrowser,ortoopenthisportthroughafirewall.
YoucansolvethisproblembyconfiguringaportforpublishingWSDL.
Note:Inaproductionenvironment,itisstronglyrecommendedthatyousetawsdl_publishportandhostnameformat.
#artix.
cfgdemos{server{orb_plugins=["xmlfile_log_stream","wsdl_publish"];.
.
.
};};ConfiguringtheWSDLPublishingService233SpecifyingaportforpublishingWSDLToenableviewingofWSDLfilesinawebbrowser,configurethewsdl_publishplug-intouseaspecifiedportinsteadofaoneassignedbytheoperatingsystem.
Theplugins:wsdl_publish:publish_portconfigurationvariablespecifiestheTCP/IPportthatWSDLfilesarepublishedon.
Forexample,Whenspecifyingapublish_port,youmustconfirmthatthespecifiedportisnotalreadyinuse.
Iftheportisinuse,theserverprocesswillstillstart,butthefollowingerrormessagewillbedisplayedThedefaultvalueis0,whichmeansthattheportisassignedbytheoperatingsystematruntime.
ViewingtheWSDLfileinawebbrowserIfyouknoweitherthewsdl_publishplug-inortheTCP/IPportusedbytheservice,youcanviewordownloadtheWSDLfileinawebbrowser.
Inthebrowseraddressbox,enteroneofthefollowingURLs,whereWSDLPublishPortistheTCP/IPportusedbythewsdl_publishplug-in:TheArtixprocessreturnsawebpagethatlistsallofitsservices.
ClickonanentrytoretrievethecorrespondingWSDLfile.
Alternatively,youcanenteroneofthefollowingURLs,whereServicePortistheTCP/IPportusedbytheWebservice:TheArtixprocessreturnstheWSDLfilefortheservice.
Thehttp://HostNameOrIP:ServicePort/servicewsdlformatisusedintheJAX-WSspecification.
plugins:wsdl_publish:publish_port="2222";ConnectionFailedonHTTPPort2222return3:Unknownsocketerror:0http://HostNameOrIP:WSDLPublishPort/get_wsdlhttp://HostNameOrIP:WSDLPublishPorthttp://HostNameOrIP:ServicePort/servicewsdlhttp://HostNameOrIP:ServicePort/serviceCHAPTER12|PublishingWSDLContracts234SpecifyingahostnameformatTheplugins:wsdl_publish:hostnamevariablespecifieshowthehostnameisconstructedinthewsdl_publishURL.
ThisistheURLthatthewsdl_publishplug-inusestoretrieveWSDLcontracts.
Thisvariablehasthefollowingpossiblevalues:Bydefault,theunqualifiedprimaryhostnameisused.
plugins:wsdl_publish:hostnamespecifiesonlyhowtoconstructtheURLusedbythewsdl_publishplug-intoaccesstheWSDL.
Whereas,policies:soap:server_address_mode_policy:publish_hostnameandpolicies:at_http:server_address_mode_policy:publish_hostnamespecifyhowtoconstructtheURLinthepublishedWSDLcontract.
Youmustbeawareofbothsetsofconfigurationentrieswhenusingthewsdl_publishplug-in(forexample,toavoidpublishingaWSDLfilethatdoesnotcontainacompleteURL).
canonicalThefullyqualifiedhostname(forexample,http://myhost.
mydomain.
com).
unqualifiedTheunqualifiedlocalhostname(forexample,http://myhost).
ipaddressThehost'sIPaddress(forexample,http://10.
1.
2.
3).
SecondaryHostNameFormulti-homedmachines,thespecifiedliteralstringofasecondaryhostname.
SpecifyalogicalnameoravirtualIPaddress(forexample,http://myhost.
mydomain.
comorhttp://10.
1.
2.
3).
Anyleadingortrailingwhitespacesarestrippedout.
Note:Thisvariableshouldnotbeconfusedwiththefollowing:policies:soap:server_address_mode_policy:publish_hostnamepolicies:at_http:server_address_mode_policy:publish_hostnameThesespecifyhowendpointURLsarepublishedinWSDLcontracts.
ConfiguringtheWSDLPublishingService235SpecifyingWSDLpreprocessingYoucanusetheplugins:wsdl_publish:processorvariabletospecifythekindofpreprocessingdonebeforepublishingaWSDLcontract.
Becausepublishedcontractsareintendedforclientconsumption,bydefault,allserver-sideWSDLartifactsareremovedfromthepublishedcontract.
YoucanalsospecifytoremoveallIONA-specificextensors.
Preprocessingcanalsobedisabled;theonlymodificationisupdatingthelocationandschemaLocationattributestoHTTPbasedURLs.
Thisvariablehasthefollowingpossiblevalues:Forexample:artixRemoveserver-sideartifacts.
Thisisthedefaultsetting.
standardRemoveserver-sideartifactsandIONAproprietaryextensors.
noneDisablepreprocessing.
plugins:wsdl_publish:processor="standard";CHAPTER12|PublishingWSDLContracts236QueryingtheWSDLPublishingServiceOverviewIfyouknowtheTCP/IPportusedbyeitherthewsdl_publishplug-inortheWebservice,youcanviewordownloadtheWSDLfileinawebbrowser.
ThissectionshowsexamplesofqueryingtheWSDLPublishingservice.
ItalsodescribesitsHTMLmenuandWSILsupport.
ExamplequerysyntaxAssumeyouconfiguredwsdl_publishusingthefollowingvaluesonasystemwithanIPaddressof10.
1.
2.
3:Thewsdl_publishbaseURLishttp://10.
1.
2.
3:1234.
AndrequestsonthefollowingtypesofURLsareserviced:http://10.
1.
2.
3:1234/get_wsdl,http://10.
1.
2.
3:1234/get_wsdl/,http://10.
1.
2.
3:1234/get_wsdl,orhttp://10.
1.
2.
3:1234/get_wsdl/returnstheHTMLMenu(see"UsingtheHTMLmenu"onpage237).
http://10.
1.
2.
3:1234/get_wsdlservice=name&scope=EncodedUrlreturnsthecontractfortheservicespecifiedinthequerystring.
http://10.
1.
2.
3:1234/get_wsdlstub=EncodedUrlreturnsthecontractforIONAspecificservices.
http://10.
1.
2.
3:1234/inspection.
wsilreturnsaWSILdocumentcontaininginformationaboutactiveWebservices(see"WSILsupport"onpage238).
http://10.
1.
2.
3:1234/get_wsdl/context/filename.
wsdlreturnsthespecifiedWSDLcontract.
Thevalueofcontextisgeneratedatruntime.
http://10.
1.
2.
3:2000/serviceorhttp://10.
1.
2.
3:2000/servicewsdlreturnsthecontractforthespecifiedservice.
ThevalueoftheURListhesameastheonespecifiedintheWSDLasthesoap:addressoftheservice.
test.
scope{plugins:wsdl_publish:publish_port=1234;plugins:wsdl_publish:hostname="ipaddress";};QueryingtheWSDLPublishingService237IfaninvalidURLisprovided,wsdl_publishreturnsanHTTP404(FileNotFound)Error.
Formoredetails,see"ViewingtheWSDLfileinawebbrowser"onpage233.
QueryingCORBAservicesUsethefollowingwsdl_publishURLformatwhenusingCORBA-onlyservices:Forexample,aclientcouldusethefollowingsetting:Formoredetails,seeArtixforCORBA.
UsingtheHTMLmenuTheWSDLpublishingserviceprovidesanHTMLmenupagethatcontainslinkstothecontractsofactivatedservices.
Thispageshowsallservicesactivatedonthecurrentbusassociatedwithaspecifiedwsdl_publishinstance.
Forexample,anit_containerinstanceisstartedonport2000,andthewsdl_publishportisconfiguredas1234.
TheHTMLmenuavailableathttp://10.
1.
2.
3:1234/get_wsdlisasfollows:WSDLPublishURL/get_wsdlservice=Name&scope=NSbus:initial_contract:url:greeter="http://localhost:9005/get_wsdlservice=GreeterService&scope=http://www.
iona.
com/demo";Note:Aprocessmighthavemorethanoneactivebus,andsomoreWebservicesmightbeactivatedinthatprocess.
ContractsforotherWebservicescanbeobtainedfromthewsdl_publishinstanceassociatedwiththeirbuses.
WSDLServicesavailableContainerService(http://ws.
iona.
com/container)ContainerService(http://ws.
iona.
com/container)CHAPTER12|PublishingWSDLContracts238TheHTMLsourceisasfollows:ThefirstentrydownloadstheWSDLfromthewsdl_publishport,whiletheseconddownloadstheWSDLfromtheservice'sport.
Thehostnameformatassignedtoplugins:wsdl_publish:hostnameaffectsthesyntaxofthefirstentry'sURL,whiletheserver_address_mode_policyvariablesaffectthesyntaxofthesecondentry'sURL.
Formoredetails,see"Specifyingahostnameformat"onpage234.
WSILsupportTheWebServicesInspectionLanguage(WSIL)specification,availableathttp://wow-128.
ibm.
com/developerworks/library/specification/ws-wsilspec,providesastandardwayofinspectingaWebservice,andgettingthecontractsofactiveWebservices.
WSDLServicesavailableContainerService(http://ws.
iona.
com/container)ContainerService(http://ws.
iona.
com/container)QueryingtheWSDLPublishingService239Forexample,theWSILdocumentavailablefromhttp://10.
1.
2.
3:1234/inspection.
wsilhasthefollowingcontent:HTTPtransportForanArtixprocessthatexposesaWebserviceoverHTTP,theWSDLPublishingserviceprovidesanalternativewaytoviewordownloadtheWSDLfile.
ArtixdistinguishesbetweenHTTPPOSTandHTTPGETcalls.
HTTPPOSTcallsareusedtoinvokeonthetargetWebservice.
HTTPGETcallsreturntheWSDLfile.
ns1:ContainerServicens1:ContainerServiceCHAPTER12|PublishingWSDLContracts240InthefollowingWSDLfile,theportelementspecifiestheHTTPtransportandmakestheWebserviceavailableataspecifiedHTTPURL.
IftheArtixserverhostingthisserviceloadsthewsdl_publishplug-in,theWSDLfilemaybeviewedordownloadedusingawebbrowser.
Inthebrowser'saddressbox,enter:Forthisapproachtowork,theservice'sHTTPURLmustincludeauniquecontext(inthisexamplecase,/test).
ServantregistrationWhentheWSDLPublishingservicepublishesaWSDLfileforaserviceusingastaticallyregisteredservant,thepublishedfilecontainsvalidconnectiondetails.
ThisistrueeveniftheWSDLfileoriginallyspecifieddynamicportassignment(forexample,anHTTPtransportwithalocationURLoftheformhttp://HostName:0,oranIIOPtransportwithalocationentryoftheformior:).
TheHTTPURLisrevisedtohttp://HostName:ServicePort,whereServicePortisaTCP/IPportassignedbytheoperatingsystem.
TheIIOPlocationentryisrevisedtoIOR:.
.
.
,where.
.
.
isthestringrepresentationoftheCORBAobjectreference.
However,whenthewsdl_publishplug-inpublishesaWSDLfileforaserviceusingatransientlyregisteredservant,thepublishedfiledoesnotcontainvalidconnectiondetails.
Validconnectiondetailscanonlybeobtainedfromtheendpointreferencecorrespondingtotheservice.
Formoredetailsonservantregistration,seeDevelopingArtixApplicationsinC++.
.
.
.
http://hostname:9000/test241CHAPTER13AccessingContractsandReferencesArtixenablesyoutodecouplethelocationofWSDLcontractsandendpointreferencesfromyourserverandclient.
Thisavoidshard-codingthelocationofWSDLfilesinyourapplications.
Thischapterexplainsthebenefits,andshowshowtousethedifferentwaysofaccessingWSDLcontractsandendpointreferences.
InthischapterThischapterdiscussesthefollowingtopics:Introductionpage242EnablingServerandClientApplicationspage244AccessingWSDLContractspage246AccessingEndpointReferencespage252AccessingArtixServicespage258CHAPTER13|AccessingContractsandReferences242IntroductionOverviewArtixenablesclientandserverapplicationstoaccessWSDLservicecontractsandendpointreferencesinavarietyofways(forexample,byspecifyingtheirlocationonthecommandline,orinaconfigurationfile).
Thissectionexplainsthebenefitsofusingthesefeatures.
HardcodingWSDLinserversHardcodingWSDLinserverslimitstheportabilityofyourapplication,andcanmakeitmoredifficulttodevelopanddeploy.
Forexample,youhavedevelopedaWebserviceapplicationthatincludesaclientandaserviceimplementedinaserverprocess.
Whenyoufirstwritetheapplication,youhavealocalcopyoftheWSDL,andyouhavehardcodedtheWSDLlocationintoyourapplication.
ExampleC++server//C++QNameservice_qname("","SOAPService",http://www.
iona.
com/hello_world_soap_http);HelloWorldImplservant(bus);bus->register_servant(".
.
/.
.
/etc/hello.
wsdl",service_qname);Introduction243HardcodingWSDLinclientsSimilarly,youhavealsohard-codedyourclientwiththelocationofyourlocalWSDL:ExampleC++clientDeployingyourapplicationHowever,whenyourapplicationisnolongerademo,andyouwanttodeployitinmultiplelocations,yourhard-codedapplicationmaymakethisdifficult.
Forexample,ifyourclientisnolongerrunfromthesamedirectoryormachineastheserver.
Tosolvethisproblem,Artixenablesyoutowritecodethatislocationindependent,andthereforeeasytodistributeanddeploy.
//C++HelloWorldClientproxy(".
.
/.
.
/etc/hello.
wsdl");proxy.
sayHello();Note:ThesefeaturesaredesignedforWSDL-basedservices.
Theydonotprovidemechanismsforresolvinglocalobjects.
Fordetailsofhowtodothis,seeDevelopingArtixApplicationswithC++.
CHAPTER13|AccessingContractsandReferences244EnablingServerandClientApplicationsOverviewArtixaddressestwotypicalusecasescenarios:EnablingserverapplicationstoaccessWSDLcontracts.
Enablingclientapplicationstoaccessendpointreferences.
ArtixsupportsbothoftheseusecasesforC++applications.
EnablingserverstoaccessWSDLWhenyouwanttoactivateyourserviceinamainlineoraplug-in,youshouldnothardcodetheWSDLlocation.
Instead,youcanuseArtixAPIstodecoupletheWSDLlocationfromyourapplicationlogic.
C++exampleTheC++get_service_contract()functiontakestheQNameofthedesiredserviceasaparameter,andreturnsapointertothespecifiedservice.
Whenyouchangeyouroldhard-codedapplicationtousethismethod,yourC++serverbecomes:Forsimplicity,thisexampledoesnotshowanyerrorhandling.
Fordetails,seeDevelopingArtixApplicationswithC++.
AssociatingyourserverwithaspecificWSDLcontractisnotaddressedinyourapplicationcode.
Thisisspecifiedatruntimeinstead.
Theavailableoptionsareexplainedin"AccessingWSDLContracts"onpage246.
//C++IT_Bus::QNameservice_qname("","SOAPService","http://www.
iona.
com/hello_world_soap_http");//FindtheWSDLcontract.
IT_WSDL::WSDLService*wsdl_service=bus->get_service_contract(service_qname);//Registertheservantbus->register_servant(servant,*wsdl_service);EnablingServerandClientApplications245EnablingclientstoaccessendpointreferencesWhenyouwanttoinitializeyourclientproxiesinyourapplications,youshouldnolongerdependonlocalWSDLfilesorstaticstubcodeinformationtoproperlyinstantiateaproxy.
Instead,youcanuseArtixAPIstodecouplethelocationofclientreferencesfromyourapplicationlogic.
C++exampleTheC++resolve_initial_reference()functiontakestheQNameofthedesiredserviceasaparameter,andreturnstheendpointreferenceforthespecifiedservice.
Youcanchangeyouroldhard-codedclientapplicationasfollows:Theassociationofyourclientwithaspecificendpointreferenceisnotaddressedinyourapplicationcode.
Thisisspecifiedatruntimeinstead.
Theavailableoptionsareexplainedin"AccessingEndpointReferences"onpage252.
AccessingWSDLandreferencesforclientsorserversTheseAPIscanbeusedbybothclientsandservers.
Forexample,typically,clientsusethemethodandserversusethemethod.
However,bothapplicationtypescanuseeitherofthesemethods.
Note:TheArtix3.
0APIsforresolvinginitialreferenceshavebeendeprecatedinArtix4.
0.
TheseAPIsaresupportedforbackwardscompatibility,however,itisrecommendedthatyouupdateyourapplicationstousethenewWS-AddressingAPIsinArtix4.
0.
//C++IT_Bus::QNameservice_qname("","SOAPService","http://www.
iona.
com/hello_world_soap_http");WS_Addressing::EndpointReferenceTyperef;//Findtheinitialreference.
bus->resolve_initial_reference(service_qname,ref);//CreateaproxyanduseitGreeterClientproxy(ref);proxy.
sayHi();CHAPTER13|AccessingContractsandReferences246AccessingWSDLContractsOverviewWhenyourapplicationcallstheArtixbustoaccessaWSDLcontractforaservice,theArtixbususesseveralavailableoptionstoaccesstherequestedWSDL.
Artixtrieseachresolvermechanisminturnuntilitfindsanappropriatecontract,andreturnsthefirstresult.
IfoneoftheseisconfiguredwithabadcontractURL,noothersarecalled.
AccessingWSDLisatwo-stepprocess:1.
YoumustfirstusetheC++APItoresolvetheWSDL(see"EnablingserverstoaccessWSDL"onpage244).
2.
YoumustthenuseoneoftheresolverstoconfiguretheWSDLatruntime.
Theseareexplainedinthissection.
AccessingWSDLatruntimeThepossiblewaysofaccessingWSDLatruntimeareasfollows:1.
Commandline.
2.
Configurationfile(artix.
cfg).
3.
Well-knowndirectory.
4.
StubWSDLsharedlibrary.
Theseresolvermechanismsarelistedinorderofpriority,whichmeansthatifyouconfiguremorethanone,thosehigherupinthelistoverridethoselowerdown.
See"OrderofprecedenceforaccessingWSDL"onpage250.
ConfiguringWSDLonthecommandlineYoucanconfigureWSDLbypassingURLsasparameterstoyourapplicationatstartup.
WSDLURLspassedatapplicationstartuptakeprecedenceoversettingsinaconfigurationfile.
ThesyntaxforpassinginWSDLtoanyArtixapplicationis:Forexample,assumingyourapplicationisusingtheget_service_contract()method,youcanavoidconfigurationfilesbystartingyourapplicationasfollows:-BUSservice_contracturl.
/server-BUSservice_contract.
.
/.
.
/etc/hello.
wsdlAccessingWSDLContracts247ThismeansthattheArtixbusparsestheURLsthatyoupassintoitonstartup.
ItfindsanyservicesthatareinthisWSDL,andcachesthemforanyusersthatwantWSDLforanyofthoseservices.
ParsingWSDLondemandIfyoudonotwanttheArtixbustoparsethedocumentuntilitisneeded,youcanspecifywhatservicesarecontainedintheWSDL,whichresultsintheURLbeingparsedonlyondemand.
Thesyntaxforthisis:Forexample,theapplicationwouldbestartedasfollows:SpecifyingtheWSDLURLonstartupenablestheArtixbustoavoidparsingtheWSDLuntilitisrequested.
ConfiguringWSDLinaconfigurationfileYoucanalsoconfigurethelocationofyourWSDLinanartix.
cfgfile,usingthefollowingsyntax.
Theseconfigurationvariablesaredescribedasfollows:bus:qname_alias:service-nameenablesyoutoassignanaliasorshorthandversionofaserviceQName.
Youcanthenusetheshortversionoftheservicenameinotherconfigurationvariables.
ThesyntaxfortheserviceQnameis"{namespace}localpart".
bus:initial_contract:url:service-nameusesthealiasdefinedusingbus:qname_aliastoconfigurethelocationoftheWSDLcontract.
TheWSDLlocationsyntaxis"url".
ThiscanbeanyvalidURL,itdoesnotneedtobealocalfile.
ThefollowingexampleconfiguresaservicenamedSimpleService,definedinthehttp://www.
iona.
com/bus/testsnamespace:-BUSservice_contract{namespace}localpart@url.
/server-BUSservice_contract{http://www.
iona.
com/demos}HelloWorldService@.
.
/.
.
/etc/hello.
wsdlbus:qname_alias:service-name="{namespace}localpart";bus:initial_contract:url:service-name="url";bus:qname_alias:simple_service="{http://www.
iona.
com/bus/tests}SimpleService";bus:initial_contract:url:simple_serviceetc/simple_service.
wsdl";CHAPTER13|AccessingContractsandReferences248ConfiguringWSDLinawell-knowndirectoryYoucanalsoconfigureanArtixapplicationtosearchinawell-knowndirectorywhenitneedstoaccessWSDL.
Thisenablesyoutoconfiguremultipledocumentswithoutexplicitlyconfiguringeverydocumentonthecommandline,orinconfiguration.
Ifyouspecifyawell-knowndirectory,youonlyneedtocopytheWSDLdocumentsintothisdirectorybeforetheapplicationusesthem.
Youcanconfigurethedirectorylocationinaconfigurationfileorbypassingacommand-lineparameterstoyourC++application.
ConfiguringaWSDLdirectoryinaconfigurationfileTosetthedirectoryinconfiguration,usethefollowingvariable:Thevalue".
"meansusethedirectoryfromwheretheapplicationwasstarted.
Thespecifiedvalueisalistofdirectories,whichenablesyoutospecifymultipledirectories.
ConfiguringaWSDLdirectoryusingcommand-lineparametersIfyoudonotwishtouseaconfigurationfile,youcanconfiguretheWSDLdirectoryusingcommandlineparameters.
Thecommandlineoverridesanysettingsinafile.
Thesyntaxisasfollows:Forexample,toconfigureArtixtolookinthecurrentdirectory,andinthe".
.
/.
.
/etc"directory,usethefollowingcommand:ConfiguringmultipleWSDLdirectoriesYoucanconfiguremultiplewell-knowndirectoriesforyourapplicationtosearch.
However,itisnotrecommendedthatyouputtoomanyfilesinthedirectory.
Themorefilesyouputinthedirectory,thelongeritmaytaketofindthecontractthatyouarelookingfor.
Thedirectorysearchisoptimizedtofirstdoaquickfilescantoseeifanyofthefilespotentiallycontainthetargetservicerequested.
Thedocumentsarenotparsedunlessamatchhasbeenfound.
bus:initial_contract_dir=[".
"];-BUSservice_contract_dirdirectoryserver-BUSservice_contract_dir.
-BUSservice_contract_dir.
.
/.
.
/etc/AccessingWSDLContracts249Ifyouusemultipledirectories,theorderingmakesadifferenceifbothdirectoriescontainthesameservicedefinitions.
TheWSDLresolverssearchthedirectoriesintheorderthattheyareconfiguredin.
YoucanaddWSDLdocumentstothewell-knowndirectoriesaftertheapplicationhasstarted.
Thefilemustonlybepresentinthedirectorybeforetheapplicationrequestsit.
ConfiguringastubWSDLsharedlibraryItisalsopossibletoencodeaWSDLdocumentinsideaC++sharedlibrary.
JustlikeinJava,whereresourcesareaddedtoa.
jarfile,ArtixcanembedaWSDLdocumentinsideasharedlibrary.
ThisenablesyoutoresolveWSDLcontractsforArtixserviceswithoutusingafilesystemoranyremotecalls.
WhenaWSDLdocumentisencodedinsideasharedlibrary,thisiscalledastubWSDLsharedlibrary.
ArtixprovidesstubWSDLsharedlibrariesforthefollowingArtixservices:locatorsessionmanagerpeermanagercontainerThismeansthatyoucandeploytheseservicesintoenvironmentswithoutusinganyotherresourceslikeWSDLdocuments.
ArtixdoesnotprovideAPIstoenableyoutoencodeyourowndocumentsintostublibraries.
StubWSDLsharedlibrariesarethelastresolvermechanismstobecalled.
Ifyouconfigureanyothers,thestubWSDLsharedlibraryisnotused.
AlltheArtixstubWSDLlibrariescontainWSDLendpointswithSOAPHTTPportaddressesof0.
Thismeansthatiftheseversionsareusedtoactivateaservice,theendpointisinstantiatedonadynamicport.
Thisistherecommendedapproachforinternalserviceslikethecontainerandpeermanager.
CHAPTER13|AccessingContractsandReferences250OrderofprecedenceforaccessingWSDLBecausethereareseveralavailableoptionsforaccessingWSDL,Artixsearcheseachresolverinturnforasuitabledocument.
Itreturnsthefirstsuccessfulresulttotheuser.
TheorderofprecedenceforaccessingWSDLisasfollows:1.
Contractpassedonthecommandline.
2.
Contractspecifiedinaconfigurationfile.
3.
Well-knowndirectorypassedonthecommandline.
4.
Well-knowndirectoryspecifiedinaconfigurationfile.
5.
StubWSDLsharedlibrary.
ExampleYouhavefourWSDLcontractsthatcontainadefinitionforaservicenamedSimpleService:1.
Configurethefollowinginyourconfigurationfile:2.
Startyourserverasfollows:Thecontractinone/simple.
wsdlisreturnedtotheapplicationbecauseWSDLconfiguredusing-BUSservice_contracttakesprecedenceoverallothersources.
one/simple.
wsdltwo/simple.
wsdlthree/simple.
wsdlfour/simple.
wsdlbus:qname_alias:simple_service="{http://www.
iona.
com/bus/tests}SimpleService";bus:initial_contract:url:simple_service="two/simple.
wsdl";bus:initial_contract_dir=["four"];server-BUSservice_contract_dirthree-BUSservice_contractone/simple.
wsdlAccessingWSDLContracts251Ifyoustartyourserverasfollows:Thecontractintwo/simple.
wsdlisreturnedtotheapplicationbecausetheorderthattheresolversarecalledmeansthatthecontractspecifiedinaconfigurationfileisthefirstsuccessfulone.
AccessingstandardArtixservicesFordetailsofaccessingWSDLforstandardArtixservicessuchasthelocatororsessionmanager,see"AccessingArtixServices"onpage258.
serverCHAPTER13|AccessingContractsandReferences252AccessingEndpointReferencesOverviewAnendpointreferenceisanobjectthatencapsulatestheendpointandcontractinformationforaparticularWSDLservice.
AserializedreferenceisanXMLdocumentthatreferstoarunningserviceinstance,andcontainsaURLpointertowheretheserviceWSDLcanberetrieved.
YoucanserializeareferencetoanyservicebydeployingitintotheArtixcontainerandcallingit_container_admin-publishreference.
Alternatively,youcanuseAPIstopublishanendpointreferencedirectly.
Forexample,whenyourclientapplicationusestheArtixbustolookupaendpointreferenceusingtheserviceQName,itcallsthemethodresolve_initial_reference().
AccessingendpointreferencesworksthesamewayasaccessingWSDL,andyouhaveseveraloptionsforconfiguringthereferencethattheclientuses.
LikewithWSDLcontracts,Artixtrieseachresolverinturnuntilitgetsasuccessfulresultoranerror.
Ifanyofthesereturnnull,thecoretriesthenextone.
Ifyouhaveabadlyconfiguredreference,theresolverreturnsanerrororexception.
Accessingendpointreferencesisatwo-stepprocess:1.
YoumustfirstusetheC++APItoresolvethereference(see"Enablingclientstoaccessendpointreferences"onpage245).
2.
Youmustthenuseoneoftheresolverstoconfigurethereferenceatruntime.
Thisisexplainedinthissection.
FordetailsofhowtousetheArtixcontainertopublishendpointreferencesforaclient,seeChapter6.
EndpointreferenceresolvermechanismsThepossiblewaysofconfiguringendpointreferencesatruntimeareasfollows:1.
Colocatedservice.
2.
C++programmaticconfiguration.
3.
Commandline4.
Configurationfile.
5.
WDSLcontract.
AccessingEndpointReferences253Thesearelistedinorderofprecedence,soifyouconfiguremorethanone,thosehigherupinthelistoverridethoselowerdown.
Artixsearcheseachinturnforasuitablematchandreturnsthefirstsuccessfulresult.
UsingacolocatedserviceThemostconvenientplacetofindaendpointreferencetoaservicethataclienthasrequestedisinthelocalArtixbus.
Whentheactivatedserviceiscolocated(availablelocallyinthesameprocess),theclientcaneasilyfindalocalreferencetoinvoke.
Inthiscase,theclient'sresolve_initial_reference()methodreturnsareferencetothecolocatedservice.
Thisisthefirstresolverthattheruntimechecks.
Youcanexpectresolutiontoalwayssucceedforservicesthatareactivatedlocally.
SpecifyingendpointreferencesinC++codeInC++,youcanregisteraninitialreferenceprogrammaticallyusingtheArtixbus.
YoucanregisteranreferenceinoneC++plug-inthatwouldenableanotherplug-intoresolvethatreferenceusingthebusAPI.
Artixchecksthebusforlocalservices,soitwouldbeunusualforanapplicationtorequiretheprogrammaticconfigurationunlessitusesmultiplebuses.
Youcannotprogrammaticallyconfigureareferenceinonebusandhaveitresolvedinanother.
Inaddition,youcannotactivateaserviceinonebus,andhaveitresolvedinanother.
Ifyouwishaclientinonebustouseareferencefromanactiveserviceinanotherbusyoushouldprogrammaticallyregisterthereferencefromonebustothenext.
CHAPTER13|AccessingContractsandReferences254Forexample:SpecifyingendpointreferencesonthecommandlineYoucanalsopassinreferenceURLsasparameterstotheapplicationonstartup.
EndpointreferenceURLspassedtotheapplicationonstartuptakeprecedenceoversettingsinanartix.
cfgfile.
ThesyntaxforpassinginareferencetoanyArtixapplicationis:Forexample,assumingyourapplicationisusingresolve_initial_reference(),youcouldavoidconfigurationfilesbystartingyourapplicationasfollows:ThismeansthattheArtixbusparsestheURLspassedintoitonstartup.
Itcachesthemforanyusersthatrequestreferencesofthistypeatruntime.
\\C++QNameservice_qname("","SOAPService",http://www.
iona.
com/hello_world_soap_http);//ActivatetheserviceonbusoneHelloWorldImplservant(bus_one);WSDLService*contract=bus_one->get_service_contract(service_qname);bus_one->register_servant(*contract,servant);Service_varservice=bus_one->get_service(service_qname);//Registertheservicereferenceonbustwobus_two->register_initial_reference(service->get_endpoint_reference());-BUSinitial_referenceurl.
/client-BUSinitial_reference.
.
/.
.
/etc/hello.
xmlAccessingEndpointReferences255ParsingendpointreferencesondemandIfyoudonotwanttoparsethereferenceXMLuntilitisneeded,youcanspecifytheservicenamethatthereferencemapsto.
ThismeansthattheXMLisnotparseduntilitisfirstrequested.
ThesyntaxforthisisForexample,theapplicationisstartedasfollows:SpecifyingendpointreferencesinaconfigurationfileYoucanalsospecifyanendpointreferenceinaconfigurationfile.
ThereferencemustbeserializedinanXMLformat(forexample,outputtoafileusingitcontainer-publishreference).
YoucanuseconfigurationvariablesyntaxtoconfigureaURLorthecontentsofaserializedreference.
SpecifyingserializedreferenceURLsYoucanconfigurethelocationofyourWSDLinanartix.
cfgfile,usingthefollowingconfigurationvariablesyntax.
Thesevariablesaredescribedasfollows:bus:qname_alias:service-nameenablesyoutoassignanaliasorshorthandversionofaserviceQName.
Youcanthenusetheshortversionoftheservicenameinotherconfigurationvariables.
ThesyntaxfortheserviceQnameis"{namespace}localpart".
bus:initial_contract:url:service-nameusesthealiasdefinedusingbus:qname_aliastoconfigurethelocationoftheendpointreference.
TheXMLlocationsyntaxis"url".
TheURLvaluecanbeanyvalidURL,itdoesnothavetobealocalfile,butundermostcircumstancestheendpointreferenceislocal.
-BUSinitial_reference{namespace}localpart@url.
/client-BUSinitial_reference{http://www.
iona.
com/demos}HelloWorldService@.
.
/.
.
/etc/hello.
xmlbus:qname_alias:service-name="{namespace}localpart";bus:initial_references:url:service-name="url";CHAPTER13|AccessingContractsandReferences256ThefollowingexampleconfiguresaservicenamedSimpleService,definedinthehttp://www.
iona.
com/bus/testsnamespace:SpecifyinginlinereferencesInsteadofconfiguringaURL,youcanalsoinlinetheendpointreferenceXMLinaconfigurationfile.
ThisissimilartoconfiguringCORBAinitialreferencesinOrbix,anditeffectivelyhardcodestheaddressing.
Thisshouldonlybeusedforstaticserviceswhereyoudonotexpectanythingtochange(forexample,detailssuchastheendpointaddressandtransportinformation).
Thefollowingisanexampleinlineendpointreference:TheendpointreferenceappearsononelineinanXMLdocument.
SpecifyingendpointreferencesusingWSDLHowArtixfindsendpointreferencesisbuiltonhowitfindsWSDL.
Whenconfiguringareference,youcanusealltheoptionsavailableforconfiguringWSDL.
WhenyoulocateaWSDLdocumentthatcontainsthewsdl:serviceyouarelookingfor,youcanconvertittoareferenceandreturnittotheclient.
IfArtixfailstofindasuitablereferenceusingthereferenceresolvermechanisms,itfallsbacktothoseusedforWSDL.
Thisisusefulincertainscenarios.
Forexample,whenyouonlywanttoconfigurewell-knownArtixservices(suchasthelocator).
IfyouconfiguretheWSDL,boththeserviceandtheclientcanbenefitfromasingleconfigurationsource.
bus:qname_alias:simple_service="{http://www.
iona.
com/bus/tests}SimpleService";bus:initial_contract:url:simple_serviceetc/simple_service.
xml";bus:qname_alias:simple_service="{http://www.
iona.
com/bus/tests}SimpleService";bus:initial_references:inline:simple_service="CHAPTER13|AccessingContractsandReferences258AccessingArtixServicesOverviewArtixincludesWSDLcontractsforalloftheservicesthatitships(forexample,thelocatorandsessionmanager).
Thissectionshowsthedefaultconfigurationprovidedfortheseservices.
Pre-configuredWSDLArtixprovidespre-configuredaliasesandWSDLlocationsforallofitsservices.
Bydefault,theartix.
cfgfileincludesthefollowingentries:Inyourapplication,ifyouresolvetheWSDLoranendpointreferenceforanyoftheseservices,bydefault,theWSDLfromthesevaluesisused.
Mostoftheseservicesareconfiguredtouseaportofzero.
IfyoudonotwanttousethedefaultWSDLforanyoftheseservices,youmustoverridethedefault.
#WellknownServicesQNamealiasesbus:qname_alias:container="{http://ws.
iona.
com/container}ContainerService";bus:qname_alias:locator="{http://ws.
iona.
com/locator}LocatorService";bus:qname_alias:peermanager="{http://ws.
iona.
com/peer_manager}PeerManagerService";bus:qname_alias:sessionmanager="{http://ws.
iona.
com/sessionmanager}SessionManagerService";bus:qname_alias:sessionendpointmanager="{http://ws.
iona.
com/sessionmanager}SessionEndpointManagerService";bus:qname_alias:uddi_inquire="{http://www.
iona.
com/uddi_over_artix}UDDI_InquireService";bus:qname_alias:uddi_publish="{http://www.
iona.
com/uddi_over_artix}UDDI_PublishService";bus:qname_alias:login_service="{http://ws.
iona.
com/login_service}LoginService";bus:initial_contract:url:container="install_root/artix/Version/wsdl/container.
wsdl";bus:initial_contract:url:locator="install_root/artix/Version/wsdl/locator.
wsdl";bus:initial_contract:url:peermanager="install_root/artix/Version/wsdl/peer-manager.
wsdl";bus:initial_contract:url:sessionmanager="install_root/artix/Version/wsdl/session-manager.
wsdl";bus:initial_contract:url:sessionendpointmanager="install_root/artix/Version/wsdl/session-manager.
wsdl";bus:initial_contract:url:uddi_inquire="install_root/artix/Version/wsdl/uddi/uddi_v2.
wsdl";bus:initial_contract:url:uddi_publish="install_root/artix/Version/wsdl/uddi/uddi_v2.
wsdl";bus:initial_contract:url:login_service="install_root/artix/Version/wsdl/login_service.
wsdl";AccessingArtixServices259FurtherinformationFormoredetailsontheconfigurationvariablesforaccessingWSDLcontractsandendpointreferences,seetheArtixConfigurationReference,C++Runtime.
FormoreexamplesofaccessingWSDLandreferencesinArtixapplications,seethefollowingdemos:.
.
samples\basic\bootstrap.
.
samples\advanced\container\deploy_plugin.
.
samples\advanced\container\deploy_routes.
.
samples\advanced\locator.
.
samples\advanced\locator_queryCHAPTER13|AccessingContractsandReferences260261CHAPTER14AccessingServiceswithUDDIArtixprovidessupportforUniversalDescription,DiscoveryandIntegration(UDDI).
Thischapterexplainsthebasics,andshowshowtoconfigureUDDIproxysupportinArtixapplications.
ItalsoshowshowtoconfigurejUDDIrepositorysettings.
InthischapterThischapterincludesthefollowingsections:IntroductiontoUDDIpage262ConfiguringUDDIProxypage264ConfiguringajUDDIRepositorypage265CHAPTER14|AccessingServiceswithUDDI262IntroductiontoUDDIOverviewAUniversalDescription,DiscoveryandIntegration(UDDI)registryisaformofdatabasethatenablesyoutostoreandretrieveWebservicesendpoints.
ItisparticularlyusefulasameansofmakingWebservicesavailableontheInternet.
InsteadofmakingyourWSDLcontractavailabletoclientsintheformofafile,youcanpublishtheWSDLcontracttoaUDDIregistry.
ClientscanthenquerytheUDDIregistryandretrievetheWSDLcontractatruntime.
PublishingWSDLtoUDDIYoucanpublishyourWSDLcontracteithertoalocalUDDIregistryortoapublicUDDIregistry,suchashttp://uddi.
ibm.
comorhttp://uddi.
microsoft.
com.
TopublishyourWSDLcontract,navigatetooneofthepublicUDDIWebsitesandfollowtheinstructionsthere.
AlistofpublicUDDIregistriesisavailablefromWSINDEX(http://www.
wsindex.
org/UDDI/Registries/index.
html)ArtixUDDIURLformatArtixusesUDDIquerystringsthattaketheformofaURL.
ThesyntaxforaUDDIURLisasfollows:uddi:UDDIRegistryEndpointURLQueryStringTheUDDIURLisbuiltfromthefollowingcomponents:UDDIRegistryEndpointURL—theendpointaddressofaUDDIregistry.
ThiscouldeitherbealocalUDDIregistry(forexample,http://localhost:9000/services/uddi/inquiry)orapublicUDDIregistryontheInternet(forexample,http://uddi.
ibm.
com/ubr/inquiryapiforIBM'sUDDIregistry).
IntroductiontoUDDI263QueryString—acombinationofattributesusedtoquerytheUDDIdatabasefortheWebserviceendpointdata.
Currently,Artixonlysupportsthetmodelnameattribute.
Anexampleofaquerystringis:Withinaquerycomponent,thecharactersand$arereserved.
ExamplesofvalidUDDIURLsInitializingaclientproxywithUDDIToinitializeaclientproxywithUDDI,simplypassavalidUDDIURLstringtotheproxyconstructor.
Forexample,ifyouhavealocalUDDIregistry,http://localhost:9000/services/uddi/inquiry,whereyouhaveregisteredtheWSDLcontractfromtheHelloWorlddemonstration,youcaninitializetheGreeterClientproxyasfollows:C++tmodelname=helloworlduddi:http://localhost:9000/services/uddi/inquirytmodelname=helloworlduddi:http://uddi.
ibm.
com/ubr/inquiryapitmodelname=helloworld//C++.
.
.
IT_Bus::Bus_varbus=IT_Bus::init(argc,argv);//InstantiateaninstanceoftheproxyGreeterClienthw("uddi:http://localhost:9000/services/uddi/inquirytmodelname=helloworld");Stringstring_out;//InvokesayHioperationhw.
sayHi(string_out);CHAPTER14|AccessingServiceswithUDDI264ConfiguringUDDIProxyOverviewArtixUDDIproxyservicecanbeusedbyapplicationstoqueryendpointinformationfromaUDDIrepository.
ThissectionexplainshowtoconfigureUDDIproxysupportforclientapplications.
C++configurationToconfigureanArtixC++applicationforUDDIproxysupport,adduddi_proxytotheapplication'sorb_pluginslist.
Forexample:#artix.
cfgmy_application_scope{orb_pluginsuddi_proxy"];.
.
.
};ConfiguringajUDDIRepository265ConfiguringajUDDIRepositoryOverviewTheArtixdemosuseanopensourceUDDIrepositoryimplementationnamedjUDDI.
ThesedemosusetheHSQLDBdatabasetostoreUDDIinformation.
Forconvenience,thisisconfiguredtoruninfile(embedded)modebydefault.
SettingjUDDIpropertiesYoucanconfigurejUDDIproperties,suchasyourdatabasesettings,inyourjuddi.
propertiesfile.
Thisfileislocatedinthefollowingdirectory:Forexample,theHSQLDBdatabasesettingsinthedefaultjuddi.
propertiesfileareasfollows:IfyouwantchangeyourdatabasetoMySQL,uncommentallthemysqlsettings,andusethefollowinginstead:FurtherinformationFormoredetails,see:http://ws.
apache.
org/juddi/.
ArtixInstallDir\samples\integration\juddi\artix_server\etc#hsqldbjuddi.
useConnectionPool=truejuddi.
jdbcDriver=org.
hsqldb.
jdbcDriverjuddi.
jdbcURL=jdbc:hsqldb:etc/juddi_dbjuddi.
jdbcUser=sajuddi.
jdbcPassword=juddi.
jdbcMaxActive=10juddi.
jdbcMaxIdle=10#mysqljuddi.
useConnectionPool=truejuddi.
jdbcDriver=com.
mysql.
jdbc.
Driverjuddi.
jdbcURL=jdbc:mysql://10.
129.
9.
101:3306/juddijuddi.
jdbcUser=rootjuddi.
jdbcPassword=juddi.
jdbcMaxActive=10juddi.
jdbcMaxIdle=10CHAPTER14|AccessingServiceswithUDDI266267CHAPTER15EmbeddingArtixinaBEATuxedoContainerArtixcanberunandmanagedbyBEATuxedolikeanativeTuxedoapplication.
InthischapterThischapterincludesthefollowingsections:EmbeddinganArtixProcessinaTuxedoContainerpage268CHAPTER15|EmbeddingArtixinaBEATuxedoContainer268EmbeddinganArtixProcessinaTuxedoContainerOverviewToenableArtixtointeractwithnativeBEATuxedoapplications,youmustembedArtixintheTuxedocontainer.
Ataminimum,thisinvolvesaddinginformationaboutArtixinyourTuxedoconfigurationfile,andregisteringyourArtixprocesseswiththeTuxedobulletinboard.
Inaddition,youcanalsoenabletoTuxedobringupyourArtixprocessasaTuxedoserverwhenrunningtmboot.
Thissectionexplainsthesestepsindetail.
ProcedureToembedanArtixprocessinaTuxedocontainer,completethefollowingsteps:1.
EnsurethatyourenvironmentiscorrectlyconfiguredforTuxedo.
2.
YoucanaddtheTuxedoplug-in,tuxedo,toyourArtixprocess'sorb_pluginslist.
However,thetuxedoplug-inisloadedtransparentlywhentheprocessparsestheWSDLfile.
3.
Setplugins:tuxedo:servertotrueinyourArtixconfigurationscope.
4.
EnsurethattheexecutableforyourArtixprocessisplacedinthedirectoryspecifiedintheAPPDIRentryofyourTuxedoconfiguration.
5.
EdityourTuxedoconfiguration'sSERVERSsectiontoincludeanentryforyourArtixprocess.
Note:ATuxedoadministratorisrequiredtocompleteaTuxedodistributedarchitecture.
WhendeployingArtixinadistributedarchitecturewithothermiddleware,pleasealsoseethedocumentationforthosemiddlewareproducts.
orb_plugins=[.
.
.
"tuxedo"];EmbeddinganArtixProcessinaTuxedoContainer269Forexample,iftheexecutableofyourArtixprocessisringo,addthefollowingentryintheSERVERSsection:ThisassociatesringowiththeTuxedogroupcalledBEATLESinyourconfigurationandassignsringoaserverIDof1.
Youcanmodifytheserver'spropertiesasneeded.
6.
EdityourTuxedoconfiguration'sSERVICESsectiontoincludeanentryforyourArtixprocess.
WhilestandardTuxedoserversonlyrequireaSERVICESentryifyouaresettingoptionalruntimeproperties,ArtixserversintheTuxedocontainerrequireanentry,evenifnooptionalruntimepropertiesarebeingset.
ThenameenteredfortheArtixprocessisthenamespecifiedintheserviceNameattributeoftheTuxedoportdefinedintheArtixcontractfortheprocess.
Forexample,giventheportdefinitionshowninExample23,theSERVICESentrywouldbepersonalInfoService.
7.
IfyoumadetheTuxedoconfigurationchangesintheASCIIversionoftheconfiguration,UBBCONFIG,reloadtheTUXCONFIGwithtmload.
WhenyouhaveconfiguredTuxedo,itmanagesyourArtixprocessasifitwerearegularTuxedoserver.
ringoSVRGRP=BEATLESSVRID=1Example23:SampleServiceEntryCHAPTER15|EmbeddingArtixinaBEATuxedoContainer270271IndexAacknowledgementendpointURI207acknowledgementinterval211ACTIVATED146AdaptiveRuntimearchitecture42anonymousURI207,222ANSICstrftime()function60applicationsource203arbitrarysymbols49ART42Artix230artix:endpoint164artix:endpoint:endpoint_list164artix:endpoint:endpoint_name:wsdl_location164artix:endpoint:endpoint_name:wsdl_port165artix:interceptors:message_snoop:enabled76artix:interceptors:message_snoop:log_level76artix.
cfg42,47,122Artixbuspre-filter69Artixchainbuilder174Artixcontainer129artix_env157artix_envscript32Artixhighavailability182ArtixIDLcompiler36Artixtransformer160ArtixWSDLpublishingservice230ASCII104asynchronousacknowledgements211auto-demotionofmasters183avg91Bbaseretransmissioninterval209BerkeleyDB181binding:artix:client_message_interceptor_list122binding:artix:server_message_interceptor_list122binding:artix:server_request_interceptor_list187binding:server_binding_list99browser233,236bus:initial_contract:url:service177bus:initial_contract:url:service-name247bus:initial_contract_dir248bus:initial_references:url:service-name255bus:qname_alias:service177bus:qname_alias:service-name247,255-BUSCONFIG_51,52-BUSconfig_dir35,155-BUSconfig_domains_dir35,52-BUSdomain_name36,155-BUSinitial_reference52,254-BUSlicense_file35,155BusLogger71-BUSname44,155-BUSnameparameter44-BUSproduct_dir35bus_response_monitor88-BUSservice_contract52,246-BUSservice_contract_dir52,248CC++compilers33C++debugging157canonical234chainbuilder162,167,173characterencodingschema104CLASSPATH153clientID,configuring89cluster183codeset104CODESET_INCOMPATIBLE110codesetnegotiation108,109Collector87collector94colocatedservice253commandlineconfiguration51-compiler33configurationcommandline51datatype46domain42files47namespace45scope42symbols49variables45INDEX272configurationcontext214,227constructedtypes46-container144container129,249administrationclient133persistentdeployment148server132service132Windowsservice152ContainerService.
url139,140content-basedrouting170context214,227ContextContainer118contracts241Conversioncodeset109count91CreateSequence203CreateSequenceResponse203D-d137-daemon139dateformat,rollinglogfile60db_dump185db_recover185db_stat185db_verify185DEACTIVATED146debugging157deliveryassurancepolicies213deliveryassurances203dependenciesfile135-deploy140,143,145-deployfolder140,149,154deploymentdescriptor132,135destination202-displayname154double-byteUnicode110dynamiclogging72,144dynamicread/writedeployment149EEBCDIC114echoString111echoVoid111electionprotocol183EMS,definition86encodings104endpointreferences230,241,244,252EnterpriseManagementSystems86EnterpriseObjectIdentifier83-env140,154environmentvariables152ERROR56EUC-JP105event_log:filters54,62,122,189event_log:filters:artix:pre_filter69event_log:filter_sensitive_info56event_log:log_service_names:active70event_log:log_service_names:services70ExactlyOnceConcurrent203,213ExactlyOnceInOrder203,213ExactlyOnceReceivedOrder203,213exponentialbackoffforretransmission210exponentialbackoffinterval203ExtendedBinaryCodedDecimalInterchangeCode114ExtensibleStylesheetLanguageTransformations160FFATAL_ERROR56-file137,143filters63fixed:binding111fixed:body111four-byteUnicode110Gget_logging_config()71-getlogginglevel72,144get_service_contract()244,246Hha_conf191,195hardcodedWSDL242-help137,140highavailability182clients193locator190highwatermark215-host144hostnameformat234HSQLDBdatabase265HTMLmenu237HTTPGET239HTTPPOST239INDEX273HTTPtracelogging62HTTPtransport239Ii18n-context.
xsd115,118i18n_interceptor122IANA83,105IBMTivoliintegration86IBMWebSphereMQ,internationalization114ideograms104idl.
cfg36IDLconfigurationfile36InboundCodeSet114includestatement47INFO_ALL56INFO_HIGH56INFO_LOW56INFO_MEDIUM56INITIALIZED146initialsender202initial_threads215inlinereferences256int92intercept_dispatch()118intercept_invoke()118internationalizationCORBA108MQ114SOAP107InternetAssignedNumberAuthority105InternetAssignedNumbersAuthority83InteroperableObjectReference98IONATivoliProvider86IOR98ipaddress234ISO-2022-JP105ISO8859104ISO-8859-1105ITArtixContainer152IT_ARTIXENV38IT_ATLI2_IOP67IT_ATLI2_IP67IT_ATLI2_IP_TUNNEL67IT_ATLI_TLS67IT_BUS63IT_Bus::Exception211IT_Bus::init()44,51,59IT_BUS.
BINDING63IT_BUS.
BINDING.
COLOC63IT_BUS.
BINDING.
CORBA63IT_BUS.
BINDING.
CORBA.
CONTEXT63IT_BUS.
BINDING.
FIXED63IT_BUS.
BINDING.
HTTP63IT_BUS.
BINDING.
SOAP63IT_BUS.
BINDING.
SOAP_COMMON64IT_BUS.
BINDING.
TAGGED64IT_BUS.
CORE64IT_BUS.
CORE.
CONFIG64IT_BUS.
CORE.
CONTEXT64IT_BUS.
CORE.
INITIAL_REFERENCE64IT_BUS.
CORE.
PLUGIN64IT_BUS.
CORE.
RESOURCE_RESOLVER64IT_BUS.
FOUNDATION.
AFC64IT_BUS.
FOUNDATION.
CONTEXT_LIBRARY64IT_BUS.
I18N.
INTERCEPTOR64IT_BUS.
INTEGRATION.
AP_NANO_AGENT64IT_BUS.
INTEGRATION.
CA_WSDM_OBSERVER64IT_BUS.
JNI.
GENERIC_PLUGIN64IT_BUS.
JNI.
JBUS64IT_BUS.
JNI.
JBUS.
TRANSACTION64IT_BUS.
JNI.
JNI_UTIL64IT_BUS.
JNI.
TRANSACTION64IT_BUS.
JVM_MANAGER64IT_BUS.
LOGGING64IT_BUS.
LOGGING.
LOG4J64IT_BUS.
LOGGING.
RESPONSE_TIME64IT_BUS.
LOGGING.
SNMP65IT_BUS.
MANAGEMENT65IT_BUS.
MESSAGING_PORT65IT_BUS.
SERVICE65IT_BUS.
SERVICE.
ACTIVATOR.
REGISTRY65IT_BUS.
SERVICE.
CHAIN65IT_BUS.
SERVICE.
CONTAINER65IT_BUS.
SERVICE.
DB65IT_BUS.
SERVICE.
DB.
ENV65IT_BUS.
SERVICE.
DB.
REPLICA.
IMPL65IT_BUS.
SERVICE.
DB.
REPLICA.
MGR65IT_BUS.
SERVICE.
DB.
REPLICA.
MONITOR65IT_BUS.
SERVICE.
DB.
REPLICA.
SYNC65IT_BUS.
SERVICE.
LOCATOR65IT_BUS.
SERVICE.
PEER_MGR65IT_BUS.
SERVICE.
ROUTING65IT_BUS.
SERVICE.
SECURITY65IT_BUS.
SERVICE.
SECURITY.
CERT_VALIDATOR65IT_BUS.
SERVICE.
SECURITY.
LOGIN_SERVICE.
CLIENT65INDEX274IT_BUS.
SERVICE.
SECURITY.
LOGIN_SERVICE.
SERVICE65IT_BUS.
SERVICE.
SECURITY.
SECURITY_INTERCEPTOR65IT_BUS.
SERVICE.
SECURITY.
WSS66IT_BUS.
SERVICE.
SESSION_MGR66IT_BUS.
SERVICE.
WSDL_PUBLISH66IT_BUS.
SERVICE.
XSLT66IT_BUS.
TRANSACTIONS.
OTS66IT_BUS.
TRANSACTIONS.
WSAT66IT_BUS.
TRANSACTIONS.
XA66IT_BUS.
TRANSPORT.
HTTP66IT_BUS.
TRANSPORT.
MQ66IT_BUS.
TRANSPORT.
STUB_TRANSPORT66IT_BUS.
TRANSPORT.
TIBRV66IT_BUS.
TRANSPORT.
TUNNELL66IT_BUS.
TRANSPORT.
TUXEDO66IT_BUS.
VERSION66IT_BUS.
WSRM66IT_BUS.
WSRM_DB66IT_BUS.
XA_SWITC66IT_COBOL_PLI67IT_CODESET67IT_CONFIG_DIR35IT_CONFIG_DOMAINS_DIR35IT_CONNECTION_FILTER67it_container132,139it_container_admin72,133,143,252IT_CORE67IT_CSI67IT_DOMAIN_NAME36IT_GenericSecurityToolkit67IT_GIOP67IT_GSP67IT_HTTP67IT_HTTPS67IT_IDL_CONFIG_FILE36IT_IIOP67IT_IIOP_TLS67IT_INIT_BUS_LOGGER_MEM71IT_LICENSE_FILE35IT_LICENSING67IT_Logging::LogStream83IT_MESSAGING67IT_MGMT_LOGGING68IT_OBJECT_KEY_REPLACER68IT_OTS68IT_OTS_LITE68IT_POA68IT_POA_LOCATOR68IT_PRODUCT_DIR35,153IT_REQUEST_LOGGER68it_response_time_logger99IT_SCHANNEL68IT_SECURITY68IT_TLS68IT_WORKQUEUE68IT_WSDLGEN_CONFIG_FILE36IT_WSRM66IT_XA68JJapaneseEUC104JapaneseISO2022104JavaAPIforXML-BasedWebServices25Javaconfiguration88JAVA_HOME35JAX-WS25JDK153JRE153jUDDI265juddi.
properties265LLatin-1104lifecyclemessageformats93-listservices143,146,147LocalCodeSet114local_log_stream54locator249locator,loadbalancing190logdateformat60logfile,rolling59logfileinterpreter86logging189API71inheritance75messageseveritylevels55passwords56perbus71precision62service-based70setfiltersforsubsystems63silent75loggingcollector94LoggingConfig71logginglevelsINDEX275getting71,72,144setting54,71,73,144loggingmessageformats91LOG_INHERIT75LOG_SILENT75lowwatermark215Mmark_as_write_operations()198master-slavereplication182max92maximummessagesinRMsequence212maximumunacknowledgedmessagesthreshold210maxqueuesize216MEP224MessageExchangePattern222,225messagepartelement170MESSAGE_SNOOP68messagesnoop76MIB,definition78MicrosoftVisualC++157min92minoritymaster189MQ,internationalization114multi-homed234MySQL265Nnamespace91namingconventions150nativecodeset108NCS108NOT_INITIALIZED146Oonewaycalls217operation91oph92orb_plugins88,164,168,176,218OSFCodeSetRegistry106OutboundCodeSet114Ppartelement170passwordslogging56PATH153peermanager249performancelogging86performanceloggingcollector94persistence217persistentdatabase185persistentdeployment148PersistentMap185per-threadRMsession214-pluginDir137-pluginImpl137-pluginName137plugins:artix:db:allow_minority_master189plugins:artix:db:home218plugins:artix:db:iiop:port188plugins:artix:db:priority188plugins:artix:db:replicas186plugins:bus_response_monitor:type88plugins:chain:endpoint:operation:service_chain178plugins:chain:endpoint:operation_list177plugins:chain:endpoint_name:operation_name:service_chain168plugins:chain:init_on_first_call179plugins:chain:servant_list177plugins:codeset:char:ccs109plugins:codeset:char:ncs108plugins:codeset:wchar:ccs109plugins:codeset:wchar:ncs108plugins:container:deployfolder149plugins:container:deployfolder:readonly150plugins:ha_conf:random:selection198plugins:ha_conf:strategy198plugins:it_response_time_collector:filename88plugins:it_response_time_collector:server-id89plugins:local_log_stream:buffer_file61plugins:local_log_stream:filename_date_format60plugins:local_log_stream:log_thread_id62plugins:local_log_stream:precision_logging62plugins:local_log_stream:rolling_file60plugins:locator:persist_data190plugins:locator:selection_method190plugins:messaging_port:base_replyto_url226plugins:messaging_port:supports_wsa_2005_mep225plugins:messaging_port:supports_wsa_mep225plugins:messaging_port:wsrm_enabled206plugins:remote_log_receiver:iiopaddr_list98plugins:remote_log_receiver:ior_filename98plugins:remote_log_receiver:log_filename98plugins:remote_log_receiver:prerequisite_plugins98INDEX276plugins:snmp_log_stream:community83plugins:snmp_log_stream:oid83plugins:snmp_log_stream:port83plugins:snmp_log_stream:server83plugins:snmp_log_stream:trap_type83plugins:soap:encoding107plugins:wsdl_publish:hostname234plugins:wsdl_publish:processor235plugins:wsdl_publish:publish_port233plugins:wsrm:acknowledgement_interval212plugins:wsrm:acknowledgement_uri207plugins:wsrm:base_retransmission_interval209plugins:wsrm:delivery_assurance_policy213plugins:wsrm:disable_exponential_backoff_retransmission_interval210plugins:wsrm:enable_per_thread_sequence_scope214plugins:wsrm:max_messages_per_sequence212plugins:wsrm:max_retransmission_attempts211plugins:wsrm:max_unacknowledged_messages_threshold210plugins:wsrm:thread_pool:high_water_mark215plugins:wsrm:thread_pool:initial_threads215plugins:wsrm:thread_pool:low_water_mark215plugins:wsrm:thread_pool:max_queue_size216plugins:wsrm:thread_pool:stack_size216plugins:xmlfile_log_stream:buffer_file61plugins:xmlfile_log_stream:filename58,59plugins:xmlfile_log_stream:filename_date_format60plugins:xmlfile_log_stream:rolling_file60plugins:xmlfile_log_stream:use_pid59plugins:xslt:endpoint_name:operation_map165plugins:xslt:endpoint_name:trace_filter170plugins:xslt:endpoint_name:use_element_name170plugins:xslt:servant_list165-pluginType137policies:at_http:server_address_mode_policy:publish_hostname234policies:http:trace_requests:enabled62policies:https:trace_requests:enabled62policies:soap:server_address_mode_policy:publish_hostname234-port139,144,154port91precedence,findingreferences253precedence,findingWSDL250precisionlogging62pre-filter69preprocessing235-preserve33primitivetypes46programmaticconfiguration253-propagate73-provider137proxy227-publish139-publishreference143,145,255-publishurl144,145,146-publishwsdl144,145QQName244QueryString263-quiet138Rrandomendpointselection198read-onlydeployment149references230,241remoteloggerdaemon94remotelogging94remote_log_receiver98-removeservice143,151replicagroup193replicapriorities187replicas,minimumnumber183,189replicatedservices182reply-toendpoint226request_forwarder184resolve_initial_reference()245,253Responsemonitor87retransmission210rollinglogfile59running93Ssecondaryhostname234SequenceAcknowledgement203serializedreference255servantregistration236serverID91,93server-id89serverID,configuring89-service137,143service91-serviceinstall154Servicesdialog155servicestates146INDEX277-serviceuninstall156sessionmanager249setInboundCodeSet118setLocalCodeSet118setlocale()108-setlogginglevel72,144setOutboundCodeSet118ShiftJIS104Shift_JIS105-shutdown144,147SHUTDOWN_COMPLETE147SHUTDOWN_PENDING147shutting_down93SNMPdefinition78ManagementInformationBase78snmp_log_stream82source202stacksize216starting_up93-startservice143statelessservers197status93-stopservice143,147strftime()60stubWSDLsharedlibrary249-svcName154symbols49TTCS109threadpool215Tivoliintegration86TivoliTaskLibrary86tmodelname263tracelogging62transformer160transmissioncodeset108,109UUCS-2110UCS-4110UDDI261uddi_proxy264UDDIRegistryEndpointURL262ultimatereceiver202unacknowledgedmessages210Unicode105unqualified234US-ASCII105UTF-16105,107UTF-8105V-verbose33,137-version137,140VisualC++157WWARNING56webbrowser233,236Webservicechainbuilder162,167,174WebServicesInspectionLanguage238WebServicesReliableMessaging201WebSphereMQ,internationalization114Windowsservice152workqueue146wsa:MessageId222wsa:RelatesTo222wsa:ReplyTo222wsa:replyTo209wsa:To222WS-Addressing222WS-AddressingMessageExchangePattern224ws_chain176wsdd136WSDLcontracts241,244wsdlgen.
cfg36WSDLpreprocessing235wsdl_publish230WSDLpublishingservice230wsdltocpp136-wsdlurl137WSIL238WS-ReliableMessaging202WS-RM201wsrm205,218wsrm:AckRequested210wsrm:AcksTo203,207,209,211wsrm:SequenceTerminated211WS-RMacknowledgementendpointURI207wsrm_db218WS-RMpersistence217WS-RMthreading215WS-S56INDEX278Xxmlfile_log_stream54XSLTservice159Zz/OS94

特网云,美国独立物理服务器 Atom d525 4G 100M 40G防御 280元/月 香港站群 E3-1200V2 8G 10M 1500元/月

特网云为您提供高速、稳定、安全、弹性的云计算服务计算、存储、监控、安全,完善的云产品满足您的一切所需,深耕云计算领域10余年;我们拥有前沿的核心技术,始终致力于为政府机构、企业组织和个人开发者提供稳定、安全、可靠、高性价比的云计算产品与服务。公司名:珠海市特网科技有限公司官方网站:https://www.56dr.com特网云为您提供高速、稳定、安全、弹性的云计算服务 计算、存储、监控、安全,完善...

spinservers春节优惠:$149/月10Gbps圣何塞服务器-2*E5-2630Lv3 CPU,256G内存,2*1.6T SSD硬盘

spinservers是Majestic Hosting Solutions LLC旗下站点,商家提供国外服务器租用和Hybrid Dedicated等产品,数据中心包括美国达拉斯和圣何塞机房,机器默认10Gbps端口带宽,高配置硬件,支持使用PayPal、信用卡、支付宝或者微信等付款方式。农历春节之际,商家推出了几款特别促销配置,最低双路E5-2630Lv3机器每月149美元起,下面列出几款机器...

Sharktech10Gbps带宽,不限制流量,自带5个IPv4,100G防御

Sharktech荷兰10G带宽的独立服务器月付319美元起,10Gbps共享带宽,不限制流量,自带5个IPv4,免费60Gbps的 DDoS防御,可加到100G防御。CPU内存HDD价格购买地址E3-1270v216G2T$319/月链接E3-1270v516G2T$329/月链接2*E5-2670v232G2T$389/月链接2*E5-2678v364G2T$409/月链接这里我们需要注意,默...

sss258.com为你推荐
蓝瘦香菇被抢注有没有恶心蓝瘦香菇这两词的。微信回应封杀钉钉微信大封杀什么时候结束bbs.99nets.com怎么制作RO单机钟神发战旗TV ID:新年快乐丶未央不见是哪个主播百度关键词工具如何通过百度官方工具提升关键词排名www.yahoo.com.hk香港有什么有名的娱乐门户网站吗?haole018.comse.haole004.com为什么手机不能放?www.se222se.com原来的www站到底222eee怎么了莫非不是不能222eee在收视com了,/?求解lcoc.top日本Ni-TOP是什么意思?广告法有那些广告法?还有广告那些广告词?
php网站空间 抗投诉vps主机 企业域名备案 godaddy域名解析 国内免备案主机 buyvm 新加坡主机 5折 台湾服务器 l5639 哈喽图床 ixwebhosting 网通服务器ip 牛人与腾讯客服对话 骨干网络 个人域名 股票老左 91vps 网通服务器托管 备案空间 更多