OSB/ALSB: SOA principles-orchestration

Hi
We have been developing a project in which multiple projects refer each other.
For example:
Project A has proxy service PS_A : responsible for database processing. (PS_A does some logic code in message flow and calls JCA based BS_DBProcess)
Project B has proxy service PS_B: responsible for travel transactions. (PS_B has some logic code in message flow and calls https based BS_TravelProcess)
Project C has proxy service PS_C: responsible for finance transactions. (PS_C has some logic code in message flow and calls https based BS_FinanceProcess)
Now,
I have a project D, which has proxy service PS_D which calls PS_A, PS_B, PS_C. In short what we have done is a Proxy service To Proxy service orchestration.
I was wondering if this is in accordance with SOA principles. I mean in OSB sbconsole, when I am creating a business service - I can see option of creating a business service based on a proxy service. So I was thinking if I create:
BS_A based on PS_A
BS_B based on PS_B
BS_C based on PS_C
and orchestrate them by PS_D will it be more in line of SOA principles? The difference in this case is that, I will have Proxy service to Business service orchestration, and business services will be based on existing proxy services.
So, should I continue with Proxy to proxy orchestration or make a Proxy to business orchestration ?
Thanks and Regards,
Swapnil Kharwadkar

pragmatically (I don't care too much about the SOA books, all I want is something simple, manageable, fast and solid),
introducing a BS between PS_D and PS_A,B,C brings you some value when it comes to retrying a failed service, load balancing and result caching.
If you are NOT interested in any of these, then simply invoke directly the PS_A,B,C (maybe with LOCAL transport, to make it more efficient) from the PS_D

Similar Messages

  • SOA suit 11g uses both ESB and OSB(ALSB)

    Hi, I am newbie to SOA suit 11g. Can somebody please explain the use of ESB and OSB(ALSB) both in SOA 11g.In SOA 11g ESB is being used only for mediation.Even OSB(ALSB) has same capability.Then why both needs to be used?Can't we use one of these?
    ~Pradeep

    hello Pradeep,
    there is quite some literature on this hot topic - actually it's one of the most frequently asked question from people who are using OSB and Soa Suite.
    if you google "OSB vs Mediator" you will find some useful links:
    http://www.scribd.com/doc/23622536/Oracle-SOA-Suite-11g-Mediator-vs-Oracle-Service-Bus-OSB
    SOA SUITE 11g - Mediator & OSB
    http://oracle-fusion-blogs.com/oracle-fusion-osb-mediator/
    and so on....

  • OSB (ALSB) Logging Redirect

    Hi all,
    how to redirect all the OSB(ALSB) related message logs ( Errors and transport exceptions included ) to a log4j custom file.
    Now, given this discussion:
    alsb logging
    The way to go is, apparently, to
    1. create filters at domain level by subsystem (or context_id or whatever else)
    2. create a startup class to catch all log messages and to filter in only those ones you are interested in using, in your filter class, filters like " startsWith("ALSB)) " (equivalent of domain filter "Subsystem LIKE ALSB% " )
    Now given all the following list of OSB (ALSB) related subsystems
    http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/messages/indexa.html
    *Is there a better approach then creating a filter class per each subsystem ?*
    Regards,
    Tony P.

    There doesn't seem to be 64bit version of OSB at all for Windows. [http://download.oracle.com/docs/cd/E13196_01/platform/suppconfigs/configs_al10gr3/osb10gr3/overview.html]

  • OSB to SOA suite package not forming correctly

    Setup is as follows:
    AIX 5.3 on the box, 10 gigs ram, installation of the latest releases of OSB and SOA suite on top of weblogic. I've built out a couple of simple database queries in BPEL based off wsdls, dropped them on to the SOA suite server, used EM to open a test console and plugged in some search data. Search returns successfully.
    I then open up OSB's console, create a business service to the endpoint on the soa server, and a proxy based off the same wsdl used in the BPEL construction which I then route to the business service. Both service and proxy are made with basic http for the protocol (not sure how to use the sb protocol, and not sure if that will fix the problem). Load the test console on the proxy service, which displays an xml form similar to what is used in the SOA suite. Fill out the same information, but the invoke returns BEA-380000. Following the invocation trace in OSB everything looks good in terms of package content.
    Wondering if it might simply be a problem with how the OSB interprets XML from a wsdl, I piped the XML from the SOA suite into the OSB's xml field, but to no luck, same error. After some more testing and frustration,I put the SOA suite XML straight in to the form field in the OSB test console, and it worked. However, the package itself seems oddly formed, consisting of:
    <soapenv:Envelope      xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
         <soap:Header      xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
         </soap:Header>
         <soapenv:Body>
         <soap:Envelope      xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
         <soap:Header/>
    Which I've been told is basically double wrapping the package, which shouldn't work, and more importantly wont be generated when someone uses say SOAPUI to access our service on the OSB.
    Now, on the SOA suite side of things. In EM console, I navigate to my BPEL process and can see the faults caused by the OSB. The same faults are also generated when binding to the OSB's endpoint with SOAPUI, but not when going directly to the SOA suite's endpoint. The error is the following:
    oracle.j2ee.ws.saaj.soap.SOAPVersionMismatchException: Mime Header Content-Type: text/xml requires SOAP envelope namespace: http://schemas.xmlsoap.org/soap/envelope/: Mime Header Content-Type: text/xml requires SOAP envelope namespace: http://schemas.xmlsoap.org/soap/envelope/
    And the payload sent shows as empty.
    So to my best uneducated guess, it looks like the OSB wraps the payload in an envelope, and then unwraps it before handing it to the SOA suite, which expects the payload to be wrapped. Sadly, I'm still pretty new to the wsdl/webservice/oracle world, so I'm not even sure if that's an accurate representation. Any insight on what might be happening or how to get OSB to talk with SOA suite correctly would be greatly appreciated. Included below are the XML payloads I've used (minus a bit for confidentiality reasons). Apologies if the formatting doesn't work so nice for it.
    OSB Generated (fails):
    SOAP Header:
    <soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    </soap:Header>
    Body:
    <ns2:SyncEmployeeIDRequest xmlns:ns="removed" xmlns:ns1="removed" xmlns:ns2="removed">
    <!--You have a CHOICE of the next 2 items at this level-->
    <ns:PersonIdentificationAssertion>
    <!--Optional:-->
    <ns1:PersonBirthDate>
    <ns1:Date>2008-09-28</ns1:Date>
    </ns1:PersonBirthDate>
    <!--Optional:-->
    <ns1:PersonGivenName>string</ns1:PersonGivenName>
    <ns1:PersonSurName>string</ns1:PersonSurName>
    </ns:PersonIdentificationAssertion>
    <ns1:DepartmentIDText>string</ns1:DepartmentIDText>
    </ns2:SyncEmployeeIDRequest>
    SOA Generated(works if plugged into OSB form field)
    SOAP Header:
    <soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    </soap:Header>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
         <soap:Header></soap:Header>
         <soap:Body xmlns:ns1="removed">
              <ns1:SyncEmployeeIDRequest xmlns:ns2="removed">
                   <ns2:PersonIdentificationAssertion xmlns:ns3="removed">
                        <ns3:PersonBirthDate>
                             <ns3:Date>2008-09-28</ns3:Date>
    </ns3:PersonBirthDate>
                        <ns3:PersonGivenName>string</ns3:PersonGivenName>
                        <ns3:PersonSurName>string</ns3:PersonSurName>
    </ns2:PersonIdentificationAssertion>
    </ns1:SyncEmployeeIDRequest>
    </soap:Body>
    </soap:Envelope>
    Working Request Document in OSB:
    <soapenv:Envelope      xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
         <soap:Header      xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
         </soap:Header>
         <soapenv:Body>
         <soap:Envelope      xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
         <soap:Header/>
         <soap:Body      xmlns:ns1="removed">
         <ns1:SyncEmployeeIDRequest      xmlns:ns2="removed">
         <ns2:PersonIdentificationAssertion      xmlns:ns3="removed">
         <ns3:PersonBirthDate>
         <ns3:Date>2008-09-28</ns3:Date>
         </ns3:PersonBirthDate>
         <ns3:PersonGivenName/>
         <ns3:PersonSurName>ALastName</ns3:PersonSurName>
         </ns2:PersonIdentificationAssertion>
         </ns1:SyncEmployeeIDRequest>
         </soap:Body>
         </soap:Envelope>
         </soapenv:Body>
         </soapenv:Envelope>
    If I can provide anymore information that will help shed light on this issue please let me know.
    Thank you for your time.
    ~Nick

    Problem solved. When I originally created my business service inside of OSB, I created it based off an endpoint provided by the SOA server. Instead, I went and did a mass import from a url, pointed it at the SOA server wsdl, and then built the web service off of that wsdl resource in the OSB. Now it works like a charm.

  • How to configure osb and soa in single domain

    Hi all,
    hope all are fine.
    sorry if this question is already posted.
    I installed wls 10.3.6 and osb 11.1.1.6 & SOA 11.1.1.6 and domain cofiguration also successful.
    in domain cofiguration i selected both osb and soa.
    all (wls,osb,soa ) servers are up but soa_infra was down. I am unable to see soa folder in em.
    where is the problem please provide solution for this...
    thanks in advance.
    Thanks
    Mohan

    Hi Harsh,
    I tried with(developer template) that but again soa_infra was down. i am getting user messaging services.
    admin server logs are
    oracle.mds.lcm.exception.MDSLCMException: MDS-01330: unable to load MDS configuration document
    MDS-01329: unable to load element "persistence-config"
    MDS-01370: MetadataStore configuration for metadata-store-usage "soa-infra-store" is invalid.
    ORA-04063: package body "DEV_MDS.MDS_INTERNAL_SHREDDED" has errors
    ORA-06508: PL/SQL: could not find program unit being called: "DEV_MDS.MDS_INTERNAL_SHREDDED"
    ORA-06512: at line 1
         at oracle.mds.internal.lcm.deploy.DeployManager.deploy(DeployManager.java:733)
         at oracle.mds.internal.lcm.deploy.DeployManager.startDeployment(DeployManager.java:204)
         at oracle.mds.internal.lcm.MDSLifecycleListenerImpl.start(MDSLifecycleListenerImpl.java:215)
         at oracle.mds.lcm.weblogic.WLLifecycleListener.preStart(WLLifecycleListener.java:77)
         at weblogic.application.internal.flow.BaseLifecycleFlow$PreStartAction.run(BaseLifecycleFlow.java:282)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
         at weblogic.application.internal.flow.BaseLifecycleFlow$LifecycleListenerAction.invoke(BaseLifecycleFlow.java:199)
         at weblogic.application.internal.flow.BaseLifecycleFlow.preStart(BaseLifecycleFlow.java:62)
         at weblogic.application.internal.flow.HeadLifecycleFlow.prepare(HeadLifecycleFlow.java:283)
         at weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.java:648)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
         at weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:191)
         at weblogic.application.internal.EarDeployment.prepare(EarDeployment.java:59)
         at weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:154)
         at weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:60)
         at weblogic.deploy.internal.targetserver.AppDeployment.prepare(AppDeployment.java:144)
         at weblogic.management.deploy.internal.DeploymentAdapter$1.doPrepare(DeploymentAdapter.java:39)
         at weblogic.management.deploy.internal.DeploymentAdapter.prepare(DeploymentAdapter.java:191)
         at weblogic.management.deploy.internal.AppTransition$1.transitionApp(AppTransition.java:21)
         at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240)
         at weblogic.management.deploy.internal.ConfiguredDeployments.prepare(ConfiguredDeployments.java:165)
         at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:122)
         at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:180)
         at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:96)
         at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
    Caused by: oracle.mds.config.MDSConfigurationException: MDS-01330: unable to load MDS configuration document
    MDS-01329: unable to load element "persistence-config"
    MDS-01370: MetadataStore configuration for metadata-store-usage "soa-infra-store" is invalid.
    ORA-04063: package body "DEV_MDS.MDS_INTERNAL_SHREDDED" has errors
    ORA-06508: PL/SQL: could not find program unit being called: "DEV_MDS.MDS_INTERNAL_SHREDDED"
    ORA-06512: at line 1
         at oracle.mds.config.PConfig.loadFromBean(PConfig.java:959)
         at oracle.mds.config.PConfig.<init>(PConfig.java:758)
         at oracle.mds.config.MDSConfig.loadFromBean(MDSConfig.java:787)
         at oracle.mds.config.MDSConfig.loadFromElement(MDSConfig.java:848)
         at oracle.mds.config.MDSConfig.<init>(MDSConfig.java:491)
         at oracle.mds.config.MDSConfig.<init>(MDSConfig.java:438)
         at oracle.mds.internal.lcm.deploy.DeployManager.deploy(DeployManager.java:516)
         ... 27 more
    Caused by: oracle.mds.exception.MDSExceptionList: MDS-01329: unable to load element "persistence-config"
    MDS-01370: MetadataStore configuration for metadata-store-usage "soa-infra-store" is invalid.
    ORA-04063: package body "DEV_MDS.MDS_INTERNAL_SHREDDED" has errors
    ORA-06508: PL/SQL: could not find program unit being called: "DEV_MDS.MDS_INTERNAL_SHREDDED"
    ORA-06512: at line 1
         at oracle.mds.config.PConfig.loadFromBean(PConfig.java:953)
         ... 33 more
    I installed rcu correctly and db is up and i installed following combination
    oepe-wls-indigo-installer-11.1.1.8.0.201110211138-10.3.6-win32
    ofm_rcu_win_11.1.1.6.0_disk1_1of1
    ofm_osb_generic_11.1.1.6.0_disk1_1of1
    ofm_soa_generic_11.1.1.6.0_disk1_1of2
    is there any mismatch combination.
    Thanks
    Mohan
    Edited by: Mohan SOA on Sep 12, 2012 12:39 AM

  • OSB and SOA Suite in the Java Cloud

    Hi All -- the question is rather to a technical support personnel of the Oracle Cloud,
    Is it possible to deploy and run the OSB and SOA Suite applications on the Oracle Java Cloud? To be more precise:
    1. Is the WL server in the cloud configured to contain the Oracle Soa Suite?
    2. Is the WL server in the cloud configured to contain the Oracle Service Bus?
    If not: would it be possible to configure the Cloud WL domains the way that these are supported?
    What we need are two servers (or two clusters): a SOA Suite application runs on one, while the OSB application runs on the other.
    Thanks for help.

    Hi Chris,
    Oracle's statement of direction that you can find at
    http://www.oracle.com/technology/products/integration/service-bus/docs/Oracle-Service-Bus-SOD.pdf
    there will be convergence of the 2 products that basically address 2 different use cases (see Statement of Direction).
    In my opinion new tools will be added to Jdeveloper to develop and deploy on Oracle Service Bus (OSB). In present OSB version, OSB tools are not part of Jdeveloper and transformations use XQuery instead of XSLT (as for Oracle ESB).
    Hope this help you a little bit.
    Regards,
    Jean-Pierre

  • OSB to SOA Suite communication

    Hi,
    We have an OSB cluster and SOA Suite cluster, spread over multiple servers (either physical or virtual) where each OSB managed server is on the same underlying O/S server as a corresponding SOA Suite managed server. A hardware load balancer will be used to expose an endpoint to service consumers. The load balancer will then distribute requests to either of the OSB managed servers.
    My question is should the communication between the OSB managed servers be load balanced (and distrubuted) to the SOA Suite managed servers or should each OSB managed server speak locally to the corresponding SOA Suite managed server ?
    My concern is that load balancing to SOA Suite introduces complexity without solving a resiliency problem (assuming a config over 4+ O/S servers), whereas local and direct communication keeps it simple in terms of logfile traceability and optimal performance (i.e. not going out on the netowrk again). I can see that in the event of a SOA Suite managed server going down or failing, you have to have a protective measure to ensure that requests to it's parent OSB managed server are stopped. This would need to be implemented at the OSB load balancer level.
    I'm interested to understand what other people have done in this situation or if I'm missing some insight that would influence wither way.
    TIA

    user4709830 wrote:
    My concern is that load balancing to SOA Suite introduces complexity without solving a resiliency problem (assuming a config over 4+ O/S servers), whereas local and direct communication keeps it simple in terms of logfile traceability and optimal performance (i.e. not going out on the netowrk again).This looks interesting... Assuming OSB and SOA servers are always in pairs hosted in the same machine, there's a high probability that if one is down, both will be down... Makes sense...
    I can see that in the event of a SOA Suite managed server going down or failing, you have to have a protective measure to ensure that requests to it's parent OSB managed server are stopped. This would need to be implemented at the OSB load balancer level.Well, try to go around in the event of the half break, i.e. OSB up and SOA down, will be complex... I think here is a matter of assess the risk of that happening, the impacts and the effort needed to mitigate the impact versus the advantages you mentioned (logfile traceability and optimal performance)... How good are those advantages and would they really pay the effort/risk?
    Hope this helps...
    Cheers,
    Vlad

  • OSB vs SOA- which one can take max load in terms of req/resp traffic

    Hi,
    I have few basic questions about load taking capacity of OSB and soa.
    1. Is there any oracle doc stating how much traffic OSB or SOA components(bpel, mediator etc.) can take in terms of request/response per hour with certain infrastructure?
    2. Diff in java callout in bpel and in osb?
    3. Which one is more stable product in high load situation eg. 2 lac req/resp per hour.
    4. Is there a link between number of javacallouts and performance in OSB and in SOA.
    Regards,
    SOA Enthusiast.

    Hi Saurabh,
    Interesting challenge... As I said before it's unlikely you will find stats as you want, this type of study is very particular to a use case, platform and infrastructure... There's no generic magical number...
    I can say that OSB is lightweight and scalable and I would be surprised if it would become a bottleneck if running in a well dimensioned hardware... The bottleneck is typically at the external system... I also believe that if you add SOA Suite in the picture you will be adding overhead rather than enhancing performance, you should add SOA Suite if you need capabilities like audit, traceability, recovery and so on that you won't have with OSB alone... There's an old study on the link bellow but I'd doubt it would apply for your case, but may be helpful anyway...
    http://biemond.blogspot.com.au/2009/06/osb-esb-performance-comparison.html
    Dimensioning hardware is always a challenge... I recommend you to write a typical service and a worst scenario service and use a tool like jmeter to test how much throughput you can get from your infrastructure... Java callouts and complex xml transformation processing are points to be highlighted... Use a clustered OSB topology so you can easily add new nodes if needed...
    Cheers,
    Vlad

  • OSB vs SOA suite

    What is difference and relationship between OSB and SOA suite?
    I see much much overlap between the two.
    1.DB adapter, mq adapter, file adapter, app adapter,etc, exist in oracle service bus 10.3.1.Also SOA suite 11g has all theses components.
    2.OSB is a WL domain in running time, SOA suite is also a WL domain in running time.
    The difference is OSB does not support BPEL but SOA suite does.
    Seems most of things done by OSB can also been done by SOA suite.
    In what scenario we should use OSB and in what scenario we should use SOA suite instead?
    Can someone give some helps on this?
    Thanks
    Edited by: user11997125 on May 20, 2010 2:28 AM
    Edited by: user11997125 on May 20, 2010 2:29 AM

    OSB is like the name says a 'Service Bus' and the soa suite is a suite of components which can be used to create a service oriented architecture. In this suite there isn't and service bus available for you.
    So both products complement each other.
    It's true most actions can be done in both the products/suites, but you should see them both in 1 total solution. After that decide what you design in the osb and what you design in the soa suite components.
    if you check wikipedia for the definition of a service bus, you will see what the strengths are (or should be), some line virtualization/transformation/routing/etc.
    from my point of view i would say, you create your interface on the service bus, keep the flows in the service bus lightweigh, and route to the 'real' services. These could be modelled in the soa suite components, and in there do the business logic

  • Support of exslt in OSB/ALSB

    Hi,
    Does OSB/ALSb support extended xslt functions i.e exslt(http://exslt.org/functions)?
    When I tried to import/save an xslt having exslt functions, it gives an error
    An error occurred compiling the XSLT template: javax.xml.transform.TransformerException: weblogic.apache.xml.utils.WrappedRuntimeException: Could not find variable with the name of val.
    and the function is defined in xsl as :
    <func:function name="ctvf:convertToNumber">
    <xsl:param name="val"/>
    <xsl:variable name="strVal" select="string($val)"/>
    <xsl:choose>
    <xsl:when test="$strVal = 'NaN'">
    <func:result select="''"/>
    </xsl:when>
    <xsl:otherwise>
    <func:result select="$strVal"/>
    </xsl:otherwise>
    </xsl:choose>
    </func:function>
    where namespaces in the header are as:
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:func="http://exslt.org/functions"
    Thanks,
    Rajesh

    Hi all!
    Thanx for the answers! I have tried in the past the /text() I tried it again and didn´t worked, some body knows how can I post some screen shots so you can see that I´m using the /text() and maybe with the screen shot you can detect something, also I´m loging the $body in the default branch(cause it is not detecting the value between the tags it goes directly to the Defaul Branch) you will se some differences in the XML since I simplified the XML to make the example and tested this simplified XML it in the TEST Tool in the console and had the same results that with the original evendough I put the /text() at the end
    Here is the Body I loged in the default Branch:
    <soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <imp:iniciarCambio xmlns:imp="http://bea.com/albpm/MMME/ImpactarCambiosClienteBILLING">
    <cambios xmlns:bea="http://bea.com/">
    <bea:ListaDeCambios>
    <!--1 or more repetitions:-->
    <bea:Cambio>
    <bea:campoNombre>Cambio1</bea:campoNombre>
    <bea:valorAnterior>antes</bea:valorAnterior>
    <bea:valorNuevo>despues</bea:valorNuevo>
    </bea:Cambio>
    </bea:ListaDeCambios>
    <bea:companiaId>32</bea:companiaId>
    <bea:companiaNombre>MMRedes</bea:companiaNombre>
    <bea:companiaTipo>Servicio</bea:companiaTipo>
    </cambios>
    </imp:iniciarCambio>
    </soapenv:Body>>
    as you can see it is Servicio and it should have gone to one of the branches instead of the default but it didn´t
    Can´t see what I´m doing wrong, but maybe some of you can.
    Thanx in advanced!
    Gerardo J

  • OSB and SOA Server (Mediator) Design question

    As OSB is the strategic ESB and is used for external services does it make sense that all communication must go out via the OSB.
    For example if I have a request that comes in gets routed through the OSB and then calls a backend composite which contains a BPEL that sits on the Oracle SOA server that calls multiple external services (CRM, SAP etc..) Would all the calls out from the BPEL then go back to the OSB and out to the external services (via proxy/business services.) This seems to add a lot of network hops to the whole architecture.
    I can't really seem to find a diagram to explain this but an external service consumer could call the Oracle SOA stack that will come in via the OSB (for security gateway as OWSM 11g doesn't support gateway yet.) Then get transformed into the CDM and then passed on to the Oracle SOA server that has a composite service with BPEL that orchestrates multiple calls to internal and external services. The external ones requiring a transformation back into the service providers format.
    How does this flow work?

    If you are talking to external B2B systems you should use the Oracle B2B Server, have a look at this link,
    http://download.oracle.com/docs/cd/E14571_01/integration.1111/e10229/b2b_intro.htm#CEGGAGJA
    Section 1.6 in there gives a good example of doing just that. The OSB mediator is responsible for talking between CDM's in this case so it does some internal work, within one CDM set of services and then when ready the mediator translates from CDM to the format needed for the B2B. The B2B Server then does all the clever stuff needed to talk to the B2B partner.
    In the internal case where the call is within the Enterprise the Oracle documentation states that there may be cases when doing this translation from CDM to legacy format may take place within the SOA server but recommends that it is normally done using the mediator in the same way as with partner calls. The 11g developer documentation states "The stated direction by Oracle is for the Oracle Service Bus to be the preferred ESB for interactions outside the SOA Suite. Interactions within the SOA Suite may sometimes be better dealt with by the Oracle Mediator component in the SOA Suite, but we believe that for most cases, the Oracle Service Bus will provide a better solution and so that is what we have focused on within this book."
    Just what those exceptions are is an interesting question. If you have a CDM and all of your legacy world has translators you will spend all of your time hoping up to the mediator and back down maybe that is the exception. If everything is using the mediator then the SOA orchestration power is lost. If on the other hand most of your system lives within a canonical schema and there is one exception perhaps you make it pay the price for non-conformance.

  • OSB - ALSB / WLST / Security / add entry with WLST in  Access Control

    Hello,
    I try to reproduce with WLST script the input from the consol to declare user on Access Control proxy (security).
    sbconsol->$Proxy Service->Security->General Confiruration->Access Control->Transport Access Control->Add Conditions
    * First implementation without success with the com.bea.wli.sb.security.management.configuration.ServiceSecurityConfigurationMBean : accessControlSecurity1()
    * Second try with the service definition of the proxy service but cannot parse with Xpath accessControl Security2()
    any idee ???
    test case :
    prerequisit
    create an ALSB domain 10.3 (admin one with username='weblogic' password='weblogic' url='t3://localhost:7001') and create a proxy service on the default project
    conf/setEnv.cmd
    @CLS
    @echo ON
    @set BEA_HOME=D:\PRODUCT\MIDDLEWARE\SOA\OSB_10.3
    @set WL_HOME=%BEA_HOME%\wlserver_10.3
    @set OSB_HOME=%BEA_HOME%\osb_10.3
    @set SCRIPTING_HOME=E:\PROJETS\RECURANT\EDF\linky\WLST\WORKING\Security
    @set OSB_LIB=%OSB_HOME%/lib/sb-kernel-api.jar;%BEA_HOME%/modules/com.bea.alsb.statistics_1.0.1.0.jar;%OSB_HOME%/lib/sb-kernel-resources.jar;%OSB_HOME%/lib/sb-kernel-common.jar;%OSB_HOME%/lib/sb-kernel-impl.jar;%OSB_HOME%\lib\sb-security.jar;%OSB_HOME%/modules/com.bea.common.configfwk_1.3.0.0.jar;%BEA_HOME%/modules/com.bea.common.configfwk_1.2.0.0.jar;%BEA_HOME%/modules/com.bea.common.configfwk_1.2.1.0.jar;%OSB_HOME%/lib/modules/com.bea.alsb.resources.archive.jar;
    @set TOOL_LIB=%SCRIPTING_HOME%\lib\log4j-1.2.15.jar;%SCRIPTING_HOME%\lib\jsch-0.1.43.jar;%SCRIPTING_HOME%\lib\db2jcc.jar
    @set CLASSPATH=%OSB_LIB%;%TOOL_LIB%;%CLASSPATH%
    @set CLASSPATH=%SCRIPTING_HOME%\lib\db2jcc.jar;%TOOL_LIB%;%CLASSPATH%
    @set MODULE_LIB=%SCRIPTING_HOME%\lib
    @call %WL_HOME%\server\bin\setWLSEnv.cmd > nul 2<&1
    launch.cmd
    @CLS
    @echo OFF
    @SETLOCAL
    @call "conf\setEnv.cmd" > nul 2<&1
    set PWD=%~dp0
    %JAVA_HOME%\bin\java -Dmodule.lib=%MODULE_LIB% weblogic.WLST -skipWLSModuleScanning lib/security.py
    lib/security.py
    from com.bea.wli.monitoring import StatisticType
    from java.util import HashMap
    from java.util import HashSet
    from java.util import ArrayList
    from java.util import Collections
    from java.io import FileInputStream
    from java.io import FileOutputStream
    from java.lang import String
    from java.lang import Boolean
    from com.bea.wli.sb.util import EnvValueTypes
    from com.bea.wli.config.env import EnvValueQuery;
    from com.bea.wli.config import Ref
    from com.bea.wli.config.customization import Customization
    from com.bea.wli.config.customization import EnvValueCustomization
    from com.bea.wli.config.customization import FindAndReplaceCustomization
    from com.bea.wli.sb.management.configuration import SessionManagementMBean
    from com.bea.wli.sb.management.configuration import ALSBConfigurationMBean
    from com.bea.wli.sb.management.query import BusinessServiceQuery
    from com.bea.wli.sb.management.query import ProxyServiceQuery
    from com.bea.wli.sb.management.configuration import ServiceConfigurationMBean
    import os
    # before, create an ALSB domain 10.3 with a proxy service in the default project and add an Acces Control Policy in the consol
    # sbconsol->Project Explorer->default->${proxy service}->Security->Access Control->Create Session->Add Conditions->User->USR_1->Add
    # when we try to modify the Acces Control Policy of the proxy service with the ServiceSecurityConfigurationMBean
    def accessControlSecurity1( domain_name ):
              # connection
              print "\n\n\n***********************************************************************************************"
              connect( 'weblogic', 'weblogic', 't3://localhost:7001')
              domainRuntime()
              # create a session
              sessionName = String("SessionScript"+Long(System.currentTimeMillis()).toString())
              SessionMBean = findService( SessionManagementMBean.NAME ,SessionManagementMBean.TYPE)
              SessionMBean.createSession(sessionName)
              # get the ServiceSecurityConfigurationMBean
              serviceSecurityConfigurationMBean = findService(String("ServiceSecurityConfiguration.").concat(sessionName), "com.bea.wli.sb.security.management.configuration.ServiceSecurityConfigurationMBean")
              # get the XACMLAuthorizer
              working_directory=pwd()
              serverConfig()
              xacmlAuthorizer = cd('/SecurityConfiguration/%s/Realms/myrealm/Authorizers/XACMLAuthorizer' % domain_name )
              cd(working_directory)
              domainRuntime()
              # get service ref
              ConfigurationMBean = findService(String("ALSBConfiguration.").concat(sessionName), "com.bea.wli.sb.management.configuration.ALSBConfigurationMBean")
              bsQuery = ProxyServiceQuery()
              bsQuery.setPath("default/*")
              refs = ConfigurationMBean.getRefs(bsQuery)
              for ref in refs:
                   print 'ref=%s'%ref               
                   # use the security Mbean to add : USER_A,USER_B,USER_C to the policy
                   policyHolder = serviceSecurityConfigurationMBean.newAccessControlPolicyHolderInstance(xacmlAuthorizer)
                   policyHolder.setPolicyExpression("Usr(USER_A,USER_B,USER_C)")     
                   policyScope = serviceSecurityConfigurationMBean.newDefaultMessagePolicyScope(ref)
                   serviceSecurityConfigurationMBean.setAccessControlPolicy(policyScope,policyHolder)
                   # print the service definition
                   servConfMBean = findService( "%s.%s" % (ServiceConfigurationMBean.NAME, sessionName), ServiceConfigurationMBean.TYPE)
                   serviceDefinition = servConfMBean.getServiceDefinition(ref)
                   print serviceDefinition
                   # we can see the security entry in the service definition has follow
                   # <xml-fragment xmlns:ser="http://www.bea.com/wli/sb/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:env="http://www.bea.com/wli/config/env">
                   # <ser:coreEntry isProxy="true" isEnabled="true" isAutoPublish="false">
                   # <ser:description/>
                   # <ser:security>
                   # <con:access-control-policies xmlns:con="http://www.bea.com/wli/sb/services/security/config">
                   # <con:message-level-policies>
                   # <con1:default-policy xsi:type="con:ProviderPolicyContainerType" xmlns:con="http://www.bea.com/wli/sb/security/accesscontrol/config" xmlns:con1="http://www.bea.com/wli/sb/services/security/config">
                   # <con:policy provider-id="XACMLAuthorizer">
                   # <con:policy-expression>Usr(USER_A,USER_B,USER_C)</con:policy-expression>
                   # </con:policy>
                   # </con1:default-policy>
                   # </con:message-level-policies>
                   # </con:access-control-policies>
                   # </ser:security>
              # but when we commit
              SessionMBean.activateSession(sessionName, "description for session activation")
              # we got the following exception
              # Unexpected error: com.bea.wli.config.session.SessionConflictException
              # No stack trace available.
              # Problem invoking WLST - Traceback (innermost last):
              # File "E:\PROJETS\RECURANT\EDF\linky\WLST\WORKING\Security\lib\security.py", line 246, in ?
              # File "E:\PROJETS\RECURANT\EDF\linky\WLST\WORKING\Security\lib\security.py", line 105, in accessControlSecurity1
              # com.bea.wli.config.session.SessionConflictException: Conflicts for session SessionScript1363339726764
              # [Non-Critical] Concurrent Modification Conflicts
              # NONE
              # [Critical] Resources with validation errors
              # 1 - ProxyService test/PS_TEST_bis CannotCommit
              # + CannotCommit [OSB Security:386836]Unnecessary proxy wide message access control policy found for service "test/PS_TEST_bis". Hint: The service is neither an active security
              # intermediary nor has custom authentication enabled. ServiceDiagnosticLocation[SECURITY_TAB]:DiagnosticLocation:<con:message-level-policies xmlns:ser="http://www.bea.com/wli/sb/services" xml
              # ns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:env="http://www.bea.com/wli/config/env" xmlns:con="http://www.bea.com/wli/sb/services/security/config">
              # <con1:default-policy xsi:type="con:ProviderPolicyContainerType" xmlns:con="http://www.bea.com/wli/sb/security/accesscontrol/config" xmlns:con1="http://www.bea.com/wli/sb/services/security/
              # config">
              # <con:policy provider-id="XACMLAuthorizer">
              # <con:policy-expression>Usr(USER_A,USER_B,USER_C)</con:policy-expression>
              # </con:policy>
              # </con1:default-policy>
              # </con:message-level-policies>
              # [Info] Informational messages
              # NONE
              # at com.bea.wli.config.session.SessionManager.commitSessionUnlocked(SessionManager.java:358)
              # at com.bea.wli.config.session.SessionManager.commitSession(SessionManager.java:339)
              # at com.bea.wli.config.session.SessionManager.commitSession(SessionManager.java:297)
              # at com.bea.wli.config.session.SessionManager.commitSession(SessionManager.java:306)
              disconnect()                              
    # when we try to modify the Acces Control Policy of the proxy service whith the service XML definition
    def accessControlSecurity2( domain_name ):
              # connection
              print "\n\n\n***********************************************************************************************"
              connect( 'weblogic', 'weblogic', 't3://localhost:7001')
              domainRuntime()
              # create a session
              sessionName = String("SessionScript"+Long(System.currentTimeMillis()).toString())
              SessionMBean = findService( SessionManagementMBean.NAME ,SessionManagementMBean.TYPE)
              SessionMBean.createSession(sessionName)
              # get service ref
              ConfigurationMBean = findService(String("ALSBConfiguration.").concat(sessionName), "com.bea.wli.sb.management.configuration.ALSBConfigurationMBean")               
              bsQuery = ProxyServiceQuery()
              bsQuery.setPath("default/*")
              refs = ConfigurationMBean.getRefs(bsQuery)
              for ref in refs:
                   print 'ref=%s'%ref
                   servConfMBean = findService( "%s.%s" % (ServiceConfigurationMBean.NAME, sessionName), ServiceConfigurationMBean.TYPE)
                   serviceDefinition = servConfMBean.getServiceDefinition(ref)
                   # parsing the proxy definition
                   nsSer = "declare namespace ser='http://www.bea.com/wli/sb/services'"
                   nsXsi = "declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance'"
                   nsTran = "declare namespace tran='http://www.bea.com/wli/sb/transports'"
                   nsEnv = "declare namespace env='http://www.bea.com/wli/config/env'"
                   nsCon = "declare namespace con='http://www.bea.com/wli/sb/services/security/config'"
                   nsCon1 = "declare namespace con1='http://www.bea.com/wli/sb/services/security/config'"
                   # when we try to parse the following Xpath Expression, it' working but not sufficent to access the <con:policy-expression> element
                   confPath = "ser:coreEntry/ser:security/con:access-control-policies/con1:transport-level-policy"
                   confElem = serviceDefinition.selectPath(nsSer + nsXsi + nsTran + nsEnv + nsCon + nsCon1 + confPath )
                   print "WORKING{%s}" % confElem
                   # get the result
                   # <xml-fragment xsi:type="con:ProviderPolicyContainerType" xmlns:con="http://www.bea.com/wli/sb/security/accesscontrol/config" xmlns:con1="http://www.bea.com/wli/sb/services/security/config" xmlns:ser="http://www.bea.com/wli/sb/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:env="http://www.bea.com/wli/config/env">
                   # <con:policy provider-id="XACMLAuthorizer">
                   # <con:policy-expression>Usr(USER_1,USER_2,USER_3)</con:policy-expression>
                   # </con:policy>
                   # </xml-fragment>
                   # and when we try to acces the <con:policy> element whith the following Xpath expression we got an empty result
                   confPath = "ser:coreEntry/ser:security/con:access-control-policies/con1:transport-level-policy/con:policy"
                   confElem = serviceDefinition.selectPath(nsSer + nsXsi + nsTran + nsEnv + nsCon + nsCon1 + confPath )
                   print "DON'T WORKING{%s}" % confElem
                   # get empty result
                   # array([], org.apache.xmlbeans.XmlObject)
              # want to modify the value like this on the <con:policy-expression> but cannot reach it ...
              #confValue="Usr(USER_A,USER_B,USER_C)"
              #confElem.setStringValue(confValue)
              # commit                
              SessionMBean.activateSession(sessionName, "description for session activation")
              disconnect
    # print the service definition
    def printServiceDefinition( domain_name ):
              # connection
              connect( 'weblogic', 'weblogic', 't3://localhost:7001')
              domainRuntime()
              # create a session
              sessionName = String("SessionScript"+Long(System.currentTimeMillis()).toString())
              SessionMBean = findService( SessionManagementMBean.NAME ,SessionManagementMBean.TYPE)
              SessionMBean.createSession(sessionName)
              # get service ref
              ConfigurationMBean = findService(String("ALSBConfiguration.").concat(sessionName), "com.bea.wli.sb.management.configuration.ALSBConfigurationMBean")               
              bsQuery = ProxyServiceQuery()
              bsQuery.setPath("default/*")
              refs = ConfigurationMBean.getRefs(bsQuery)
              for ref in refs:
                   print 'ref=%s'%ref
                   servConfMBean = findService( "%s.%s" % (ServiceConfigurationMBean.NAME, sessionName), ServiceConfigurationMBean.TYPE)
                   serviceDefinition = servConfMBean.getServiceDefinition(ref)
                   servConfMBean = findService( "%s.%s" % (ServiceConfigurationMBean.NAME, sessionName), ServiceConfigurationMBean.TYPE)
                   serviceDefinition = servConfMBean.getServiceDefinition(ref)
                   print serviceDefinition
              # commit                
              SessionMBean.activateSession(sessionName, "description for session activation")
              disconnect
    #accessControlSecurity1('cluster_domain')
    accessControlSecurity2('cluster_domain')

    Hello,
    I try to reproduce with WLST script the input from the consol to declare user on Access Control proxy (security).
    sbconsol->$Proxy Service->Security->General Confiruration->Access Control->Transport Access Control->Add Conditions
    * First implementation without success with the com.bea.wli.sb.security.management.configuration.ServiceSecurityConfigurationMBean : accessControlSecurity1()
    * Second try with the service definition of the proxy service but cannot parse with Xpath accessControl Security2()
    any idee ???
    test case :
    prerequisit
    create an ALSB domain 10.3 (admin one with username='weblogic' password='weblogic' url='t3://localhost:7001') and create a proxy service on the default project
    conf/setEnv.cmd
    @CLS
    @echo ON
    @set BEA_HOME=D:\PRODUCT\MIDDLEWARE\SOA\OSB_10.3
    @set WL_HOME=%BEA_HOME%\wlserver_10.3
    @set OSB_HOME=%BEA_HOME%\osb_10.3
    @set SCRIPTING_HOME=E:\PROJETS\RECURANT\EDF\linky\WLST\WORKING\Security
    @set OSB_LIB=%OSB_HOME%/lib/sb-kernel-api.jar;%BEA_HOME%/modules/com.bea.alsb.statistics_1.0.1.0.jar;%OSB_HOME%/lib/sb-kernel-resources.jar;%OSB_HOME%/lib/sb-kernel-common.jar;%OSB_HOME%/lib/sb-kernel-impl.jar;%OSB_HOME%\lib\sb-security.jar;%OSB_HOME%/modules/com.bea.common.configfwk_1.3.0.0.jar;%BEA_HOME%/modules/com.bea.common.configfwk_1.2.0.0.jar;%BEA_HOME%/modules/com.bea.common.configfwk_1.2.1.0.jar;%OSB_HOME%/lib/modules/com.bea.alsb.resources.archive.jar;
    @set TOOL_LIB=%SCRIPTING_HOME%\lib\log4j-1.2.15.jar;%SCRIPTING_HOME%\lib\jsch-0.1.43.jar;%SCRIPTING_HOME%\lib\db2jcc.jar
    @set CLASSPATH=%OSB_LIB%;%TOOL_LIB%;%CLASSPATH%
    @set CLASSPATH=%SCRIPTING_HOME%\lib\db2jcc.jar;%TOOL_LIB%;%CLASSPATH%
    @set MODULE_LIB=%SCRIPTING_HOME%\lib
    @call %WL_HOME%\server\bin\setWLSEnv.cmd > nul 2<&1
    launch.cmd
    @CLS
    @echo OFF
    @SETLOCAL
    @call "conf\setEnv.cmd" > nul 2<&1
    set PWD=%~dp0
    %JAVA_HOME%\bin\java -Dmodule.lib=%MODULE_LIB% weblogic.WLST -skipWLSModuleScanning lib/security.py
    lib/security.py
    from com.bea.wli.monitoring import StatisticType
    from java.util import HashMap
    from java.util import HashSet
    from java.util import ArrayList
    from java.util import Collections
    from java.io import FileInputStream
    from java.io import FileOutputStream
    from java.lang import String
    from java.lang import Boolean
    from com.bea.wli.sb.util import EnvValueTypes
    from com.bea.wli.config.env import EnvValueQuery;
    from com.bea.wli.config import Ref
    from com.bea.wli.config.customization import Customization
    from com.bea.wli.config.customization import EnvValueCustomization
    from com.bea.wli.config.customization import FindAndReplaceCustomization
    from com.bea.wli.sb.management.configuration import SessionManagementMBean
    from com.bea.wli.sb.management.configuration import ALSBConfigurationMBean
    from com.bea.wli.sb.management.query import BusinessServiceQuery
    from com.bea.wli.sb.management.query import ProxyServiceQuery
    from com.bea.wli.sb.management.configuration import ServiceConfigurationMBean
    import os
    # before, create an ALSB domain 10.3 with a proxy service in the default project and add an Acces Control Policy in the consol
    # sbconsol->Project Explorer->default->${proxy service}->Security->Access Control->Create Session->Add Conditions->User->USR_1->Add
    # when we try to modify the Acces Control Policy of the proxy service with the ServiceSecurityConfigurationMBean
    def accessControlSecurity1( domain_name ):
              # connection
              print "\n\n\n***********************************************************************************************"
              connect( 'weblogic', 'weblogic', 't3://localhost:7001')
              domainRuntime()
              # create a session
              sessionName = String("SessionScript"+Long(System.currentTimeMillis()).toString())
              SessionMBean = findService( SessionManagementMBean.NAME ,SessionManagementMBean.TYPE)
              SessionMBean.createSession(sessionName)
              # get the ServiceSecurityConfigurationMBean
              serviceSecurityConfigurationMBean = findService(String("ServiceSecurityConfiguration.").concat(sessionName), "com.bea.wli.sb.security.management.configuration.ServiceSecurityConfigurationMBean")
              # get the XACMLAuthorizer
              working_directory=pwd()
              serverConfig()
              xacmlAuthorizer = cd('/SecurityConfiguration/%s/Realms/myrealm/Authorizers/XACMLAuthorizer' % domain_name )
              cd(working_directory)
              domainRuntime()
              # get service ref
              ConfigurationMBean = findService(String("ALSBConfiguration.").concat(sessionName), "com.bea.wli.sb.management.configuration.ALSBConfigurationMBean")
              bsQuery = ProxyServiceQuery()
              bsQuery.setPath("default/*")
              refs = ConfigurationMBean.getRefs(bsQuery)
              for ref in refs:
                   print 'ref=%s'%ref               
                   # use the security Mbean to add : USER_A,USER_B,USER_C to the policy
                   policyHolder = serviceSecurityConfigurationMBean.newAccessControlPolicyHolderInstance(xacmlAuthorizer)
                   policyHolder.setPolicyExpression("Usr(USER_A,USER_B,USER_C)")     
                   policyScope = serviceSecurityConfigurationMBean.newDefaultMessagePolicyScope(ref)
                   serviceSecurityConfigurationMBean.setAccessControlPolicy(policyScope,policyHolder)
                   # print the service definition
                   servConfMBean = findService( "%s.%s" % (ServiceConfigurationMBean.NAME, sessionName), ServiceConfigurationMBean.TYPE)
                   serviceDefinition = servConfMBean.getServiceDefinition(ref)
                   print serviceDefinition
                   # we can see the security entry in the service definition has follow
                   # <xml-fragment xmlns:ser="http://www.bea.com/wli/sb/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:env="http://www.bea.com/wli/config/env">
                   # <ser:coreEntry isProxy="true" isEnabled="true" isAutoPublish="false">
                   # <ser:description/>
                   # <ser:security>
                   # <con:access-control-policies xmlns:con="http://www.bea.com/wli/sb/services/security/config">
                   # <con:message-level-policies>
                   # <con1:default-policy xsi:type="con:ProviderPolicyContainerType" xmlns:con="http://www.bea.com/wli/sb/security/accesscontrol/config" xmlns:con1="http://www.bea.com/wli/sb/services/security/config">
                   # <con:policy provider-id="XACMLAuthorizer">
                   # <con:policy-expression>Usr(USER_A,USER_B,USER_C)</con:policy-expression>
                   # </con:policy>
                   # </con1:default-policy>
                   # </con:message-level-policies>
                   # </con:access-control-policies>
                   # </ser:security>
              # but when we commit
              SessionMBean.activateSession(sessionName, "description for session activation")
              # we got the following exception
              # Unexpected error: com.bea.wli.config.session.SessionConflictException
              # No stack trace available.
              # Problem invoking WLST - Traceback (innermost last):
              # File "E:\PROJETS\RECURANT\EDF\linky\WLST\WORKING\Security\lib\security.py", line 246, in ?
              # File "E:\PROJETS\RECURANT\EDF\linky\WLST\WORKING\Security\lib\security.py", line 105, in accessControlSecurity1
              # com.bea.wli.config.session.SessionConflictException: Conflicts for session SessionScript1363339726764
              # [Non-Critical] Concurrent Modification Conflicts
              # NONE
              # [Critical] Resources with validation errors
              # 1 - ProxyService test/PS_TEST_bis CannotCommit
              # + CannotCommit [OSB Security:386836]Unnecessary proxy wide message access control policy found for service "test/PS_TEST_bis". Hint: The service is neither an active security
              # intermediary nor has custom authentication enabled. ServiceDiagnosticLocation[SECURITY_TAB]:DiagnosticLocation:<con:message-level-policies xmlns:ser="http://www.bea.com/wli/sb/services" xml
              # ns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:env="http://www.bea.com/wli/config/env" xmlns:con="http://www.bea.com/wli/sb/services/security/config">
              # <con1:default-policy xsi:type="con:ProviderPolicyContainerType" xmlns:con="http://www.bea.com/wli/sb/security/accesscontrol/config" xmlns:con1="http://www.bea.com/wli/sb/services/security/
              # config">
              # <con:policy provider-id="XACMLAuthorizer">
              # <con:policy-expression>Usr(USER_A,USER_B,USER_C)</con:policy-expression>
              # </con:policy>
              # </con1:default-policy>
              # </con:message-level-policies>
              # [Info] Informational messages
              # NONE
              # at com.bea.wli.config.session.SessionManager.commitSessionUnlocked(SessionManager.java:358)
              # at com.bea.wli.config.session.SessionManager.commitSession(SessionManager.java:339)
              # at com.bea.wli.config.session.SessionManager.commitSession(SessionManager.java:297)
              # at com.bea.wli.config.session.SessionManager.commitSession(SessionManager.java:306)
              disconnect()                              
    # when we try to modify the Acces Control Policy of the proxy service whith the service XML definition
    def accessControlSecurity2( domain_name ):
              # connection
              print "\n\n\n***********************************************************************************************"
              connect( 'weblogic', 'weblogic', 't3://localhost:7001')
              domainRuntime()
              # create a session
              sessionName = String("SessionScript"+Long(System.currentTimeMillis()).toString())
              SessionMBean = findService( SessionManagementMBean.NAME ,SessionManagementMBean.TYPE)
              SessionMBean.createSession(sessionName)
              # get service ref
              ConfigurationMBean = findService(String("ALSBConfiguration.").concat(sessionName), "com.bea.wli.sb.management.configuration.ALSBConfigurationMBean")               
              bsQuery = ProxyServiceQuery()
              bsQuery.setPath("default/*")
              refs = ConfigurationMBean.getRefs(bsQuery)
              for ref in refs:
                   print 'ref=%s'%ref
                   servConfMBean = findService( "%s.%s" % (ServiceConfigurationMBean.NAME, sessionName), ServiceConfigurationMBean.TYPE)
                   serviceDefinition = servConfMBean.getServiceDefinition(ref)
                   # parsing the proxy definition
                   nsSer = "declare namespace ser='http://www.bea.com/wli/sb/services'"
                   nsXsi = "declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance'"
                   nsTran = "declare namespace tran='http://www.bea.com/wli/sb/transports'"
                   nsEnv = "declare namespace env='http://www.bea.com/wli/config/env'"
                   nsCon = "declare namespace con='http://www.bea.com/wli/sb/services/security/config'"
                   nsCon1 = "declare namespace con1='http://www.bea.com/wli/sb/services/security/config'"
                   # when we try to parse the following Xpath Expression, it' working but not sufficent to access the <con:policy-expression> element
                   confPath = "ser:coreEntry/ser:security/con:access-control-policies/con1:transport-level-policy"
                   confElem = serviceDefinition.selectPath(nsSer + nsXsi + nsTran + nsEnv + nsCon + nsCon1 + confPath )
                   print "WORKING{%s}" % confElem
                   # get the result
                   # <xml-fragment xsi:type="con:ProviderPolicyContainerType" xmlns:con="http://www.bea.com/wli/sb/security/accesscontrol/config" xmlns:con1="http://www.bea.com/wli/sb/services/security/config" xmlns:ser="http://www.bea.com/wli/sb/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tran="http://www.bea.com/wli/sb/transports" xmlns:env="http://www.bea.com/wli/config/env">
                   # <con:policy provider-id="XACMLAuthorizer">
                   # <con:policy-expression>Usr(USER_1,USER_2,USER_3)</con:policy-expression>
                   # </con:policy>
                   # </xml-fragment>
                   # and when we try to acces the <con:policy> element whith the following Xpath expression we got an empty result
                   confPath = "ser:coreEntry/ser:security/con:access-control-policies/con1:transport-level-policy/con:policy"
                   confElem = serviceDefinition.selectPath(nsSer + nsXsi + nsTran + nsEnv + nsCon + nsCon1 + confPath )
                   print "DON'T WORKING{%s}" % confElem
                   # get empty result
                   # array([], org.apache.xmlbeans.XmlObject)
              # want to modify the value like this on the <con:policy-expression> but cannot reach it ...
              #confValue="Usr(USER_A,USER_B,USER_C)"
              #confElem.setStringValue(confValue)
              # commit                
              SessionMBean.activateSession(sessionName, "description for session activation")
              disconnect
    # print the service definition
    def printServiceDefinition( domain_name ):
              # connection
              connect( 'weblogic', 'weblogic', 't3://localhost:7001')
              domainRuntime()
              # create a session
              sessionName = String("SessionScript"+Long(System.currentTimeMillis()).toString())
              SessionMBean = findService( SessionManagementMBean.NAME ,SessionManagementMBean.TYPE)
              SessionMBean.createSession(sessionName)
              # get service ref
              ConfigurationMBean = findService(String("ALSBConfiguration.").concat(sessionName), "com.bea.wli.sb.management.configuration.ALSBConfigurationMBean")               
              bsQuery = ProxyServiceQuery()
              bsQuery.setPath("default/*")
              refs = ConfigurationMBean.getRefs(bsQuery)
              for ref in refs:
                   print 'ref=%s'%ref
                   servConfMBean = findService( "%s.%s" % (ServiceConfigurationMBean.NAME, sessionName), ServiceConfigurationMBean.TYPE)
                   serviceDefinition = servConfMBean.getServiceDefinition(ref)
                   servConfMBean = findService( "%s.%s" % (ServiceConfigurationMBean.NAME, sessionName), ServiceConfigurationMBean.TYPE)
                   serviceDefinition = servConfMBean.getServiceDefinition(ref)
                   print serviceDefinition
              # commit                
              SessionMBean.activateSession(sessionName, "description for session activation")
              disconnect
    #accessControlSecurity1('cluster_domain')
    accessControlSecurity2('cluster_domain')

  • 1 Admin console to manage OSB and SOA installed on different servers

    Dear All,
    We are planning to have OSB installed on Host 1 and SOA server installed on Host 2. But there will be one Admin console to manage these 2 for the ease of maintenance. When i was trying to install this configuration I had few issues. Hope SOA experts can help me with the configuration.
    1)
    As SOA and OSB are installed on 2 different host both the servers must have weblogic installed as pre requisite. So I will have
    on host 1:
    http://host1:7001/console
    http://host1:7001/sbconsole
    On host 2:
    http://host2:7001/console (this is redundant)
    http://host2:8001/soa-infra
    2) Is it possible to inactivate http://host2:7001/console ? and add SOA server running on host2 to http://host1:7001/console. In the sense, I would like to control the SOA server from host 1.
    Issue No :2
    When I create a domain on Host 1 I just get the options for OSB and not SOA. It is obvious as SOA is not installed on Host1. but if that is the case, Is it possible to add SOA server running on host2 to host1. Is it going to be a cluster?
    Is this configuration seems realistic? Has anyone implemented. Any pointers please.
    Reagrds,
    Aani

    Hi Aani,
    Please go through the blog series -
    http://blogs.oracle.com/reynolds/2010/09/installing_an_11g_soa_cluster.html
    You may also refer EDG -
    http://download.oracle.com/docs/cd/E17904_01/core.1111/e12036/toc.htm
    Regards,
    Anuj
    Edited by: Anuj Dwivedi on Feb 23, 2011 9:14 PM

  • Coherence, OSB and SOA integration

    Hi,
    I have a WL domain, that consists on a SOA cluster and a OSB cluster. I want to have external cache servers, as it is the preferred option provided by Oracle, so I have external processes which starts a cache, loads data from database, and create a Coherence cluster.
    I have tried different options for deployment and havinfg issues with all of them.
    In my domain (FMW 11.1.1.6), I have not deployed the coherence libs, as they are included in the server modules. I start the external process, which points to the coherence lib in FMW_MODULES, and load everything. So far so good. When I start the managed servers for OSB cluster and SOA clusters I get a lot of errors, like:
    java.lang.IllegalArgumentException: No scheme for cache: "/soa-infra/deployment/members/mydomain_development_soa_cluster"
    I don't know if I should create different coherence clusters, one for my apps, and one for built in OSB+SOA functionality, or I could use the same. If I use the same, where should I put cache configurations, and where can I see built in cache definitions.
    If I should create a new cluster for my functionality, how could I do it, knowing that I will not be bundling only J2EE apps, but also global libraries, and security providers using these coherence infrastructure.
    Do I need activecache for anything?
    Documentation is not very clear.
    Thanks for your support.

    jorgemoralespou wrote:
    Hi,
    I have a WL domain, that consists on a SOA cluster and a OSB cluster. I want to have external cache servers, as it is the preferred option provided by Oracle, so I have external processes which starts a cache, loads data from database, and create a Coherence cluster.
    I have tried different options for deployment and havinfg issues with all of them.
    In my domain (FMW 11.1.1.6), I have not deployed the coherence libs, as they are included in the server modules. I start the external process, which points to the coherence lib in FMW_MODULES, and load everything. So far so good. When I start the managed servers for OSB cluster and SOA clusters I get a lot of errors, like:
    java.lang.IllegalArgumentException: No scheme for cache: "/soa-infra/deployment/members/mydomain_development_soa_cluster"
    I don't know if I should create different coherence clusters, one for my apps, and one for built in OSB+SOA functionality, or I could use the same. If I use the same, where should I put cache configurations, and where can I see built in cache definitions.
    If I should create a new cluster for my functionality, how could I do it, knowing that I will not be bundling only J2EE apps, but also global libraries, and security providers using these coherence infrastructure.
    Do I need activecache for anything?
    Documentation is not very clear.
    Thanks for your support.Hi,
    Oracle SOA Suite 11g leverages an embedded Coherence cache to coordinate several cluster-wide activities including composite deployment. Coherence cache-config is pre-defined for SOA Cluster, and all SOA composite application will inherit this. This cache-config is zipped in fabric-runtime.jar with the name of soa-coherence-cache-config.xml and tangosol-coherence-override.xml is also included in fabric-runtime.jar that enforces SOA server to use soa-coherence-cache-config.xml. Now you have 2 options to make it work,
    1) Make managed servers join the external Coherence cluster as storage-disabled nodes: In order to accomplish it, you need to ensure that the configuration (soa-coherence-cache-config.xml and tangosol-coherence-override.xml) used by cache servers are same as used by SOA Suite(except, storage flag). Also, note that you need to merge your cache server configuration into soa-coherence-cache-config.xml because SOA Suite requires all the caches that are predefined in soa-coherence-cache-config.xml and reference this merged configuration file in you cache server and also in SOA cluster by modifying tangosol-coherence-override.xml
    2) Managed Servers access the Coherence cluster as extend clients: In order to accomplish it, modify soa-coherence-cache-config.xml and add remote-scheme to access the external Coherence cluster. You need to ensure that you provide a tangosol-coherence-override.xml to your cache servers so that they form a seperate cluster and not try joining the SOA Suite cluster.
    You are getting the error:
    java.lang.IllegalArgumentException: No scheme for cache: "/soa-infra/deployment/members/mydomain_development_soa_cluster"Your coherence cluster is using the same multicast ip/port for this cluster as used by the SOA Coherence cluster on startup but a different configuration file is used by your Coherence cluster than soa-coherence-cache-config.xml.
    Try following option1 and it should help solve your problem.
    Please note, modifying fabric-runtime.jar is not recommended by Product Management and is just a work around. Also, I would suggest you to understand licensing from Oracle Sales Rep.
    Hope this helps!
    Cheers,
    NJ
    Edited by: user738616 on Feb 27, 2012 11:02 AM

  • Running OSB and SOA Suite as Windows Services?  Node Manager

    Hi,
    Based on our current hardware configuration, we need to deploy our SOA Managed Server and Admin Server on the same machine as our OSB. Currently for development we just start the servers using the start scripts and keep a window open for them (3 of them: 1 - admin, 1 - soa_server1, and 1 - OSB.) We want to be able to run these as services and allow the admins to log out of the box. It seems like the Node Manager would allow us to do that but can we configure our Windows server to have a Node Manager running for the OSB and another for the SOA stuff on the same box? Do we even need to do that? Can we have a single Node Manager manage all three on port 5556?
    I hope this makes sense. Thanks in advance for any quick responses.
    Jeremy

    Definitely you can (should) have a single node manager. You may refer below links -
    http://blogs.oracle.com/jamesbayer/2010/01/weblogic_nodemanager_quick_sta.html
    WLS 10.3.2 Adminserver startup failed when trying to run as Windows Service
    Regards,
    Anuj

Maybe you are looking for

  • Besoin d'aide : Configuration d'un 2821 pour remplacer une Freebox

    Bonjour, Je souhaite remplacer complètement ma Freebox par les équipements suivants : - Un routeur Cisco 2821 équipé d'un module ADSL2+ (HWIC-1ADSL-M) J'utilise la dernière version de l'Advanced Enterprise Services, IOS version 15.1(4)M7 - Un switch

  • Authentication failed AP1131

    Hello, I got a report from a branch office which is getting trouble to authenticate users to the WLAN this is a stand alone AP which has a configuration script that we use for all our branch offices but in this case is not working. It seems to be an

  • The internal camera on my macbook air stopped working.

    The internal camera on my macbook air stopped working. The camera is non available in settings also. Please help.

  • How do I get pictures off my ipod

    I have an older Ipod and I want to get the pictures off of it? I've tried looking at my computer when it's connected but I see nothing in any of the folders. What should I try next?

  • HT5772 How do I cancel the app that I have purchased

    I would like to cancel an application that I have purchased. I am being charged on a weekly basis for this app and I do not use it. If i just delete the icons I am still going to get craged or no? Can some one give me the answer please, I could not f