Catching and rethrowing a SOAP Fault from an OSB 11g Proxy service

Hello,
We have a chain of proxy services (that last one of which calls a business service) in our 11.1.1.6 OSB project.  At one of the lower levels, we successfully throw a fault like this:
<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Fault xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
    <soap:faultcode>SOAP-ENV:Client</soap:faultcode>
    <soap:faultstring>Non-Existent User</soap:faultstring>
    <soap:faultActor>Client who consumed this Web Service operation</soap:faultActor>
    <soap:detail>
      <sc:UserNonExistentFault xmlns:sc="http://xmlns.sc.com/Services/V1">
        <sc:CustomerNumber>12345</sc:CustomerNumber>
      </sc:UserNonExistentFault>
    </soap:detail>
  </soap:Fault>
</soapenv:Body>
In the proxy service which calls this proxy service, I tried to catch this fault in an Error Handler so that I could confirm that it's available for me to re-throw back up the chain.  Curiously, the proxy service which calls that proxy service cannot see that fault.  But rather it sees what appears to be an OSB-overridden fault:
<con:fault xmlns:con="http://www.bea.com/wli/sb/context">
  <con:errorCode>BEA-380000</con:errorCode>
  <con:reason>com.bea.wli.sb.pipeline.PipelineException</con:reason>
  <con:details>
    <err:ErrorResponseDetail xmlns:err="http://www.bea.com/wli/sb/errors">
      <err:response-metadata xsi:type="sb:SBResponseMetaDataXML" xmlns:sb="http://www.bea.com/wli/sb/transports/sb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <tran:headers xsi:type="sb:SBResponseHeadersXML" xmlns:tran="http://www.bea.com/wli/sb/transports"/>
        <tran:response-code xmlns:tran="http://www.bea.com/wli/sb/transports">1</tran:response-code>
        <tran:encoding xmlns:tran="http://www.bea.com/wli/sb/transports">utf-8</tran:encoding>
      </err:response-metadata>
    </err:ErrorResponseDetail>
  </con:details>
  <con:location>
    <con:node>PipelinePairNode</con:node>
    <con:pipeline>PipelinePairNode_request</con:pipeline>
    <con:stage>GetCustomerByNumber</con:stage>
    <con:path>request-pipeline</con:path>
  </con:location>
</con:fault>
I have tried printing out the values of $body, $fault, $outbound and $inbound from the calling proxy service's Error Handler just to see if our <sc:UserNonExistentFault> is nested anywhere therein.  Unfortunately, it is nowhere to be found.
How can we force OSB to NOT override our faults with OSB-framework faults and, instead, just throw our custom fault all the way up the chain and back to the consumer?
Thank you,
Michael

I think I figured this out.
In proxyService-2, build the <soap:Fault> and assign it to the body, then Reply with Failure (as you mentioned above).
When proxyService-1 receives this, it will still be in the $body variable.  But the $fault variable is now populated with a BEA-38000 error.  It seems that as long as the $fault variable has data in it, then the OSB system will throw that instead of my fault (ignoring the <soap:Fault> I put into the body).
So what I did was to Delete the $fault variable in the error handler of proxyService-1, then Reply with Failure (again).
It would seem as if the inner workings of OSB has some logic like:
if $fault is not null, throw the BEA-####### fault.  Otherwise, return the contents of the $body.
By removing the fault, I effectively got to that "else/otherwise" condition.
Of course, the Reply with Failure is still needed to ensure that an HTTP 500 error is passed with the fault (per the SOAP specification).
Cheers!
Michael

Similar Messages

  • 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)

  • How to propogate SOAP fault from JPD to JWS

    Hello,
    I am new to weblogic and i am facing a problem with propogation of SOAP Fault from JPD to Process Control to JWS.
    I need to throw a custom SOAP Fault from JPD to the client of the JWS which wraps this JPD.
    Currently when i set and throw the soap fault from JPD it goes to the Process Control but the Process Control in turn throws a ProcessControlException to the JWS. Does any one know how can i retrieve the original SOAP Fault in the JWS?
    Thanks

    Hello man.....
    You cannot get the the original SoapFault by usually try/catch operation, but there is a trick to do that....
    When you use your service control do that:
    try{
    yourServiceControl.yourMethodThatThrowsException();
    }catch(ServiceControlException e){
    //With this "e" variable you can retrieve the exception
    //looking for the the methods in it
    //e.getXXXX
    //you will find what you need
    I hope it helps you
    Sincerely
    messenger:[email protected]
    e-mail:[email protected]

  • Java.lang.Exception: oracle.sysman.emSDK.webservices.wsdlapi.SoapTestException: Client received SOAP Fault from server : Failure in SDOSerializer.deserialize

    Hi All,
    I am getting this exception while invoking one of our service from EM. Any pointers will be very helpful.
    java.lang.Exception: oracle.sysman.emSDK.webservices.wsdlapi.SoapTestException: Client received SOAP Fault from server : Failure in SDOSerializer.deserialize. at oracle.sysman.emas.model.wsmgt.WSTestModel.invokeOperation(WSTestModel.java:813) at oracle.sysman.emas.view.wsmgt.WSView.invokeOperation(WSView.java:385) at oracle.sysman.emas.view.wsmgt.WSView.invokeOperation(WSView.java:303) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.el.parser.AstValue.invoke(AstValue.java:187) at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297) at org.apache.myfaces.trinidadinternal.taglib.util.MethodExpressionMethodBinding.invoke(MethodExpressionMethodBinding.java:53) at org.apache.myfaces.trinidad.component.UIXComponentBase.broadcastToMethodBinding(UIXComponentBase.java:1491) at org.apache.myfaces.trinidad.component.UIXCommand.broadcast(UIXCommand.java:183) at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent$1.run(ContextSwitchingComponent.java:111) at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent._processPhase(ContextSwitchingComponent.java:384) at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.broadcast(ContextSwitchingComponent.java:114) at oracle.adf.view.rich.component.fragment.UIXInclude.broadcast(UIXInclude.java:101) at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent$1.run(ContextSwitchingComponent.java:111) at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent._processPhase(ContextSwitchingComponent.java:384) at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.broadcast(ContextSwitchingComponent.java:114) at oracle.adf.view.rich.component.fragment.UIXInclude.broadcast(UIXInclude.java:95) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:756) at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._invokeApplication(LifecycleImpl.java:972) at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:439) at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:219) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:27) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at oracle.sysman.emSDK.license.LicenseFilter.doFilter(LicenseFilter.java:102) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:211) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:131) at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:447) at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60) at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:447) at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:271) at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:177) at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at oracle.help.web.rich.OHWFilter.doFilter(Unknown Source) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at oracle.sysman.emas.fwk.MASConnectionFilter.doFilter(MASConnectionFilter.java:41) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:181) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at oracle.sysman.eml.app.AuditServletFilter.doFilter(AuditServletFilter.java:183) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at oracle.sysman.eml.app.EMRepLoginFilter.doFilter(EMRepLoginFilter.java:203) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at oracle.sysman.core.model.targetauth.EMLangPrefFilter.doFilter(EMLangPrefFilter.java:158) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at oracle.sysman.core.app.perf.PerfFilter.doFilter(PerfFilter.java:141) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at oracle.sysman.eml.app.ContextInitFilter.doFilter(ContextInitFilter.java:542) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119) at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:324) at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:460) at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:103) at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171) at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at oracle.security.wls.filter.SSOSessionSynchronizationFilter.doFilter(SSOSessionSynchronizationFilter.java:419) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:163) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3739) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3705) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2282) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2181) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1491) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) Caused by: oracle.sysman.emSDK.webservices.wsdlapi.SoapTestException: Client received SOAP Fault from server : Failure in SDOSerializer.deserialize. at oracle.sysman.emSDK.webservices.wsdlapi.dispatch.DispatchUtil.invoke(DispatchUtil.java:362) at oracle.sysman.emSDK.webservices.wsdlparser.OperationInfoImpl.invokeWithDispatch(OperationInfoImpl.java:1004) at

    Hi,
    its JDeveloper and ADF on this forum. For EM related questions, you should try the EM forum
    Frank

  • Dynamic Invocation: Error The SOAP PA receives a SOAP Fault from SOAP serve

    Hi All,
    I am trying to run the sample code "Dynamic Invocation of Oracle9i Web Services using Oracle UDDI registry"
    I was able to run the web services, publish them, and inquiry them using local UDDI registry.
    However, while invoking any method provided by the web services using the inovk method I get the following error
    oracle.j2ee.ws.client.WebServiceProxyException: Invocation failed 5,100: The SOAP PA receives a SOAP Fault from SOAP server
    Can anybody help me please?
    Regards,
    S.Al Shamsi

    It looks like the problem is occuring on the server side. I guess you have included the stacktrace from the client, can you get hold of the server side stacktrace?

  • Difference in behavior of sql and pl/sql after migrating from 9i to 11g

    after migrating our database from oracle 9i to oracle11g, the developpers are worry that the behavior of the queries and pl/sql procedures/functions will change
    example :
    in 9i, select salary,count(*) from emp group by salary, it will display the rows sorted by salary
    in 11gi, select salary,count(*) from emp group by salary, it will display the rows not sorted by default, we have to add the clause order by salary.
    somebody could give the list of other difference in behavior (SQL and PL/SQL) agter migrating from 9i to 11g
    Thanks a lot.

    Tell your developers: garbage in - garbage out. In relational databases only ORDER BY ensures row order. If your developers relied on GROUP BY implemented by SORT and therefore returning ordered rows they had to realize code they wrote is Oracle release dependent and sooner or later code would require changes. And that "sooner or later" is now reality. In newer versions ORACLE can do GROUP BY via SORT or via HASH. And if it is done via HASH - don't expect ordered results. So tell your developers "payback time".
    SY.

  • How to catch SOAP fault from PeopleSoft web service

    I am trying to catch the SOAP fault thrown from pplsoft. Currently we get only runtime error if we call pplsoft web service thru ESB. Fault is not being propagated back to route ESB.
    thanks for your help

    Have you managed to solve this issue? BPEL does allow you to do this.

  • How to return SOAP Fault from MII?

    Hello, there!
    I'd like an MII 12 transaction to return a SOAP Fault response when it fails for some reason.
    The closest thing I found to this is to terminate the transaction (using the "Terminate Transaction" action) with error.
    But this will cause MII to return an HTML page containing the error message, which is not satisfactory at all. It even causes the client to fail, since it is expecting a SOAP response.
    Does anyone have any clue about this?
    Thanks in advance!

    The client will get a 500 error, with the error data available in the HTML content.  Using the 500 error as the notification that something went wrong is probably the easiest way at present. 
    You could also create a "simulated" SOAP call using the Runner servlet and HTTP post, along with input and output XML documents that use a SOAP envelope/structure.  You could then add a SOAP fault to the returned XML from within your transaction logic.  It's not easy, but it can be done.  The transaction itself is easy, but creating the WSDL is a bit more work, since you need to override the SOAP URL in the WSDL to point to Runner instead of SOAPRunner, and to include the InputParameter parameter in the URL to tell MII to map the "posted" XML (SOAP Input message) to a specific transaction input parameter.

  • How to return a Soap Fault from a business process

    I'm trying to re-implement an existing web service in WLI that can return soap
    faults to clients when business errors occur while processing a request. Is this
    possible to do with WLI, and if so can someone please point me in the right direction?
    thanks...

    If your JWS can throw a SOAPFaultException, that should return a SOAP fault to
    the client.
    "Michael Hanes" <[email protected]> wrote:
    >
    I'm trying to re-implement an existing web service in WLI that can return
    soap
    faults to clients when business errors occur while processing a request.
    Is this
    possible to do with WLI, and if so can someone please point me in the
    right direction?
    thanks...

  • Wht is retry and rethrow in AIA fault policies

    Hi All,
    Can anyone explain abt fault handling in AIA.
    If a binding/remote fault occurs then how the flow of a fault wlll work?
    If the fault is retried how many times its done and after retry wht happens?
    can u explain the fault handling policy.
    If other exceptions occur then how to handle them?
    <Action id="aia-ora-java">
    <javaAction className="oracle.apps.aia.core.eh.BPELJavaAction" defaultAction="ora-rethrow-fault">
    <returnValue value="REPLAY" ref="ora-terminate"/>
    <returnValue value="RETRHOW" ref="ora-rethrow-fault"/>
    <returnValue value="ABORT" ref="ora-terminate"/>
    <returnValue value="RETRY" ref="aia-ora-retry"/>
    <returnValue value="MANUAL" ref="ora-human-intervention"/>
    </javaAction>
    Thanks a lot.

    Can anyone explain abt fault handling in AIA. If a binding/remote fault occurs then how the flow of a fault wlll work?These are partner link faults and on error, BPEL Fault policy will get invoked and the actions configured will get executed. If a rethrow action is configured in the fault policy, the execution flow will come back to the BPEL process.
    If the fault is retried how many times its done and after retry wht happens?This is configured by the retry options in the fault policy.
    can u explain the fault handling policy.Please refer to "Fault Management Framework" section in this [tech note|http://www.oracle.com/technology/products/ias/bpel/pdf/10133technotes.pdf]. Please let me know if you have specific questions or need details on a certain feature.
    The AIA fault handling is documented in the AIA Integration Developer Guide and Core Components Guide. Please refer to relevant sections for your use case.
    Regards
    Rohit

  • "SOAP:Fault" in scenario with ABAP proxy client

    Hello,
    I realized the scenario CRM40_Basis620(ABAP proxy client)->XI->File.
    XI:
    The sender communication channel is a XI adapter (Parameters: HTTP 1.0, XI 3.0, Integration Server, Security profile unchecked, Security level - HTTP).
    CRM:
    The proxy generation is ok.
    SLDCHECK is ok.
    All RFC destinations are ok.
    APPINT_200_620 for CRM was installed and configured well (I think so, but...).
    When I ran the ABAP proxy client on CRM, sxmb_moni(CRM) returned the text for the XML Message (Display-CallIntegrationServer-Payloads-TraceDocument):
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <SAP:TraceHeader xmlns:SAP="http://sap.com/exchange/MessageFormat">
      <Trace level="1" type="B" name="CL_XMS_TROUBLESHOOT-ENTER_PLSRV" />
      <Trace level="1" type="T">****************************************************</Trace>
      <Trace level="1" type="T">* *</Trace>
      <Trace level="1" type="T">* *</Trace>
      <Trace level="1" type="T">XMB entry processing</Trace>
      <Trace level="1" type="T">system-ID = EST</Trace>
      <Trace level="1" type="T">client = 300</Trace>
      <Trace level="1" type="T">language = E</Trace>
      <Trace level="1" type="T">user = BABKIN_RA</Trace>
      <Trace level="1" type="Timestamp">2007-08-06T13:55:12Z</Trace>
      <Trace level="1" type="T">* *</Trace>
      <Trace level="1" type="T">* *</Trace>
      <Trace level="1" type="T">****************************************************</Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_UC_EXECUTE" />
    - <!--  ************************************
      -->
      <Trace level="1" type="T">Message-GUID = DC4424A659314CF18F500002A541D0E7</Trace>
      <Trace level="1" type="T">PLNAME = SENDER</Trace>
      <Trace level="1" type="T">QOS = EO</Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PIPELINE_ASYNC" />
    - <!--  ************************************
      -->
      <Trace level="1" type="T">Get definition of external pipeline = SENDER</Trace>
      <Trace level="1" type="T">Get definition of internal pipeline = SAP_SENDER</Trace>
      <Trace level="1" type="T">Generated prefixed queue name = XBTS0004</Trace>
      <Trace level="1" type="T">Setup qRFC Scheduler OK!</Trace>
      <Trace level="1" type="T">----
    </Trace>
      <Trace level="1" type="T">Going to persist message + call qRFC now...</Trace>
      <Trace level="1" type="T">NOTE: The following trace entries are always lacking</Trace>
      <Trace level="1" type="T">- Exit WRITE_MESSAGE_TO_PERSIST</Trace>
      <Trace level="1" type="T">- Exit CALL_PIPELINE_ASYNC</Trace>
      <Trace level="1" type="T">Async barrier reached. Bye-bye !</Trace>
      <Trace level="1" type="T">----
    </Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_TO_PERSIST" />
    - <!--  ************************************
      -->
      <Trace level="1" type="B" name="CL_XMS_MAIN-PERSIST_READ_MESSAGE" />
      <Trace level="1" type="T">Note: the following trace entry is written delayed (after read from persist)</Trace>
      <Trace level="1" type="B" name="SXMS_ASYNC_EXEC" />
    - <!--  ************************************
      -->
      <Trace level="1" type="T">----
    </Trace>
      <Trace level="1" type="T">Starting async processing with pipeline SENDER</Trace>
      <Trace level="1" type="T">system-ID = EST</Trace>
      <Trace level="1" type="T">client = 300</Trace>
      <Trace level="1" type="T">language = E</Trace>
      <Trace level="1" type="T">user = BABKIN_RA</Trace>
      <Trace level="1" type="Timestamp">2007-08-06T13:55:12Z</Trace>
      <Trace level="1" type="T">----
    </Trace>
    - <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PIPELINE_SYNC">
      <Trace level="1" type="T">Get definition of pipeline PID= SENDER</Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-LOOKUP_INTERNAL_PL_ID" />
    - <Trace level="1" type="B" name="PLSRV_CALL_INTEGRATION_SERVER">
      <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV" />
    - <!--  ************************************
      -->
      <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL" />
    - <!--  ************************************
      -->
    - <Trace level="1" type="B" name="CL_XMS_PLSRV_CALL_XMB-ENTER_PLSRV">
      <Trace level="1" type="T">URL for integration server read from global configuration</Trace>
      <Trace level="1" type="T">URL= http://SRMDEV.oao.sng:8011/sap/xi/engine?type=entry</Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-SET_TECHNICAL_ROUTING_PROPERTY" />
    - <Trace level="1" type="B" name="CL_XMS_PLSRV_CALL_XMB-CALL_XMS_HTTP">
      <Trace level="1" type="System_Error">HTTP-client: error response= <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP:Header> </SOAP:Header> <SOAP:Body> <SOAP:Fault xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"><faultcode>SOAP:Client</faultcode><faultstring>Error during conversion of XI message</faultstring><faultactor>http://sap.com/xi/XI/Message/30</faultactor><detail><SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1"><SAP:Category>XIServer</SAP:Category><SAP:Code area="SECURITY">INBOUND_SECURE_LEVEL</SAP:Code><SAP:P1>DC4424A659314CF18F500002A541D0E7</SAP:P1><SAP:P2/><SAP:P3>HTTP</SAP:P3><SAP:P4/><SAP:AdditionalText/><SAP:ApplicationFaultMessage namespace=""/><SAP:Stack>Message DC4424A659314CF18F500002A541D0E7 was sent with ''. Channel configuration, however, requires 'HTTP' </SAP:Stack></SAP:Error></detail></SOAP:Fault> </SOAP:Body> </SOAP:Envelope></Trace>
      </Trace>
      <Trace level="1" type="System_Error">Exit XMB because of system error!</Trace>
      <Trace level="1" type="System_Error">System-Error: HTTP.HTTP_STATUS_CODE_NEQ_OK</Trace>
      <Trace level="1" type="System_Error">HTTP status code 500 : Error during conversion of XI message</Trace>
      <Trace level="1" type="B" name="CL_XMS_TROUBLESHOOT-ENTER_PLSRV" />
      </SAP:TraceHeader>
    I think the main problem is the parameter "HTTP Security level" for the channel, but not sure.
    Does anybody know where to find a solution?
    Regards,
    Roman

    Hi Roman
    There is no need for an XI adapter for client proxy.... we only use that for server proxies.
    Vaibhav

  • Accessing the SOAP fault received by OSB Service Call Out

    I have a proxy service with multiple OSB service call outs, which access a backend server via SOAP.
    If the backend server returns a fault, the proxy service' exception handling kicks in and the exception handling flow is triggered.
    That flow provides a variable 'fault', which holds the OSB fault information with the BEA fault code.
    The variable holding the service call out response (to which I assume the backend servers fault is written) is not available in the exception handling flow.
    I have multiple service call outs in my flow, all writing their response to different variables.
    Is there any way to access the fault received by the service call out? Is there any variable available in the exception flow, to which that information is written?

    Is there any way to access the fault received by the service call out?Please refer -
    Re: Error Handling OSB
    Regards,
    Anuj

  • Cannot find dashboard and reports after upgrading rdp from 10g to 11g OBIEE

    Hi all
    I am trying to upgrade from OBIEE 10g to 11g. These two products are installed on different servers. I have followed the guide: http://www.oracle.com/technetwork/issue-archive/2011/11-jul/o41bi-402913.html and everything seems to work fine.
    So i have taken a copy of rdp from the server where was installed OBIEE 10g and took it in the server where OBIEE 11g is installed.
    Ran the upgrade tool and upgrade finished successfully. Restarted the BI Servers in core application on Enterprise Manager.
    Now when i access the upgraded rpd, the layers and the fields are fine but I cannot find all the reports and dashboards that i had created.
    Am I missing any upgrade steps?
    Please suggest
    Thank you and best regards

    Hi Deepak,
    Thanks for your response.
    Oracle also came back to me and looks like my method is not valid:
    Hi Jim,
    Thanks a lot for the information. First of all I would like to inform you that upgrade CANNOT be performed across two machine. So, if 10g installation is on Host A, then upgrade to 11g will be on Host A.
    So, in your scenario this is what you can do:
    1. On Host A running Forms/Discoverer 10g on Windows 2003, install Forms/Discoverer/Reports 11g (11.1.1.6.0)
    2. Run the upgrade Assistant to perform the upgrade from 10g to 11g.
    3. Now upgrade OS of Host A to Windows 2008
    In short, I would like to inform you that upgrades across machines does not work. Source instance which is 10g and destination instance which is 11g must exist on same box.
    Here is the documentation which you can follow:
    http://docs.oracle.com/cd/E23943_01/upgrade.1111/e10130/toc.htm
    (Oracle® Fusion Middleware Upgrade Guide for Oracle Portal, Forms, Reports, and Discoverer)
    11g Release 1 (11.1.1)
    Let me know if you have any further questions.
    Thanks,
    Rishi

  • Rollback fault thrown while invoking a Proxy Service

    Hi,
    I am getting strange problem while invoking a proxy service.
    the operation on the service takes a list of customer numbers in the input.
    When the number of customer numbers is 10-20 it works fine but when I increase the customer numbers in the list to 200 it starts failing with the below error.
    *<<BaseCubeSessionBean::logError > Error while invoking bean "cube delivery": Rollback fault thrown.
    The current JTA transaction is aborting due to an user rollback fault being thrown from the BPEL code.
    This exception was caused by a bpelx:rollback fault being thrown. The user had directed the BPEL engine to roll back the current JTA transaction.
    There is no action recommended.
    ORABPEL-02180
    Rollback fault thrown.
    The current JTA transaction is aborting due to an user rollback fault being thrown from the BPEL code.
    This exception was caused by a bpelx:rollback fault being thrown. The user had directed the BPEL engine to roll back the current JTA transaction.
    There is no action recommended.*
    The cause for this error is as below
    javax.ejb.EJBException: Transaction Rolledback.: weblogic.transaction.internal.TimedOutException: Transaction timed out after 302 seconds
    I am clueless why the service is behaving different in both the cases.
    the endpoint of the webservice is the same in both the case and below is the sample request which I am sending.
    <v001:CustomerRequest>
    <v0011:CustomerNumberList>
    <v0011:CustomerNumber>12802582</v0011:CustomerNumber>
    <v0011:CustomerNumber>612391615</v0011:CustomerNumber>
    <v0011:CustomerNumber>189322879</v0011:CustomerNumber>
    <v0011:CustomerNumber>251524232</v0011:CustomerNumber>
    <v0011:CustomerNumber>208522415</v0011:CustomerNumber>
    <v0011:CustomerNumber>812603453</v0011:CustomerNumber>
    <v0011:CustomerNumber>12068921</v0011:CustomerNumber>
    <v0011:CustomerNumber>252053284</v0011:CustomerNumber>
    <v0011:CustomerNumber>191672097</v0011:CustomerNumber>
    <v0011:CustomerNumber>248131656</v0011:CustomerNumber>
    <v0011:CustomerNumber>8513869</v0011:CustomerNumber>
    </v0011:CustomerNumberList>
    <!--Optional:-->
    <v001:SynchToA>false</v001:SynchToA>
    <!--Optional:-->
    <v001:SynchToB>false</v001:SynchToB>
    <!--Optional:-->
    <v001:SynchToC>false</v001:SynchToC>
    <!--Optional:-->
    <v001:SynchToR>true</v001:SynchToR>
    </v001:CustomerRequest>
    Can anybody provide any pointers please... :|

    Hi-
    Can you try by increasing your JTA time out parameter, it seems to be a time out exception not sure if this could fix the issue. Anyways give a try and let us know the result.
    To increase the JTA parameter login to console --> Home --> Click on Domain under Domain Configuration -- > JTA and set the parameter Timeout Seconds to 1000 and then give a try.
    Let us know the result

  • OSB 11g: Business Service not getting reply back from distributed queue

    Here is the scenario:
    OSB Domain A has a Business service that does a JMS send to a distributed JMS queue hosted on another WLS domain.
    It expects a response from a distributed queue sitting on this same remote WLS domain.
    The remote WLS domain is configured as a Foreign JNDI Provider in the OSB Domain with the request and response queues defined. Testing this business service, we see that messages are being posted to the remote request queue fine, and that the message are being picked up and processed. The response was sent to the response queue, but the message just sits there, the OSB business service did not pick it up. I can see 16 active Consumers on the response queue, presumably from the OSB business service?
    Using CorrelationID.
    URI for request/response queues are using the locally defined JNDI name for the queues and connection factories from the Foreign JNDI Provider definition:
    - URI for request queue: jms:///[RemoteXAConnectionFactoryX]/[LocalJNDINameForRequestQueue]
    - URI for response queue: jms:///[RemoteXAConnectionFactoryX]/[LocalJNDINameForResponseQueue]
    Completely stumped at the moment...anybody has any ideas?
    Thanks,
    Melvin

    Hi,
    I am also facing the similar kind of issue as below. After placing the message in to request Queue, I need that message Id as response to that Business service. Please provide the solution for the below issue. Thanks in advance.
    Thanks,
    bharath.

Maybe you are looking for

  • Disconnecting and losing all songs??

    ive reset my ipod a total of 4 times now becuase that is what itunes tells me to do. when i disconnect it from my computer after loading back all of my songs it takes a long time to disconnect. When i went to play my ipod there were no songs or video

  • Resource selection in process order

    Dear Experts,                      I have a scenario where I want to group similar resources under specific resource types and finally arrive at a situation where if I try to change the resource in an order from the drop-down menu in the resource fie

  • Report on Synonm

    Hi, When I try to create a report on a synonym I get the an error that the table or view is not found. Here's my test instance: schema: Martin view: v_emp schema: Bob synonym called: v_emp which points to martin.v_emp When I am logged in SQL*Plus as

  • Validations in MAintainance View

    HI all, I have assigned a Tcode to a maintainance view..So when i insert a new record , i want to check  if a primary key field is left blank while saving or if all fields are blank while saving. In these cases it should not save. So what do i do? an

  • Improving Video/Graphics Performance

    Okay, so one cannot upgrade one's iMac graphics card. Any other strategies to improve video performance? I have done the obvious like closing all other apps and maxing out RAM (4GB).