企业服务总线技术_第1页
企业服务总线技术_第2页
企业服务总线技术_第3页
企业服务总线技术_第4页
企业服务总线技术_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

企业服务总线—技术马永光2015-05-18ESB简介天津联怡科技有限公司企业服务总线—技术ESB天津联怡科技有限公司一:OSB简介二:OSB技术三:OSB实现企业服务总线—技术ESB天津联怡科技有限公司OverviewoftheRun-TimeProcessinOSBAclientsendsaloanapplicationtoaproxyservicenamedLoanGateway1.Thedefaultproxyservicehasaconditionalroutingstagethatchecksthevalueoftherequestedinterestrateintheloanapplicationdocument.Iftheinterestrateislessthan5%,theloanapplicationisroutedtotheManagerLoanReviewbusinessservice;otherwiseitisroutedtotheNormalLoanProcessorbusinessservice.企业服务总线—技术ESB天津联怡科技有限公司Startanewsession.--

CreateaNewWSDLResource

企业服务总线—技术ESB天津联怡科技有限公司CreateaProxyService企业服务总线—技术ESB天津联怡科技有限公司CreateaProxyService……企业服务总线—技术ESB天津联怡科技有限公司CreateaProxyService……企业服务总线—技术ESB天津联怡科技有限公司TheOperationalSettingstabonthispagehasoptionstoenablemonitoringfortheproxyservice.企业服务总线—技术ESB天津联怡科技有限公司企业服务总线—技术ESB天津联怡科技有限公司

CreateaBusinessService-GeneralConfiguration企业业服服务务总总线线—技术术ESB天津津联联怡怡科科技技有有限限公公司司CreateaBusinessService-GeneralConfiguration企业业服服务务总总线线—技术术ESB天津津联联怡怡科科技技有有限限公公司司CreateaBusinessService-GeneralConfiguration企业业服服务务总总线线—技术术ESB天津津联联怡怡科科技技有有限限公公司司CreateaBusinessService-GeneralConfiguration企业业服服务务总总线线—技术术ESB天津津联联怡怡科科技技有有限限公公司司CreateaBusinessService-GeneralConfiguration企业业服服务务总总线线—技术术ESB天津津联联怡怡科科技技有有限限公公司司CreateaBusinessService-GeneralConfiguration企业服务总线线—技术ESB天津联怡科技技有限公司ConfiguretheLoanGateway1ProxyService企业服务总线线—技术ESB天津联怡科技技有限公司ConfiguretheLoanGateway1ProxyServiceNote:Astageisanelementofapipelineandalsoacontainerforactionsdefinedinapipeline.Actionsaretheelementsofapipelinestagethatdefinethehandlingofmessagesastheyflowthroughaproxyserviceatruntime.企业服务总线线—技术ESB天津联怡科技技有限公司ConfiguretheLoanGateway1ProxyService企业服务总线线—技术ESB天津联怡科技技有限公司ConfiguretheLoanGateway1ProxyService企业服务总线线—技术ESB天津联怡科技技有限公司ConfiguretheLoanGateway1ProxyServiceNote:Thedrag-and-dropfunctionalityworksonlyinInternetExplorer(IE)browsers.IfyouareusingabrowserotherthanIE,selecttheRateelementintheVariableStructurespane.TheexpressionisdisplayedinthePropertyInspectorpalette.PlacethecursorintheXQueryexpressiontextboxandclickCopyProperty.Theexpressioniscopiedtothetextbox.YoucanalsocopytheexpressioninthepaletteandpasteitintheXQueryExpressiontextbox.企业服务总线线—技术ESB天津联怡科技技有限公司ConfiguretheLoanGateway1ProxyService企业服务总线线—技术ESB天津联怡科技技有限公司ConfiguretheLoanGateway1ProxyServiceNote:Itisagoodpracticetovalidateanyupdatestotheroutingbehaviorbeforeyousavetheconfiguration.企业服务总线线—技术ESB天津联怡科技技有限公司ConfiguretheLoanGateway1ProxyServiceSummaryConfiguretheLoanGateway1ProxyServicecompletestheconfigurationoftherun-timemessageroutingbehaviorintheLoanGateway1RoutingTable.AmessageisroutedtotheManagerLoanReviewbusinessserviceiftheratespecifiedintheloanapplicationislessthan5.OtherwisethemessageisroutedtotheNormalLoanbusinessservice.企业服务总线线—技术ESB天津联怡科技技有限公司TotesttheRoutingoftheLoanApplicationthroughManagerLoanReviewService企业服务总线线—技术ESB天津联怡科技技有限公司TotesttheRoutingoftheLoanApplicationthroughManagerLoanReviewService企业服务总线线—技术ESB天津联怡科技技有限公司一:OSB简介二:OSB技术三:OSB实现企业服务总线线—技术ESB天津联怡科技技有限公司企业服务总线线—技术ESB天津联怡科技技有限公司内部结构及原原理—核心企业服务总线线—技术ESB天津联怡科技技有限公司内部结构及原原理—B-T-P企业服务总线线—技术ESB天津联怡科技技有限公司内部结构及原原理—条件控制企业服务总线线—技术ESB天津联怡科技技有限公司内部结构及原原理—消息驱动企业服务总线线—技术ESB天津联怡科技技有限公司HandlingInboundandOutboundMessagesAtransportproviderdevelopedwiththeTransportSDKhandlesinboundandoutboundmessagesasfollows:■InboundmessagestypicallycomeintoOracleServiceBusfromanoutsidesource,suchasanHTTPclient.TheTransportSDKpackagesthepayloadandtransportlevelheaders,ifany,intoagenericdatastructure.TheTransportSDKthenpassesthemessage,initsgenericformat,totheOracleServiceBuspipeline.■OutboundmessagesoriginatefromOracleServiceBusbusinessservicesandgotoanexternallymanagedendpoint,suchasaWebserviceorJMSqueue.TheTransportSDKreceivesagenericdatastructurefromtheOracleServiceBuspipeline,convertsittothecorrespondingtransport-specificheadersandpayload,andsendsitouttoanexternalsystem.TheTransportSDKhandlesoutboundandinboundmessagesindependently.Aninboundmessagecanbeboundtoonetransportprotocolandboundtoadifferenttransportprotocolontheoutboundendpoint.企业服服务总总线—技术ESB天津联联怡科科技有有限公公司InboundMessagesatRuntime企业服服务总总线—技术ESB天津联联怡科科技有有限公公司OracleServiceBusRuntimeInboundMessagesThesequencediagraminFigureA––1describestheflowofinboundmessagesthroughOracleServiceBusruntime.First,aninboundartifact,suchasanHTTPServlet,interceptsaclientrequest.ThetransportprovidercreatesadatastructurecalledInboundTransportMessageContext.Themessagecontextpackagesheadersfromtherequestintoametadataobject,convertingthepayloadfromanHTTPstreamintoaspecificOracleServiceBussourcetransportmanagerpreprocessesthemessageandpassesthemessagetotheOracleServiceBusruntimeforprocessing.TheOracleServiceBusruntimeasksforthemessagecontext'sservice,serviceversion,andotherinformation.Italsoasksaboutthemetadataandpayload,whicharerequiredforprocessing.TheruntimeaskstheMessageContexttocreatetheresponsemetadataandtheresponsepayload,andthencallsclose().Theresponseissentbacktotheclient.企业服服务总总线—技术ESB天津联联怡科科技有有限公公司OutboundMessagesatRuntime企业服服务总总线—技术ESB天津联联怡科科技有有限公公司OracleServiceBusRuntimeOutboundMessagesThesequencediagramshowninFigureA––2describestheflowofoutboundmessagesthroughOracleServiceBusruntime.TheOracleServiceBusruntimeroutesthemessagetoanexternalservice.ThetransportprovidercreatesmetadatafortherequestandcreatesaTransportSenderobject,whichincludesinformationaboutthepayloadandqualityofserviceandretryinformation.Next,theprovidercallsTransportManager(thecentralhubforthetransportsubsystem)tosendthemessageasynchronously.TransportManagercallsthetransportprovidertosendthemessage.ThetransportprovidercreatesanOutboundTransportMessageContext.Thetransportproviderthenasksaboutthemetadataandpayloadandotherinformationandtakesappropriateaction.Forexample,foraJMSmessage,thetransportproviderusestheJMSAPItopopulatetheheadersandthepayloadandcallstheprotocol-specificsendoperation.Whenaresponsecomesin,thetransportprovidercallstheTransportSendListeneractionsareexecuted,theoutboundendpointisclosed.企业业服服务务总总线线—技术术ESB天津津联联怡怡科科技技有有限限公公司司区别别在在哪哪里里??企业业服服务务总总线线—技术术ESB天津津联联怡怡科科技技有有限限公公司司内部部结结构构及及原原理理—消息息结结构构–tuxedo服务务例例企业业服服务务总总线线—技术术ESB天津津联联怡怡科科技技有有限限公公司司内部部消消息息处处理理--XMLSchema企业业服服务务总总线线—技术术ESB天津津联联怡怡科科技技有有限限公公司司内部部结结构构及及原原理理—消息息结结构构--serendpoint企业业服服务务总总线线—技术术ESB天津津联联怡怡科科技技有有限限公公司司内部部结结构构及及原原理理—消息息结结构构--sercoreenty企业业服服务务总总线线—技术术ESB天津津联联怡怡科科技技有有限限公公司司内部部消消息息实实现现--RuntimeUMLDiagramRuntimeComponentTheruntimepartofacustomtransportprovider:■ReceivesmessagesanddeliversthemtotheOracleServiceBusruntime.■DeliversoutboundmessagesfromOracleServiceBusruntimetoexternalservices.Intheruntimeframework,thetransportprovidercallsthetransportmanagertoacknowledgethataninboundmessagehasbeenreceived.Thetransportmessagecontextcontainstheheaderandbodyoftheinboundmessage.Fortheoutboundmessage,thereisaTransportSendListenerandTransportSender.Thetransportproviderretrievestheheaderandbodyfromthemessage.企业服务务总线—技术ESB天津联怡怡科技有有限公司司内部消息息实现--RuntimeUMLDiagram企业服务务总线—技术ESB天津联怡怡科技有有限公司司内部消息息实现--DesignTimeUMLDiagramDesign-TimeComponentThedesign-timepartofacustomtransportproviderconsistsoftheuserinterfaceconfiguration.ThisconfigurationiscalledbytheOracleServiceBusAdministrationConsoleorIDEwhenanewbusinessorproxyserviceisbeingregistered.AUMLdiagramthatdepictsthestructureofthedesigntimepartofatransportprovider.Someoftheinterfacesdescribedinthediagraminclude:■TransportManager––Atransportprovidercommunicateswiththetransportmanagerthroughthisinterface.Theimplementationisnotpublic.■TransportProvider–Thirdpartiesmustimplementthisinterface.TheTransportProviderkeepstrackofTransportEndpointobjects.TransportProvideralsomanagesthelifecycleoftheendpoints.Forexample,youcansuspendatransportendpoint,whichismanagedthroughtheTransportProviderinterface.■TransportUIBinding––HelpstheOracleServiceBusAdministrationConsolerenderthetransportspecificpages.企业服务务总线—技术ESB天津联怡怡科技有有限公司司内部消息息实现--DesignTimeUMLDiagram企业服务务总线—技术ESB天津联怡怡科技有有限公司司使用自定定义Transport实现Ingeneral,acustomtransportproviderconsistsofadesign-timepartandaruntimepart.Thedesign-timepartisconcernedwithregisteringendpointswiththetransportprovider.ThisconfigurationbehaviorisprovidedbytheimplementationoftheUIinterfaces.Theruntimepartimplementsthemechanismofsendingandreceivingmessages.Whenyoudevelopanewcustomtransportprovider,youneedtoimplementanumberofinterfacesprovidedbytheSDK.ThissectionincludesUMLdiagramsthatmodeltheorganizationofthedesign-timeandruntimepartsoftheSDK.Tip:InOracleServiceBus,implementationsoftheTransportProviderinterfacerepresentthecentralpointformanagementoftransportprotocol-specificconfigurationandruntimeproperties.AsingleinstanceofaTransportProviderobjectexistsforeverysupportedprotocol.Forexample,therearesingleinstancesofHTTPtransportprovider,JMStransportprovider,andothers.企业服务务总线—技术ESB天津联怡怡科技有有限公司司TableBuilt-InTransformationsPublicSourceCanBeTransformedToSource■■StreamSource■ByteArraySource■StringSource■XmlObjectSource■DOMSource■MFLSource■SAAJSourceStreamSourceStreamSourceByteArraySourceByteArraySourceStringSource■■StringSource■XmlObjectSource■DOMSourceXmlObjectSource■■StringSource■XmlObjectSource■DOMSource■MFLSourceDOMSource■■StringSource■XmlObjectSource■DOMSource■MFLSourceMFLSource■■XmlObjectSource■DOMSource■MFLSourceMimeSource■MimeSource■SAAJSource■MessageContextSourceSAAJSource■MimeSource■SAAJSource■MessageContextSourceMessageContextSource■■MimeSource■SAAJSource■MessageContextSource企业服务务总线—技术ESB天津联怡怡科技有有限公司司OSB--HELP企业服务务总线—技术ESB天津联怡怡科技有有限公司司OSB--HELP企业服务总线线—技术ESB天津联怡科技技有限公司一:OSB简介二:OSB技术三:OSB实现企业服务总线线—技术ESB天津联怡科技技有限公司OSB—使用—接入一企业服务总线线—技术ESB天津联怡科技技有限公司Theillustrationbeginswiththeinboundrequestandendswiththeoutboundrequest:1.Aclientsendsarequesttoaproxyservice.Therequestcontainstheusernameandpasswordcredentials.Clientscansendothertypesoftokensforauthentication,suchasanX.509certificateoracustomauthenticationtoken.IfaclientsendsanX.509certificatetokenoracustomtoken,youmustconfigureanidentityassertionprovidertomaptheidentityinthetokentoanOracleServiceBussecuritycontext.2.Theproxyserviceasksthedomain'sauthenticationprovideriftheuserexistsinthedomain'sauthenticationproviderstore.企业服务总线线—技术ESB天津联怡科技技有限公司TheOracleWebServicesManagerClientAgentsignsandencryptsaclientrequestandsendstherequestthroughtotheproxyservice.Theproxyservicedecryptsandverifiesthesignatureandpassestherequesttothebusinessservice,whichsignsandencryptstherequest.TheWebservicehasaServerAgentinjectedinit.TheServerAgenthasaninboundmessageprotectionpolicythatdecryptsandverifiesthesignature,thensignsandencryptstheresponse.Theresponseissentbacktothebusinessservice,whichverifiesthemessageandpassestheresponsetotheproxyservice.TheproxyservicegeneratesasignedandencryptedresponseandsendsittotheClientAgent.TheClientAgentdecryptsandverifiestheresponse,thenreturnstheplainresponsetotheclient.OSB—使用—接入二企业服务总线线—技术ESB天津联怡科技技有限公司TheclientsendsaplainrequestthroughtheproxyandbusinessservicesinOracleServiceBus.ThebusinessservicesignsandencryptstherequestandsendsthemessagetotheOracleWebServicesManagerGateway.TheGatewaydecryptsandverifiestherequest.Theplainmessageresponseispassedbacktotheclient.OSB—使用—接入三企业服务总线线—技术ESB天津联怡科技技有限公司Theproxyservicehasausernametokenpolicy.Theclient,throughOracleWebServicesManagerClientAgent,sendsarequesttotheproxyservicewithusercredentialsatthemessagelevelinausernametoken.TheproxyservicemapstheusercredentialfromtheusernametokenusingcredentialmappingandsendsitthroughthebusinessservicetotheWebserviceforauthentication.TheWebserviceisprotectedusinganOracleWebServicesManagerserviceagentwithaninboundusernametokenpolicy.TheOracleWebServicesManagerServiceClientAgentextractsandauthenticatestheusercredentials.Theresponseisthensentbackthroughthebusinessserviceandtheproxyservicetotheclient.OSB—使用—接入四企业服务总线线—技术ESB天津联怡科技技有限公司OSB—使用—示例企业服务总线线—技术ESB天津联怡科技技有限公司OSB—使用—示例OracleServiceBus11g的三种方案使用JMS传输来传递消消息:向JMS队列/主题发送消息息使用文件和电电子邮件传输输:使用文件传输输写入文件通信、流控制制和消息处理理:使用自定义XPath函数。企业服务总线线—技术ESB天津联怡科技技有限公司OSB—使用—示例方案1:向JMS队列/主题发送消息息在这个方案中中,我们将创创建一个业务务服务,它向向JMS队列或JMS主题发送一条条消息。因为为从业务服务务的角度来看看,写入队列列和主题非常常类似,所以以我们决定将将其合并成一一个方案。我我们将使用和和配置OracleServiceBus提供的JMS传输。准备对于此方案,,我们将使用用OSBCookbook标准环境中的的DestinationQueue或DestinationTopic,实现一个向向队列/主题发送消息息的业务服务务。我们不在在此方案中实实现代理服务务。而是直接接在OSB控制台上测试试该业务服务务。企业服务总线线—技术ESB天津联怡科技技有限公司具体步骤首先我们来创创建向DestinationQueue发送消息的JMSProducer业务服务。在在更多内容一节,我们将将介绍为向JMS主题发送消息息而需要进行行的改动。在在EclipseOEPE中,执行以下下步骤:创建一个新的的OSB项目writing-to-a-jms-queue并在其中创建建一个business文件夹。创建一个新的的业务服务并并将其命名为为JMSProducer。导航至General选项卡。将ServiceType选项设置为MessagingService。导航至Messaging选项卡。将RequestMessageType选项设置为Text。将ResponseMessageType设置为None。导航至Transport选项卡。选择jms作为Protocol下拉列表框的的值。在EndpointURI域中输入jms://localhost:7001/weblogic.jms.XAConnectionFactory/jms.DestinationQueue,单击Add。导航至JMSTransport选项卡。将DestinationType选项设置为Queue。将MessageType选项设置为Text。将ResponseQueues选项设置为None。企业服务总线线—技术ESB天津联怡科技技有限公司企业服务总线线—技术ESB天津联怡科技技有限公司将项目部署到到OSB服务器。向向队列发送送消息所需的的就是这些了了。

现在在我们来测试试该业务服务务。在OSB控制台中,执执行以下步骤骤:在左侧ProjectExplorer树中单击Projects|writing-to-jms-queue|business导航至JMSProducer业务服务。单击Actions单元格中的LaunchTestConsole图标(臭虫图图标)。在Payload域中输入要发发送的消息文文本。企业服务总线线—技术ESB天津联怡科技技有限公司单击Execute。随即调用业务务服务,将在在ResponseDocument中显示Therewasnoresponse消息。这是因因为,前面我我们通过选择择MessagingService并将ResponseMessageType设置为None配置了单向消消息交换模式式。如果从代代理服务调用用该业务服务务,也不会得得到响应。下下面通过过在WebLogicConsole中执行以下步步骤检查DestinationQueue中是否存在该该消息:在左侧的DomainStructure树中,导航至至Services|Messaging|JMSModules。单击OsbCookbookResources。单击DestinationQueue。导航至Monitoring选项卡。选中OSBBookJMSModule!DestinationQueue前面的复选框框。企业服务总线线—技术ESB天津联怡科科技有限公公司单击ShowMessages。单击(消息息ID)ID:<nnnnn.nnnnnnnn.n>随即显示消消息详细信信息,包括括消息内容容和JMS属性。OSB—使用—示例企业服务总总线—技术ESB天津联怡科科技有限公公司工作原理只需使用JMS传输配置业业务服务,,就可以将将消息从OSB发送到JMS队列或主题题。该队列列或主题可可能驻留于于:与OSB服务器相同同的WebLogic实例远程WebLogic实例任何符合JMS的JMS服务器。这里我们只只是配置了了业务服务务并通过OSB控制台对其其进行了测测试。在实实际情况中中,我们是是从代理服服务通过Routing或Publish操作来调用用业务服务务的。如果果无需转换换消息,简简单的直接接传递代理理服务就够够了。企业服务总总线—技术ESB天津联怡科科技有限公公司JMSTransport上的高级设设置在业务服务务配置的JMSTransport选项卡上可可以设置一一些高级设设置,如下下图所示。。EnableMessagePersistence选项默认为为启用状态态,这可以以保证消息息传递,因因为消息是是持久保存存的,可以以平安渡过过服务器关关闭和故障障期。要提提高吞吐量量,请取消消选中此选选项(假定定偶尔丢失失消息是可可以容忍的的)。在Expiration域中以毫秒秒为单位设设置时间间间隔,以指指定消息的的生存周期期。生存周周期过后,,消息将根根据JMS目标(即队队列)上定定义的ExpirationPolicy自动处理、、丢弃、记记录或重定定向到另一一个JMS目标。Expiration的默认值0意味着消息息永不过期期,因此永永久等待使使用或直至至服务器关关闭(如果果消息不是是持久保存存的)。任何JMS目标都可以以在其配置置过程中通通过WebLogicConsole进行Time-to-LiveOverride设置,从而而覆盖业务务服务上设设置的Expiration。企业服务总总线—技术ESB天津联怡科科技有限公公司发送到JMS主题具体步骤一节中给出出的步骤同同样也适用用于发送到到JMS主题。要从从队列更改改为JMS主题DestinationTopic,,请确保在第第10步中在EndpointURI中输入,并在第12步中将DestinationType选项设置为为Topic。将项目重新新部署到OSB服务器。这样,业务务服务现在在将写入JMS主题。对此此我们可以以通过OSB控制台执行行以下步骤骤进行测试试:在左侧ProjectExplorer树中单击Projects|writing-to-jms-topic|business导航至JMSProducer业务服务。。单击Actions单元格中的的LaunchTestConsole图标(臭虫虫图标)。。在Payload域中输入Thisisatextmessage!。单击Execute。随即执行业业务服务,,将在ResponseDocument中显示Therewasnoresponse消息。这是是因为我们们通过选择择MessagingService并只选择ResponseMessageType配置了单向向消息交换换模式。企业服务总总线—技术ESB天津联怡科科技有限公公司通过在WebLogicConsole中执行以下下步骤检查查DestinationTopic中是否存在在该消息::在左侧的DomainStructure树中,导航航至Services|Messaging|JMSModules。单击OsbCookbookResources。单击DestinationTopic。导航至Monitoring选项卡。因为该主题题没有任何何订阅者,,所以不持持久保存消消息。因此此我们来向向该主题添添加订阅者者:企业服务总总线—技术ESB天津联怡科科技有限公公司导航至DurableSubscribers选项卡。单击New。在SubscriptionName域中输入TopicSubscriber。在ClientID域中输入TopicSubscriber。单击OK。重新测试业业务服务,,刷新DurableSubscribers选项卡。企业服务总总线—技术ESB天津联怡科科技有限公公司选中TopicSubscriber前面的复选选框。单击ShowMessages。单击(消息息ID)ID:<nnnnn.nnnnnnnn.n>。随即显示消消息详细信信息,包括括消息内容容和JMS属性。吐血推荐企业服务总总线—技术ESB天津联怡科科技有限公公司方案2:使用文件件传输写入入文件在这个方案案中,我们们将向本地地文件系统统(OSB服务器本地地)写入一一个文件。。我们将实实现一个业业务服务,,该业务服服务使用文文件传输来来完成此任任务。此外外,我们还还将创建一一个代理服服务并通过过使用TransportHeader操作控制被被写入文件件的文件名名。企业服务总总线—技术ESB天津联怡科科技有限公公司具体步骤首先我们实实现一个将将文件写入入本地文件件夹的业务务服务。在在EclipseOEPE中执行以下下步骤:创建一个新新的OSB项目并将其其命名为using-file-transport-to-write-to-file。在该新项目目中创建一一个business文件夹。在business文件夹中创创建一个名名为WriteToLocalFile的新业务服服务。在General选项卡中选选择MessagingService作为ServiceType选项。导航至Messaging选项卡并选选择Text作为RequestMessageType。保留ResponseMessageType设置为None。导航至Transport选项卡并从从Protocol下拉列表中中选择file。。在EndpointURI域中输入file:///C:/work/destination并单击Add。导航至FileTransport选项卡。在Prefix域中输入Hello并在Suffix域中输入.txt。企业服务总总线—技术ESB天津联怡科科技有限公公司将项目部署署到OSB服务器。写入文件的的业务服务务现已配置置完毕,我我们可以通通过TestConsole对它进行测测试。在ServiceBusConsole中执行以下下步骤:单击左侧菜菜单中的ProjectExplorer并导航至WriteToLocalFile业务服务。。单击LaunchTestConsole图标。在Payload域中输入Helloworld!作为写入本本地文件的的内容。单击Execute。测试结果显显示如下图图所示。没没有响应,,因为写入入文件始终终是单向操操作。但元元数据的内内容将返回回文件路径径,即使用用前缀Hello和后缀.txt生成的名称称。企业服务总总线—技术ESB天津联怡科科技有限公公司检查是否已已在指定位位置创建文文件。现在我们有有了一个可可用于写入入本地文件件的业务服服务。文件件名已经生生成。我们们只能通过过文件传输输的配置来来控制所使使用的前缀缀和后缀。。要指定完整整的文件名名,可以在在调用该业业务服务的的代理服务务的Routing操作中使用用TransportHeader操作。企业服务总总线—技术ESB天津联怡科科技有限公公司工作原理只需使用一一个配置了了文件传输输的业务服服务,就可可以将文件件写入本地地文件夹。。在文件传传输上配置置的EndpointURI定义了目标标本地文件件夹所在位位置。如果果该文件夹夹尚未存在在,则由文文件传输在在写第一个个文件时创创建。文件件传传输输允允许许通通过过前前缀缀和和后后缀缀选选项项对对文文件件名名进进行行一一定定程程度度的的控控制制。。但但默默认认情情况况下下,,文文件件名名的的中中间间部部分分将将基基于于一一个个类类似似UUID的字字符符串串来来生生成成。。这这样样就就可可以以保保证证文文件件名名始始终终是是唯唯一一的的。。如如果果这这不不是是我我们们所所希希望望的的行行为为,,则则可可以以使使用用TransportHeader操作作来来覆覆盖盖文文件件名名,,如如下下一一节节在运运行行时时指指定定文文件件名名所示示。。如果果文文件件已已经经存存在在,,则则文文件件名名将将附附加加““_N””,其其中中N是一一个个从从0开始始的的数数字字。。该该字字符符串串将将添添加加到到后后缀缀前前面面,,因因此此如如果果targetFile.xml已经经存存在在于于目目标标文文件件夹夹中中,,原原始始文文件件名名targetFile.txt将扩扩展展为为targetFile_0.txt。更多多内内容容………在本本节节中中,,我我们们将将讨讨论论如如何何在在运运行行时时动动态态指指定定文文件件名名以以及及如如何何使使用用FTP传输输通通过过FTP将文文件件写写入入远远程程文文件件夹夹。。在运运行行时时指指定定文文件件名名如果果要要覆覆盖盖由由文文件件传传输输生生成成的的文文件件名名,,则则需需在在从从代代理理服服务务调调用用业业务务服服务务时时使使用用TransportHeader操作作设设置置一一些些传传输输头头。。因此此我我们们来来创创建建一一个个代代理理服服务务,,让让其其调调用用前前面面创创建建的的业业务务服服务务。。为为简简单单起起见见,,我我们们只只使使用用生生成成服服务务功功能能基基于于现现有有业业务务服服务务创创建建一一个个代代理理服服务务并并将将协协议议更更改改为为Http传输输。。在在EclipseOEPE中执执行行以以下下步步骤骤::企业业服服务务总总线线—技术术ESB天津津联联怡怡科科技技有有限限公公司司创建建proxy文件件夹夹。。右键键单单击击业业务务服服务务WriteToLocalFile并选选择择OracleServiceBus|GenerateProxyService。选择择Enterorselecttheparentfolder树中中的的proxy文件件夹夹,,在在Filename域中中输输入入WriteToLocalFile,单击击Finish。导航航至至Transport选项项卡卡并并将将Protocol更改改为为http。导航航至至MessageFlow选项项卡卡。。在生生成成的的Routing节点点的的RequestAction中插插入入TransportHeader操作作。。在TransportHeader操作作的的Properties选项项卡卡中中,,单单击击AddHeader。选择择Defined选项项并并在在相相应应的的下下拉拉列列表表中中选选择择file和fileName。选择择SetHeaderto选项项并并单单击击<Expression>。在Expression域中中输输入入'TargetFile'(包括括引引号号))。。企业业服服务务总总线线—技术术ESB天津津联联怡怡科科技技有有限限公公司司将项目部部署到OSB服务器。。现在可以以通过TestConsole测试代理理服务。。在ServiceBusConsole中执行以以下步骤骤:单击左侧侧菜单中中的ProjectExplorer并导航至至proxy文件夹中中的WriteToLocalFile代理服务务。单击LaunchTestConsole图标。在Payload域中输入入Helloworld!作为写入入本地文文件的内内容。单击Execute。测试结果果应类似似于下图图所示。。outbound变量将显显示用于于写入文文件的完完整filePath值。该文文件名使使用来自自文件传传输配置置的前缀缀Hello和后缀.txt以及来自自TransportHeader操作的名名称TargetFile创建。企业服务务总线—技术ESB天津联怡怡科技有有限公司司企业服务务总线—技术ESB天津联怡怡科技有有限公司司检查是否否已在指指定位置置创建文文件。通过FTP将文件写写入远程程文件夹夹我们可以以使用FTP传输替换换文件传传输以通通过FTP写入远程程文件系系统。要将文件件写入FTP服务器,,在EclipseOEPE中执行以以下步骤骤:创建一个个名为FTPUser.sa的ServiceAccount构件。在business文件夹中中创建一一个新的的业务服服务WriteToFtpFile。在General选项卡中中选择MessagingService作为ServiceType选项。导航至Messaging选项卡并并选择Text作为RequestMessageType。保留ResponseMessageType为None。导航至Transport选项卡并并从Protocol下拉列表表中选择择ftp。在EndpointURI域中输入入ftp://localhost/并单击Add。企业服务务总线—技术ESB天津联怡怡科技有有限公司司导航至FTPTransport选项卡。。针对UserAuthentication选项选择择externaluser,然后单击击Browse并选择FTPUserServiceAccount构件。在PrefixfordestinationFileName域中输入入Hello,在SuffixfordestinationFileName域中输入入.txt。针对TransferMode选项,选选择ascii。现在可以以从代理理服务调调用该业业务服务务,文件件将写到到FTP服务器。。企业服务务总线—技术ESB天津联怡怡科技有有限公司司方案3:使用自自定义XPath函数在这个方方案中,,我们将将演示如如何实现现自定义义XPath函数以扩扩展OSB平台中可可用的XPath函数集合合。具体步骤骤首先需要要创建我我们要作作为自定定义XPath函数公开开的Java功能。我我们将重重用曾在在“使用用JavaCallout操作调用用Java代码”方方案中使使用的Java类,如下下所示::packageosbcookbook.util.checksum;importjava.util.zip.CRC32;importjava.util.zip.Checksum;publicclassChecksumUtil{publicstaticlongcalculateChecksum(Stringdata){Checksumchecksum=newCRC32();checksum.update(data.getBytes(),0,data.getBytes().length);returnchecksum.getValue();}}企业服务务总线—技术ESB天津联怡怡科技有有限公司司接下来,,需要在在OSB服务器上上配置XPath函数并将将其映射射到ChecksumUtil类的calculateChecksum方法。XPath函数的配配置保存存在[WL_HOME]/Oracle_OSB1/config/xpath-functions中。在资源管管理器窗窗口中执执行以下下步骤。。导航至[WL_HOME]/Oracle_OSB1/config/xpath-functions文件夹。。复制osb-built-in.xml文件并将将其粘贴贴为一个个名为osb-cookbook.xml的新文件件,此文文件将容容纳自定定义XPath函数的定定义。在一个编编辑器中中打开osb-cookbook.xml。删除所有有现有<xpf:function>元素并添添加我们们的函数数,如下下图所示示:企业服务务总线—技术ESB天津联怡怡科技有有限公司司保存此文文件。现在需要要使该JAR对OSB服务器可可用:将osb-checksum-util.jar从\chapter-9\getting-ready\misc复制到[WL_HOME]/Oracle_OSB1/config/xpath-functions文件夹。。重新启动动EclipseOEPE和OSB服务器以以重新加加载配置置。现在来使使用新的的XPath函数。在在EclipseOEPE中执行以以下步骤骤:打开Checksum代理服务务并导航航至MessageFlow选项卡。。将Replace操作插入入CalculateChecksumStage中。在Replace操作的Properties上,在InVariable域中输入入body。单击<Expression>并选择XQueryFunctions选项卡。。企业服务务总线—技术ESB天津联怡怡科技有有限公司司用$body/text()替换参数数列表中中的$arg-string,单击OK。选择Replacenodecontentsoption。将项目部部署到OSB服务器。。现在通过过在ServiceBusConsole中执行以以下步骤骤来测试试代理服服务:在ProjectExplorer中导航至至using-custom-xpath-function项目内的的proxy文件夹。。单击Checksum代理服务务的LaunchTestConsole图标。在Payload域中输入入ThisissometextonwhichtheChecksumwillbecalculated!并单击Execute。ResponseDocument部分的输输出应显显示与使使用JavaCallout操作的方方案相同同的校验验和值4265366956。企业服务务总线—技术ESB天津联怡怡科技有有限公司司工作原原理我们已已经看看到了了如何何通过过自定定义XPath函数来来扩展展OSB平台上上可用用的XPath函数集集。自自定义义XPath函数由由一些些Java代码来来实现现。为为将Java功能映映射到到自定定义XPath函数,,需要要将Java代码作作为公公共Java类中的的公共共静态态方法法公开开。Java方法不不应产产生副副作用用,例例如,,它不不应更更新任任何数数据库库或参参与全全局事事务。。这种种代码码应通通过JavaCallout操作来来调用用。只有在在OSB可以找找到Java类的情情况下下,自自定义义函数数才会会出现现在EclipseOEPE中。这这种自自定义义XPath函数既既可用用于内内联XQuery表达式式(如如Replace的情况况所示示),,也可可用于于XQuery资源((正如如OracleServiceBus提供的的任何何其他他函数数一样样)。。配置中中的isDeterministic属性指指定函函数是是确定定性的的还是是非确确定性性的。。确定定性函函数始始终提提供同同样的的结果果,而而非确确定性性函数数则返返回不不同的的结果果。XQuery标准建建议函函数应应为确确定性性的,,以便便XQuery引擎能能够执执行优优化。。更多内内容……自定义义XPath函数也也可以以在XQuery资源中中调用用,如如下图图所示示。企业服服务总总线—技术ESB天津联联怡科科技有有限公公司自定义义函数数只需将将XPath函数从从ExpressionFunctions树拖到到Expression窗口中中,就就像对对待任任何其其他内内置XPath函数一一样。。企业服服务总总线—技术ESB天津联联怡科科技有有限公公司技术一一个个具体体的实实例企业服服务总总线—技术ESB天津联联怡科科技有有限公公司OSB—使用—示例【核心诉诉讼讼费接接口交交易易】TUXEDO协议KEYVALUE报文--》》SOAP协议标标准准报文文企业服服务总总线—技术ESB天津联联怡科科技有有限公公司OSB—使用—示例企业服服务总总线—技术ESB天津联联怡科科技有有限公

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论