Calling a business service based on operation-soap action in Proxy service

Hi,
I have a requirement in which I have to call a business service based on operation-soap action defined in Proxy service wsdl.
Like in below mentioned wsdl GetPartCostDelta and GetCurrencyList operations are there.But which ever operation I select,It just goes to one business service.
Is there any way,I can route to some another business service based on the soap action
proxy service WSDL
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ewopcd="urn:com:gm:gpd:schema:ewopartcostdelta" xmlns:gen="urn:com:gm:gpd:schema:genericfault" xmlns:tns="urn:com:gm:gpd:services:ewopartcostdeltaservice" targetNamespace="urn:com:gm:gpd:services:ewopartcostdeltaservice">
     <wsdl:types>
          <xs:schema>
               <xs:import namespace="urn:com:gm:gpd:schema:ewopartcostdelta" schemaLocation="ewocostdelta.xsd"/>
               <xs:import namespace="urn:com:gm:gpd:schema:genericfault" schemaLocation="servicefault.xsd"/>
          </xs:schema>
     </wsdl:types>
     <wsdl:message name="EWOCurrencyListRequest">
          <wsdl:part name="CurrencyListRequest" element="ewopcd:EWOCostDeltaInput"/>
     </wsdl:message>     
     <wsdl:message name="EWOCurrencyListResponse">
          <wsdl:part name="CurrencyListResponse" element="ewopcd:EWOCurrencyList"/>
     </wsdl:message>     
     <wsdl:message name="EWOPartCostDeltaRequest">
          <wsdl:part name="PartCostDeltaRequest" element="ewopcd:EWOCostDeltaInput"/>
     </wsdl:message>
     <wsdl:message name="EWOPartCostDeltaResponse">
          <wsdl:part name="PartCostDeltaResponse" element="ewopcd:EWOCostDeltaResult"/>
     </wsdl:message>
     <wsdl:message name="EWOPartCostDeltaServiceFault">
          <wsdl:part name="PartCostDeltaServiceFault" element="gen:ServiceFault"/>
     </wsdl:message>
     <wsdl:portType name="EWOPartCostDeltaPortType">
          <wsdl:operation name="GetCurrencyList">
               <wsdl:input name="EWOCurrencyListRequest" message="tns:EWOCurrencyListRequest"/>
               <wsdl:output name="EWOCurrencyListResponse" message="tns:EWOCurrencyListResponse"/>
               <wsdl:fault name="EWOPartCostDeltaServiceFault" message="tns:EWOPartCostDeltaServiceFault"/>
          </wsdl:operation>
          <wsdl:operation name="GetPartCostDelta">
               <wsdl:input name="EWOPartCostDeltaRequest" message="tns:EWOPartCostDeltaRequest"/>
               <wsdl:output name="EWOPartCostDeltaResponse" message="tns:EWOPartCostDeltaResponse"/>
               <wsdl:fault name="EWOPartCostDeltaServiceFault" message="tns:EWOPartCostDeltaServiceFault"/>
          </wsdl:operation>          
     </wsdl:portType>
     <wsdl:binding name="EWOPartCostDeltaBinding" type="tns:EWOPartCostDeltaPortType">
          <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
          <wsdl:operation name="GetCurrencyList">
               <soap:operation soapAction="GetCurrencyList" style="document"/>
               <wsdl:input>
                    <soap:body use="literal"/>
               </wsdl:input>
               <wsdl:output>
                    <soap:body use="literal"/>
               </wsdl:output>
               <wsdl:fault name="EWOPartCostDeltaServiceFault">
                    <soap:fault name="EWOCostDeltaServiceFault" use="literal"/>
               </wsdl:fault>
          </wsdl:operation>
                    <wsdl:operation name="GetPartCostDelta">
               <soap:operation soapAction="GetPartCostDelta" style="document"/>
               <wsdl:input>
                    <soap:body use="literal"/>
               </wsdl:input>
               <wsdl:output>
                    <soap:body use="literal"/>
               </wsdl:output>
               <wsdl:fault name="EWOPartCostDeltaServiceFault">
                    <soap:fault name="EWOCostDeltaServiceFault" use="literal"/>
               </wsdl:fault>
          </wsdl:operation>
     </wsdl:binding>
     <wsdl:service name="EWOPartCostDeltaService">
          <wsdl:port name="EWOPartCostDeltaPort" binding="tns:EWOPartCostDeltaBinding">
               <soap:address location="https://localhost/EWOPartCostDelta"/>
          </wsdl:port>
     </wsdl:service>
</wsdl:definitions>

Did you try using the Operational branching node of OSB?
You have copy the operation name from the inbound variable and populate the SOAP Header with that value into the SOAPAction tag.I think this will work.
Thanks,
Prabu

Similar Messages

  • OSB & WLST: changing operational settings for a proxy service via WLST

    Hi all,
    we are trying to change the operational settings for a proxy service via WLST.
    In details we would like to change the "Logs" level (Monitoring section).
    We have a lot of deployed services and our 'deployer people' need an automatic way (via WLST for example) for doing that instead of using the OSB console.
    Thanks in advance
    ferp

    Hi,
    OSB is the Oracle Service Bus. Oracle Service Bus is a configuration-based, policy-driven enterprise service bus.
    The OSB is deployed into an Oracle WebLogic Server instance.
    OSB uses also WLST functionality provided by WebLogic Server.
    Best regards
    ferp

  • Restirct Data of Business Area based on Operating Unit

    Hi,
    I got two different responsibilities attached with two different Operating units assigned common standard business area Accounts Receivables. So i want to restrict data output based on Operating unit.
    Your valuable inputs are highly appreciable.
    Regards
    Venkat,

    Venkat.
    Just to make sure I undertand you.
    You have a responsibility called something like: AR_US and it's associated with an operating unit US. You have another responsibility called something like: AR_UK and it's associated with an operating unit UK.
    1. If that's correct, then you could write 2 different workbooks where each one filters on what each responsibility is allowed to see and only share each workbook with the appropriate responsibility. Both responsibilities would be allowed to 'see' the same folder(s) in the EUL. The condition in each workbook (not the best option but done at many clients I've seen).
    2. You could have a different business area for all folders for each responsibility. Then any report written against each one would just choose the appropriate folder (not the best option).
    3. You could have one business area where you filter the data right on the folders in the EUL. Would require you to retrieve the current responsibility in the EUL, but not a problem. However, as hard coding the responsibilties at the folder level - not dynamic.
    4. You could put the filtering in the actual database view. This is the slickest method as you only have one business area and any reports against the business area would simply filter the actual data on the row level. Additionally, any external query tool (ie: TOAD, etc.) would not see the data unless they set an environmental variable or comment out the security in the view. The easiest way to see how to do this is to copy the BIS format if you have BIS views installed in your organization (and are running Enterprise Suite (Apps)). Look at various views and look for near the end of the view code, a line such as: WHERE gl_security_package ...). That's where they do the filtering so you might want to see if there are any filtered accounts receiveable BIS views already doing this. (by the way, the BIS views you'll be looking for will be owned by APPS and start with: ARFG_
    Russ

  • OSB Delete Entire Node (SOAP:header) in Proxy service

    Hi
    I am wanting to delete the SOAP:header node in the response in the SOAP proxy service.
    I am using the Delete action with the following settings
    Xpath: .
    In Variable: header
    All this is doing is deleting the contents of the "Header" node when I want to Delete the entire node.
    What am I doing wrong?
    Thanks in advance
    Edited by: cool.br33ze on 05-Feb-2013 01:40

    The reason for why I need to get rid of the SOAP:header is because the consuming application, SAP, is unable to handle a SOAP:header.If the consuming application is a SOAP client then there is no reason why it cannot handle it. If consuming application is not a SOAP client then better change the type of your proxy service to Any XML service or Messaging Type Service (with request and response type as XML)
    Regards,
    Anuj

  • Soap action: in Proxy to soap scenario

    Hi experts,
    I have a senario of Proxy to webservices.
    I have imported the wsdl file as external defination, and  have to use two message inside 1) to Insert 2) To Update.
    Now proxy will run twice a month with same data structure,
    I have to do insert action first and 2nd time Update.
    I have only one receiver. So How to achive this in communication channel >> Soap Action.
    1> Is is possible to provide two Soap action in a single communication channel.?
    2> do i need to create 2 mapping and two interface ? My Source coming from Proxy is with one structure.
    Regards,
    Sumit Gupta

    >
    sumit gupta wrote:
    > Hi experts,
    >
    > I have a senario of Proxy to webservices.
    >
    > I have imported the wsdl file as external defination, and  have to use two message inside 1) to Insert 2) To Update.
    >
    > Now proxy will run twice a month with same data structure,
    >
    > I have to do insert action first and 2nd time Update.
    >
    > I have only one receiver. So How to achive this in communication channel >> Soap Action.
    > 1> Is is possible to provide two Soap action in a single communication channel.?
    > 2> do i need to create 2 mapping and two interface ? My Source coming from Proxy is with one structure.
    >
    > Regards,
    >
    > Sumit Gupta
    You can either go for dynamic configuration and configure the action or you can go for two different Communication channels with separate actions.
    In the proxy use a field as an indicator for the required action i.e INSERT or UPDATE and based on XPATH in your interface determination call the required channel or in case you are using a single channel create the dynamic action in your mapping based on that field.
    Ref:
    /people/shabarish.vijayakumar/blog/2008/01/08/troubleshooting--rfc-and-soap-scenarios-updated-on-20042009
    /people/suraj.sr/blog/2006/01/05/multiple-inbound-interfaces-within-a-service
    /people/shabarish.vijayakumar/blog/2009/03/26/dynamic-configuration-vs-variable-substitution--the-ultimate-battle-for-the-file-name

  • Proxy Service giving "Cannot Compute Effective WSDL for: Proxy Service"

    Hi,
    After updating the wsdl and schema, our proxy service is complaining with error : "Cannot Compute Effective WSDL for: Proxy Service " <ProxyService_Location_Name> when I launch a test console or access the Proxy Endpoint on IE.
    Proxy and Business Services are pointing to the same WSDL. From Business Service, I am able to launch the test console. . Before updating the wsdl and schema, it was working fine. We tried to check in JDeveloper to see whether there are any issues with WSDL or Schema, but they are working fine.
    Security Settings on Proxy Service are : Basic Authentication, User-Name Token Policy and also applied Transport Access Control. Security worked fine earlier before update.
    From log file :
    Root cause of ServletException.
    java.io.IOException: Can not compute effective WSDL for : ProxyService ********
    at com.bea.wli.sb.transports.http.ResourceRequestProcessor.securedInvoke(ResourceRequestProcessor.java:93)
    at com.bea.wli.sb.transports.http.ResourceRequestProcessor.process(ResourceRequestProcessor.java:65)
    at com.bea.wli.sb.transports.http.generic.RequestHelperBase.handleMetadataRequest(RequestHelperBase.java:181)
    at com.bea.wli.sb.transports.http.generic.RequestHelperBase.service(RequestHelperBase.java:83)
    at com.bea.wli.sb.transports.http.wls.HttpTransportServlet.service(HttpTransportServlet.java:127)
    at weblogic.servlet.FutureResponseServlet.service(FutureResponseServlet.java:24)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    Any suggestions/ideas on why this error is happening is much appreciated.
    Thanks,
    Srithi

    There must be definitely some issue in the Policy Configuration, due to which it is not able to Compute Effective WSDL.
    Can you please do the following and capture the logs:
    - set the transports debug flag to true in the alsbdebug.xml in your domain directory :
    <java:alsb-transports-debug>true</java:alsb-transports-debug>
    <java:alsb-service-security-manager-debug>true</java:alsb-service-security-manager-debug>
    <java:alsb-service-validation-debug>true</java:alsb-service-validation-debug>
    <java:alsb-wspolicy-repository-debug>true</java:alsb-wspolicy-repository-debug>
    - set the WLS log level to debug
    - Then restart the servers
    This should give some additional details on the specific error.
    It is considered good etiquette to reward answerers with points (as "helpful" - 5 pts - or "correct" - 10pts).
    https://forums.oracle.com/forums/ann.jspa?annID=893

  • Service Type is lack when I create proxy service in workshop 10gr3??

    When I create proxy service in workshop(10gr3), at the General Configuration page, the "Service Type" is lack of "Create From Existing Service", the function is deleted?

    I posted the same request to the SOA forum.
    But here is the solution:
    Right click on the business service select OSB / Generate Proxy Service.
    To all the nice people form Oracle, please document it.
    thanks,
    Barossa

  • ALSB Proxy Service error calling Business service

    I have an external webservice on Weblogic 8.1 SP5, and I configured Business Service in ALSB 2.6, that is able to invoke the external webservice. But When I create Proxy Service based on the existing Business service and try to invoke the proxy service I get "no SOAP Action Header" error in WebLogic 8.1 SP5 External webservice.
    AxisFault
    faultCode: {http://xml.apache.org/axis/}Client.NoSOAPAction
    faultSubcode:
    faultString: no SOAPAction header!
    faultActor:
    faultNode:
    faultDetail:
    {http://xml.apache.org/axis/}stackTrace:no SOAPAction header!
    at org.apache.axis.transport.http.AxisServlet.getSoapAction(AxisServlet.java:1004)
    at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:678)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6981)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3892)
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
    {http://xml.apache.org/axis/}hostname:ossinv1d
    no SOAPAction header!
    at org.apache.axis.transport.http.AxisServlet.getSoapAction(AxisServlet.java:1004)
    at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:678)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6981)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3892)
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
    Also I get
    com.bea.wli.sb.pipeline.PipelineException in the ALSB.
    Is it a known issue ?

    The back end service basically complains the SOAPAction http header was not included in the request. Typically this header is added automatically by ALSB if the proxy is of type SOAP and the wsdl contain the SOAPAction value for the operation invoked.
    Alternatively you can force the SOAPAction header to be set to the correct value by adding a transport header action in the request part of the routing node.
    Gregory Haardt
    ALSB Prg. Manager
    [email protected]

  • Calling an MFL business service from a WSDL proxy service

    Hi,
    I'm using Service Bus v2.6, and trying to call an MFL business service from a wsdl based proxy service.
    I have done the following so far:
    - Define an MFL-based business service that writes MFL messages to a JMS queue and reads reply messages off another queue, and it works when I debug this business service by itself.
    - Define a wsdl proxy service that routes requests to the MFL business service.
    Since the tutorials don't have MFL examples, I'm struggling to get this working. I've tried different ways, but no luck.
    Here's my definition of the route node in the Proxy Service at the moment.
    1. Call a custom XQuery (.xq file) to convert incoming message to an XML representation of the MFL message, and assign the result to a variable "param1"
    2. Use "Service Callout" to call the MFL business service, and set Request Document Variable to "param1" and Response Document Variable to "param2".
    When I debug the flow, param2 (reply) comes up as empty, and I don't know how to make it work.
    I've turned on the JMS trace etc and the JMS bit is working (i.e messages being written, and read by the business service).
    There seems to be something wrong with the way I call it from the proxy service.
    Any help would be much appreciated..
    Thanks

    Hello,
    Can you indicate the classpath that you use to run your client, version of weblogic and the version of jaxrpc api that you are using.
    As a quick experiment adding the jaxrpc jar files to your classpath one at a time.
    This [url http://www.javaworld.com/javaforums/showflat.php?Cat=&Board=Enterprisejava&Number=3801&page=12&view=collapsed&sb=9&o=&fpart=1]chap seemed to have a similar problem to you and solved it by adding the jaxprc-spi jar file to his class path. It may be that the jaxrpc-impl is causing you greif.
    Also see this thread:
    http://forums.bea.com/bea/message.jspa?messageID=200612003&tstart=0
    Hussein Badakhchani
    www.orbism.com

  • SOAP Header based user/password authentication in OSB 11g Proxy Service

    Hi,
    I have implemented SOAP Header based authentication in my OSB 11g Proxy Service.
    In the Security settings of my AnySOAP(Soap 1.1) HTTP Proxy service, I have amde the following changes:
    1.
    In Transport Access Control link, i selected the User predicate, and provided an user already existing on weblogic server with following roles(AppTesters, Monitors, Operators).
    The AuthorizationProvider was XACMLAuthorizer
    2.
    Under Custom Authentication, I selected the Custom User Name and Password option, and provided the below mentiioned xpaths
    User Name XPath: ./*/*:Username/text()
    User Password XPath: ./*/*:Password/text()
    3.
    In Message Access Control link, i selected the User predicate with the same user as mentioned in Transport Access Control link.
    Now, when I am testing this service from OSB Test Console, I am providing the following input.
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:N1="http://abcd.com/common/bodcomponents/transactional/model/1.0/">
    <soap:Header>
    <AuthHeader>
    <N1:Username>userXYZ</N1:Username>
    <N1:Password>passXYZ</N1:Password>
    </AuthHeader>
    </soap:Header>
    <soap:Body>
    <!-- body payload -->
    </soap:Body>
    </soap:Envelope>
    The response is "The invocation resulted in an error: ."
    The OSB server logs show the below error:
    ####<Feb 9, 2011 6:05:42 PM IST> <Error> <OSB Security> <test.abcd.co.in> <osb_server1> <[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <5a5769b8025ef997:-2bda316:12def49100a:-7fff-0000000000000c92> <1297254942782> <BEA-387082> <Proxy service access denied (proxy: ABCD/Services/Common_HTTP_Proxy, subject: Subject: 0
    )>
    ####<Feb 9, 2011 6:05:42 PM IST> <Error> <OSB Kernel> <test.abcd.co.in> <osb_server1> <[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <5a5769b8025ef997:-2bda316:12def49100a:-7fff-0000000000000c92> <1297254942782> <BEA-382004> <Failed to process request message for service ProxyService ABCD/Services/Common_HTTP_Proxy: com.bea.wli.sb.security.AccessNotAllowedException
    com.bea.wli.sb.security.AccessNotAllowedException
         at com.bea.wli.sb.pipeline.RouterSecurity.doAccessControl(RouterSecurity.java:136)
         at com.bea.wli.sb.pipeline.RouterSecurity.doAccessControl(RouterSecurity.java:117)
         at com.bea.wli.sb.pipeline.RouterManager.processMessage(RouterManager.java:586)
         at com.bea.wli.sb.test.service.ServiceMessageSender.send0(ServiceMessageSender.java:329)
         at com.bea.wli.sb.test.service.ServiceMessageSender.access$000(ServiceMessageSender.java:76)
         at com.bea.wli.sb.test.service.ServiceMessageSender$1.run(ServiceMessageSender.java:134)
         at com.bea.wli.sb.test.service.ServiceMessageSender$1.run(ServiceMessageSender.java:132)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
         at com.bea.wli.sb.security.WLSSecurityContextService.runAs(WLSSecurityContextService.java:55)
         at com.bea.wli.sb.test.service.ServiceMessageSender.send(ServiceMessageSender.java:137)
         at com.bea.wli.sb.test.service.ServiceProcessor.invoke(ServiceProcessor.java:454)
         at com.bea.wli.sb.test.TestServiceImpl.invoke(TestServiceImpl.java:172)
         at com.bea.wli.sb.test.client.ejb.TestServiceEJBBean.invoke(TestServiceEJBBean.java:167)
         at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl.invoke(TestService_sqr59p_EOImpl.java:353)
         at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl_WLSkel.invoke(Unknown Source)
         at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:589)
         at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
         at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:477)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
         at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:473)
         at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Please suggest where I am going wrong in this. I have cross checked the user/pass credentials with what I am giving in the input, and it is perfectly fine.

    I have added the Username and Password as follows, since the namespace declaration was required due to the namespace prefix 'N1' in the XPath
    declare namespace N1="http://abcd.com/common/bodcomponents/transactional/model/1.0/";./AuthHeader/N1:Username/text()
    declare namespace N1="http://abcdp.com/common/bodcomponents/transactional/model/1.0/";./AuthHeader/N1:Password/text()
    I have removed the Message Access Control conditions, have only kept Transport Access Control conditions.
    If i keep the condition in Transport Access Control as "Allow access to everyone", and test with proper credentials in the Username/Password tags in SOAP Header, then it works fine. However, if I try to give an incorrect password in the SOAP Header, it denies the access. So that means the XPaths given for Username/Password are working fine. The OSB logs show the below message
    +####<Feb 10, 2011 12:59:21 PM IST> <Error> <OSB Security> <test.abcd.co.in> <osb_server1> <[ACTIVE] ExecuteThread: '7' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <5a5769b8025ef997:-2bda316:12def49100a:-7fff-0000000000000ef2> <1297322961536> <BEA-386008> <Message level username/password authentication failed: [Security:090304]Authentication Failed: User weblogic javax.security.auth.login.FailedLoginException: [Security:090302]Authentication Failed: User weblogic denied>+
    However if i add the condition with predicate as "User" and user name argument as "weblogic", and try to pass the same in the SOAP Header as well with the correct password, it denies the access with below message in the logs.
    +####<Feb 9, 2011 6:05:42 PM IST> <Error> <OSB Security> <test.abcd.co.in> <osb_server1> <[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <5a5769b8025ef997:-2bda316:12def49100a:-7fff-0000000000000c92> <1297254942782> <BEA-387082> <Proxy service access denied (proxy: ABCD/Services/Common_HTTP_Proxy, subject: Subject: 0+
    +)>+
    +####<Feb 9, 2011 6:05:42 PM IST> <Error> <OSB Kernel> <test.abcd.co.in> <osb_server1> <[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <5a5769b8025ef997:-2bda316:12def49100a:-7fff-0000000000000c92> <1297254942782> <BEA-382004> <Failed to process request message for service ProxyService ABCD/Services/Common_HTTP_Proxy: com.bea.wli.sb.security.AccessNotAllowedException+
    com.bea.wli.sb.security.AccessNotAllowedException
    at com.bea.wli.sb.pipeline.RouterSecurity.doAccessControl(RouterSecurity.java:136)
    at com.bea.wli.sb.pipeline.RouterSecurity.doAccessControl(RouterSecurity.java:117)
    at com.bea.wli.sb.pipeline.RouterManager.processMessage(RouterManager.java:586)
    at com.bea.wli.sb.test.service.ServiceMessageSender.send0(ServiceMessageSender.java:329)
    at com.bea.wli.sb.test.service.ServiceMessageSender.access$000(ServiceMessageSender.java:76)
    at com.bea.wli.sb.test.service.ServiceMessageSender$1.run(ServiceMessageSender.java:134)
    at com.bea.wli.sb.test.service.ServiceMessageSender$1.run(ServiceMessageSender.java:132)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
    at com.bea.wli.sb.security.WLSSecurityContextService.runAs(WLSSecurityContextService.java:55)
    at com.bea.wli.sb.test.service.ServiceMessageSender.send(ServiceMessageSender.java:137)
    at com.bea.wli.sb.test.service.ServiceProcessor.invoke(ServiceProcessor.java:454)
    at com.bea.wli.sb.test.TestServiceImpl.invoke(TestServiceImpl.java:172)
    at com.bea.wli.sb.test.client.ejb.TestServiceEJBBean.invoke(TestServiceEJBBean.java:167)
    at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl.invoke(TestService_sqr59p_EOImpl.java:353)
    at com.bea.wli.sb.test.client.ejb.TestService_sqr59p_EOImpl_WLSkel.invoke(Unknown Source)
    at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:589)
    at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
    at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:477)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
    at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:473)
    at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

  • OSB- Any Soap type Proxy service URL issue.

    Hi,
    There is an issue which i am facing and stuggling with it for sometime :(
    Requirement - Using OSB 11g i had created 12 different services based on WSDLs provided by the client and all of them are working fine.However the client wanted a OSB router service on top of these 12 services which wil search for a string in the input xml and then route it to the required Proxy service (amongst the 12 services developed).
    Problem- I was able to create the router Proxy service which was a Any Soap type of proxy service as i didnot have a WSDL for the router service.The router service is working fine when we test it from the OSB console.
    When We tried to test the flow from SOAPUI (we used the WSDL of one of the 12 webservices developed and modified the uri to the uri of the router service ie. http://hostname:port/router/routerProxy) and it does not work.
    The error returned is ERROR 404 nothing found by this name.
    As The router proxy is a Any Soap kind of service i do not have the option of providing the client with the WSDL.
    I would want to know how to i call this router service from an external source like SOAPUI so that the client is able to hit it.Also what would be the end point uri of this router service ?
    Kindly Help
    Thanks
    Pranav Shah

    Hi anuj,
    Here you have the configuration
    <?xml version="1.0" encoding="UTF-8"?>
    <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" xmlns:con="http://www.bea.com/wli/sb/pipeline/config" xmlns:con1="http://www.bea.com/wli/sb/stages/routing/config" xmlns:con2="http://www.bea.com/wli/sb/stages/config" xmlns:con3="http://www.bea.com/wli/sb/stages/transform/config">
    <ser:coreEntry isProxy="true" isEnabled="false" isAutoPublish="false" isTracingEnabled="false">
    <ser:description/>
    <ser:binding type="abstract SOAP" xsi:type="con:AnySoapBindingType" isSoap12="false" xmlns:con="http://www.bea.com/wli/sb/services/bindings/config"/>
    <ser:monitoring isEnabled="false">
    <ser:aggregationInterval>10</ser:aggregationInterval>
    <ser:pipelineMonitoringLevel>Pipeline</ser:pipelineMonitoringLevel>
    </ser:monitoring>
    <ser:reporting>true</ser:reporting>
    <ser:logging isEnabled="true">
    <ser:logLevel>debug</ser:logLevel>
    </ser:logging>
    <ser:sla-alerting isEnabled="true">
    <ser:alertLevel>normal</ser:alertLevel>
    </ser:sla-alerting>
    <ser:pipeline-alerting isEnabled="true">
    <ser:alertLevel>normal</ser:alertLevel>
    </ser:pipeline-alerting>
    <ser:ws-policy>
    <ser:binding-mode>service-policy-bindings</ser:binding-mode>
    <ser:policies/>
    </ser:ws-policy>
    <ser:throttling enabled="false">
    <ser:capacity>0</ser:capacity>
    <ser:maxQueueLength>0</ser:maxQueueLength>
    <ser:timeToLive>0</ser:timeToLive>
    </ser:throttling>
    <ser:messageTracing enabled="false">
    <ser:detailsLevel>Terse</ser:detailsLevel>
    <ser:maxSize>8192</ser:maxSize>
    </ser:messageTracing>
    <ser:pageAttachments isEnabled="false"/>
    <ser:transactions isRequired="false" sameTxForResponse="false"/>
    </ser:coreEntry>
    <ser:endpointConfig>
    <tran:provider-id>http</tran:provider-id>
    <tran:inbound>true</tran:inbound>
    <tran:URI>
    <env:value>/testRouter/test</env:value>
    </tran:URI>
    <tran:inbound-properties/>
    <tran:all-headers>true</tran:all-headers>
    <tran:provider-specific xsi:type="http:HttpEndPointConfiguration" xmlns:http="http://www.bea.com/wli/sb/transports/http">
    <http:inbound-properties/>
    </tran:provider-specific>
    </ser:endpointConfig>
    <ser:router>
    <con:flow>
    <con:route-node name="RouteNode1">
    <con:context/>
    <con:actions>
    <con3:ifThenElse>
    <con2:id>_ActionId-9110389481588294027-8fc6726.12c833ed7e1.-7c90</con2:id>
    <con3:case>
    <con3:condition>
    <con:xqueryText xmlns:con="http://www.bea.com/wli/sb/stages/config">fn:contains(fn-bea:serialize($body), 'ImsersoSiebelContactInsert')</con:xqueryText>
    </con3:condition>
    <con3:actions>
    <con1:route>
    <con2:id>_ActionId-9110389481588294027-8fc6726.12c833ed7e1.-7c8f</con2:id>
    <con1:service ref="ServiWebEntrada/AltaExpediente/ProxyService/AltaExpedienteProxyService" xsi:type="ref:ProxyRef" xmlns:ref="http://www.bea.com/wli/sb/reference"/>
    <con1:operation>ImsersoSiebelContactInsert</con1:operation>
    <con1:outboundTransform/>
    <con1:responseTransform/>
    </con1:route>
    </con3:actions>
    </con3:case>
    <con3:case>
    <con3:condition>
    <con:xqueryText xmlns:con="http://www.bea.com/wli/sb/stages/config">fn:contains(fn-bea:serialize($body), 'CreaContacto')</con:xqueryText>
    </con3:condition>
    <con3:actions>
    <con1:route>
    <con2:id>_ActionId-9110389481588294027-8fc6726.12c833ed7e1.-7c8b</con2:id>
    <con1:service ref="ServiWebEntrada/CuidContact/ProxyService/CuidContactProxyService" xsi:type="ref:ProxyRef" xmlns:ref="http://www.bea.com/wli/sb/reference"/>
    <con1:operation>CreaContacto</con1:operation>
    <con1:outboundTransform/>
    <con1:responseTransform/>
    </con1:route>
    </con3:actions>
    </con3:case>
    </con3:ifThenElse>
    </con:actions>
    </con:route-node>
    </con:flow>
    </ser:router>
    </xml-fragment>
    Regards
    Pranav

  • Is it possible to make an OSB Proxy service offline/online based on BS

    JMS QUEUE
    |
    |_____ Proxy Service <-------->Business Service <---------> External System URL
    I have a configuration as shown above.
    There is a way to make the Business Service offline/online based on the External system URL being offline/online by setting the
    Business service-> Operational Settings->Offline Endpoint URIs with a timesatmp.
    Is it possible to make the state of the proxy service to enabled/disabled based on this state of BS based on external enpoint URI?
    This is a requirement such that the messages in the JMS queue doesnot get lost or consumed when the external system is offline.
    Thanks in Advance!

    I have thought about this. There are some problems here....
    I cannot use the same proxy to invoke the java callout and then based on the code or handler disable it, since
    1) i would have no way to enable back the proxy again.
    2) Also there is some amount of message loss.
    So i will have to use another proxy to do the same, but in this case
    1) what would be the trigger to this proxy?
    2) And how often do i invoke the java callout to see if the URI is up or not? (wouldnt that affect the performance?)
    I am just wondering why did they give an offline URI option in the business service and no similar option in the proxy service, Any Idea?
    Thanks

  • OSB -11g - Calling JMS Proxy Service in a stage

    Hi,
    When we createa JMS based proxy service, the proxy service keeps on polling the JMS Queue for any new messages arriving in the queue. But I do not want the proxy service to keep on polling the Queue. Instead I want to call the JMS Proxy Service in any stage (of any other Proxy Service) using a service callout. It means that I do not want the Queue to be polled always, instead the queue should be polled only when this JMS Proxy Service is invoked.
    Is it possible to do? If so, how?
    Thanks,
    Sanjay

    Hi Anuj,
    Following is my requirement:
    The producer wants to interact with us using Web Services. The input payload has some more values (username and password) apart from the HL7 data (base64 encoded) itself. I have to receive the input payload, authenticate the call and convert the HL7 encoded message into an XML and send it to the consumer.
    What have I done till now:
    1) I have created two Proxy Services PS1 and PS2
    2) Proxy Service (PS1) will be invoked by the producer.
    3) Then I get the username, password and data from the payload
    4) Populate the username and password in the SOAP Header and HL7 data in SOAP Body
    5) Call PS2 from PS1
    6) In PS2 I have configured Message Level Security to authenticate with the username and password
    7) After authentication I make a Java Callout to decode the base64 encoded HL7 data
    8) I now have written my own HL7 sender (Java code) which wraps the decoded HL7 data with MLLP requirements and then send it to the B2B server using a Socket (TCP connection). I do a Java Callout to this Java class.
    9) In B2B I have configured a RTP (Remote Trading Partner) which has a MLLP channel.
    10) I created a ADT message document and a ACK document
    11) I created two agreements between HTP and RTP (one agreement receives the HL7 data from the TRP using MLLP and another which sends the ACK to the RTP using MLLP channel)
    12) In the receiveing agreement I have configured a JMS channel (on the HTP side) becuase of which B2B receives the HL7 Pipe delimited data and translates it and then pushes the XML data into the JMS queue (which needs to be transformed to producer XML)
    13) I have also configured a JMS channel for the RTP which I am using in second agreement to get the acknowledgement. Because of this the ACK is placed in a JMS queue.
    I need to poll this JMS queue in order to send the ACK back to the producer (which I have to do in the response pipeline of PS2). Hence I wanted to pop the message from the JMS queue in the response pipeline and then send that message.
    Please advice if my approach is correct.
    Thanks,
    Sanjay
    Edited by: Sanjay Bharatiya on 17-Mar-2011 12:06 PM

  • Remove SOAP Header Element from ALSB Proxy Service Response

    I've got a client of one of my ALSB Proxy services that needs the SOAP header element removed from the response. I'm struggling to find a way to do that with a WSDL-based proxy service. Do I need to change my service to an Any XML Service or is there an easier way?

    At the same time, could you please also tell me how do i convert a XML Response from a business service to a SOAP Response in Proxy Service.
    My client is expecting a soap response and the backend gives back only the XML Response
    Thanks in advance!!
    ~Swagat

  • OSB Business -Proxy Service

    Hi,
    I need to call WSDL which has 2 operations. I need to pass default xml payload to operation 1 and the response I get, has to be passed to invoke operation 2. I have created 2 business services and after I create a proxy service :
    How to pass default xml to business service 1 ?
    How to pass response from business service 1 to business service 2 ?
    Thanks

    somebol, Prabhu
    If I use Service Callout , I see Request Document Variable where I can pass in the request ($body/<request>), as you mentioned.But, the default XML payload to business service does not come as input to Proxy Service, I need to pass that XML payload explicitly to business service op1.
    I was thinking if I have to use assign or replace to pass the XML payload to business service op1, but I am not sure how to do in my Proxy.
    My Input to Proxy Service is date , which at this point is not used anywhere.
    Thanks

Maybe you are looking for