Osb - bind error handler to proxy service

Hi!
I have got a proxy service which polls a POP3 server to download emails and process them.
My question: How could I bind an error handler to proxy service for noticing when the POP3 server is not available?
So I would like to put an alert when the OSB looses the connection to email server. I tried to put an error handler to top component on message flow but it doesn't work...
Could anyone help me?
Thanks!
Viktor

For poller transports (email/File/FTP etc) it is not possible to catch errors of transport layer, in your service error handler. Re: OSB - Error Handler in FTP Transport for TransportException
Thanks
Manoj
Edited by: Manoj Neelapu on Jun 28, 2010 3:51 PM

Similar Messages

  • OSB - how to handle poll file error in FTP Proxy Service

    I configed a proxy service to poll file from a FTP server.
    How can I capture the error when the proxy service cannnot poll? (FTP server is down, folder not found, username invalid, etc )
    I want to make it show in the Operations >Message Reports table.

    It is not possible. Those errors will only be logged to logfile.
    Manoj

  • OSB - Error handling, report via service callout?

    I'd like to use Report Action on any error happened in my services. I'd also like to keep only one Report Action to be able to change its configuration later easily if needed.
    As it seems currently, if I add the Report Action to the Error Handler of the service directly, it logs the error code/reason/etc correctly, but if I move the Report Action to a separate service and add a service callout to the Error Handler instead of calling the Report Action directly, I lose the error information (I get the report message but error code/reason/details will be all NULL in the database).
    Am I doing something wrong here? Is that a limitation of the product? Is there any solution to keep the report actions centralized in this case?
    Thanks..

    hi guys,
    thanks for all the suggestions though it's still not working here. Hopefully clarifying the situation:
    a) service -- error handler -- report error
    b) service -- error handler -- service callout -- report error
    a) works, b) does not.
    The syndromes for not working is that the reported message has error code, reason and detail all empty (NULL if I look directly in the database). I suspect the problem is with my service callout in scenario b).
    The service callout originally was made using the following parameters:
    Request document variable: body
    Response document variable: response
    SOAP request header: header
    SOAP response header: rheader
    Reading your suggestions I tried to set the request document variable from 'body' to 'fault', but it did not help either: I get the report message but still no error information in the message.
    How exactly should this service callout look like to properly transfer the error details to the called pipeline?

  • WSIF Binding Error while invoking HTTP Service

    Hi,
    I am getting a WSIF binding error when invoking an HTTP service. I was able to successfully invoke another HTTP service on the same server. However, while invoking some of the others services, we are getting errors. The wsdl binding declaration is:
    <binding name="JACADACustMaintBinding" type="tns:JACADACustMaintPortType">
    <http:binding verb="POST"/>
    <operation name="PostData">
    <http:operation location="/custmaint.cfg"/>
    <input>
    <mime:mimeXml part="CustMaintInput"/>
    <mime:content type="text/xml"/>
    </input>
    <output>
    <mime:mimeXml part="CustMaintOutput"/>
    <mime:content type="text/xml"/>
    </output>
    </operation>
    </binding>
    The error we are getting is as follows:
    com.oracle.bpel.client.BPELFault: faultName: {{http://schemas.oracle.com/bpel/extension}bindingFault}
    messageType: {{http://schemas.oracle.com/bpel/extension}RuntimeFaultMessage}
    parts: {{summary=[email protected] : Could not invoke 'PostData'; nested exception is:
         java.lang.Exception: Error in HTTP Post: Status 500: Unable to invoke service method: com.jacada.ea.jclient3.JClient3Exception: com.jacada.ea.jclient3.JClient3Exception:Negative response from server, response code: 110. Message from server: com.jacada.ea.jservice.JServiceException: Could not set input parameter: InVar_0: <html><head><title>Apache Tomcat/4.1.18 - Error report</title><STYLE><!--H1{font-family : sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;} H3{font-family : sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;} BODY{font-family : sans-serif,Arial,Tahoma;color : black;background-color : white;} B{color : white;background-color : #0086b2;} HR{color : #0086b2;} --></STYLE> </head><body><h1>HTTP Status 500 - Unable to invoke service method: com.jacada.ea.jclient3.JClient3Exception: com.jacada.ea.jclient3.JClient3Exception:Negative response from server, response code: 110. Message from server: com.jacada.ea.jservice.JServiceException: Could not set input parameter: InVar_0</h1><HR size="1" noshade><p><b>type</b> Status report</p><p><b>message</b> <u>Unable to invoke service method: com.jacada.ea.jclient3.JClient3Exception: com.jacada.ea.jclient3.JClient3Exception:Negative response from server, response code: 110. Message from server: com.jacada.ea.jservice.JServiceException: Could not set input parameter: InVar_0</u></p><p><b>description</b> <u>The server encountered an internal error (Unable to invoke service method: com.jacada.ea.jclient3.JClient3Exception: com.jacada.ea.jclient3.JClient3Exception:Negative response from server, response code: 110. Message from server: com.jacada.ea.jservice.JServiceException: Could not set input parameter: InVar_0) that prevented it from fulfilling this request.</u></p><HR size="1" noshade><h3>Apache Tomcat/4.1.18</h3></body></html>
    ,detail=java.lang.Exception: Error in HTTP Post: Status 500: Unable to invoke service method: com.jacada.ea.jclient3.JClient3Exception: com.jacada.ea.jclient3.JClient3Exception:Negative response from server, response code: 110. Message from server: com.jacada.ea.jservice.JServiceException: Could not set input parameter: InVar_0: <html><head><title>Apache Tomcat/4.1.18 - Error report</title><STYLE><!--H1{font-family : sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;} H3{font-family : sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;} BODY{font-family : sans-serif,Arial,Tahoma;color : black;background-color : white;} B{color : white;background-color : #0086b2;} HR{color : #0086b2;} --></STYLE> </head><body><h1>HTTP Status 500 - Unable to invoke service method: com.jacada.ea.jclient3.JClient3Exception: com.jacada.ea.jclient3.JClient3Exception:Negative response from server, response code: 110. Message from server: com.jacada.ea.jservice.JServiceException: Could not set input parameter: InVar_0</h1><HR size="1" noshade><p><b>type</b> Status report</p><p><b>message</b> <u>Unable to invoke service method: com.jacada.ea.jclient3.JClient3Exception: com.jacada.ea.jclient3.JClient3Exception:Negative response from server, response code: 110. Message from server: com.jacada.ea.jservice.JServiceException: Could not set input parameter: InVar_0</u></p><p><b>description</b> <u>The server encountered an internal error (Unable to invoke service method: com.jacada.ea.jclient3.JClient3Exception: com.jacada.ea.jclient3.JClient3Exception:Negative response from server, response code: 110. Message from server: com.jacada.ea.jservice.JServiceException: Could not set input parameter: InVar_0) that prevented it from fulfilling this request.</u></p><HR size="1" noshade><h3>Apache Tomcat/4.1.18</h3></body></html>
         at com.collaxa.cube.ws.WSIFInvocationHandler.invoke(WSIFInvocationHandler.java:617)
         at com.collaxa.cube.ws.WSInvocationManager.invoke2(WSInvocationManager.java:437)
         at com.collaxa.cube.ws.WSInvocationManager.invoke(WSInvocationManager.java:251)
         at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__invoke(BPELInvokeWMP.java:826)
         at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:402)
         at com.collaxa.cube.engine.ext.wmp.BPELActivityWMP.perform(BPELActivityWMP.java:199)
         at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:3698)
         at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1655)
         at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:75)
         at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:217)
         at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:314)
         at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:5765)
         at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:1087)
         at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.createAndInvoke(CubeEngineBean.java:133)
         at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.syncCreateAndInvoke(CubeEngineBean.java:162)
         at sun.reflect.GeneratedMethodAccessor86.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at com.evermind.server.ejb.interceptor.joinpoint.EJBJoinPointImpl.invoke(EJBJoinPointImpl.java:35)
         at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
         at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
         at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
         at com.evermind.server.ejb.interceptor.system.JAASInterceptor$1.run(JAASInterceptor.java:31)
         at com.evermind.server.ThreadState.runAs(ThreadState.java:693)
         at com.evermind.server.ejb.interceptor.system.JAASInterceptor.invoke(JAASInterceptor.java:34)
         at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
         at com.evermind.server.ejb.interceptor.system.TxRequiresNewInterceptor.invoke(TxRequiresNewInterceptor.java:52)
         at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
         at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
         at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
         at com.evermind.server.ejb.InvocationContextPool.invoke(InvocationContextPool.java:55)
         at com.evermind.server.ejb.StatelessSessionEJBObject.OC4J_invokeMethod(StatelessSessionEJBObject.java:87)
         at CubeEngineBean_LocalProxy_4bin6i8.syncCreateAndInvoke(Unknown Source)
         at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequestAnyType(DeliveryHandler.java:547)
         at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequest(DeliveryHandler.java:464)
         at com.collaxa.cube.engine.delivery.DeliveryHandler.request(DeliveryHandler.java:133)
         at com.collaxa.cube.ejb.impl.DeliveryBean.request(DeliveryBean.java:95)
         at sun.reflect.GeneratedMethodAccessor85.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at com.evermind.server.ejb.interceptor.joinpoint.EJBJoinPointImpl.invoke(EJBJoinPointImpl.java:35)
         at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
         at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
         at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
         at com.evermind.server.ejb.interceptor.system.JAASInterceptor$1.run(JAASInterceptor.java:31)
         at com.evermind.server.ThreadState.runAs(ThreadState.java:693)
         at com.evermind.server.ejb.interceptor.system.JAASInterceptor.invoke(JAASInterceptor.java:34)
         at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
         at com.evermind.server.ejb.interceptor.system.TxRequiredInterceptor.invoke(TxRequiredInterceptor.java:50)
         at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
         at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
         at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
         at com.evermind.server.ejb.InvocationContextPool.invoke(InvocationContextPool.java:55)
         at com.evermind.server.ejb.StatelessSessionEJBObject.OC4J_invokeMethod(StatelessSessionEJBObject.java:87)
         at DeliveryBean_RemoteProxy_4bin6i8.request(Unknown Source)
         at com.collaxa.cube.ws.soap.oc4j.SOAPRequestProvider.processNormalOperation(SOAPRequestProvider.java:451)
         at com.collaxa.cube.ws.soap.oc4j.SOAPRequestProvider.processBPELMessage(SOAPRequestProvider.java:274)
         at com.collaxa.cube.ws.soap.oc4j.SOAPRequestProvider.processMessage(SOAPRequestProvider.java:120)
         at oracle.j2ee.ws.server.provider.ProviderProcessor.doEndpointProcessing(ProviderProcessor.java:956)
         at oracle.j2ee.ws.server.WebServiceProcessor.invokeEndpointImplementation(WebServiceProcessor.java:349)
         at oracle.j2ee.ws.server.provider.ProviderProcessor.doRequestProcessing(ProviderProcessor.java:466)
         at oracle.j2ee.ws.server.WebServiceProcessor.processRequest(WebServiceProcessor.java:114)
         at oracle.j2ee.ws.server.WebServiceProcessor.doService(WebServiceProcessor.java:96)
         at oracle.j2ee.ws.server.WebServiceServlet.doPost(WebServiceServlet.java:194)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
         at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64)
         at oracle.security.jazn.oc4j.JAZNFilter$1.run(JAZNFilter.java:400)
         at java.security.AccessController.doPrivileged(Native Method)
         at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
         at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:414)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:623)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370)
         at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:313)
         at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:199)
         at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
         at java.lang.Thread.run(Thread.java:595)
    Request you all to provide inputs.
    Thanks and Regards.
    John

    Hi,
    Using the exact same wsdl i was able to get a response from the HTTP service using OSB. I created a business service targeting this wsdl. Then created a proxy service to route the xml to the business service.
    I was able to successfully invoke and get response from the HTTP service without making any change to the wsdl.
    Could this be a bug in BPEL PM? Should I raise an SR?

  • OSB 10gR3 Error handling and reporting action approach

    My use case:
    Simple Proxy service routes to an external web service created as Business service in OSB
    Whenever there is transport error/soap fault from the external web service, that error needs to be reported along with the original request received by the proxy service.
    What I have tried so far?
    Created a error handler/stage in the route node of my proxy service. Within that stage, added a report action to report $body which contains the error received from the external service. I created a report index key/value to report for this request, I used a specific element in the body of the original request sent to the proxy service.
    Within the route error handling stage, I realized that $body which had my original request to the proxy service lost its content and replaced by the fault from external WS. So I made a copy of $body in my request pipeline and tried to use an element from that copy to index my failed request. But the copied variable always seem to be empty within the error handling stage.
    So, my questions to the experts,
    1)What variables are visible within the error handling stage/scope?
    2)What is the best way(less overhead) to preserve my original request as $body context variable is already changed with fault by the time error handler is invoked? Remember I wanted to report the original request only incase of error, for success cases I don't care/I don't want to un-necessarily add an overhead of copying to a vairbale.
    3)Is there another proper way to simply report the original request received by proxy and fault received from external service for a given key in the request, say orderId
    Sample proxy request:
    <MyData>
    <OrderId>123</OrderId>
    </MyData>

    1)What variables are visible within the error handling stage/scope? $fault - http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/context.html#wp1051816
    $body - http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/context.html#wp1103311
    2)What is the best way(less overhead) to preserve my original request as $body context variable is already changed with fault by the time error handler is invoked? Remember I wanted to report the original request only incase of error, for success cases I don't care/I don't want to un-necessarily add an overhead of copying to a variable.Can you print $body and $fault variables in your error handler?. Are they different ? What I'm suspecting is the back-end webservice is faulting (returning soap-fault and http response =5xx). There is no other way I can think of than copying the contents of $body to a separate variable.
    Thanks
    Manoj

  • OSB - Accessing Operational Settings within Proxy Service

    Does anyone know if it is possible to access Operation Settings from within a Proxy Service?
    The use case is instead of logging, we perform auditing by inserting into a database. In certain environments, we would like to turn this off. I would like to reuse the Logs logging level field to decide whether or not to audit.
    So the message flow would have if (auditLevel = 'Warning') then BusinessService callout for auditing.
    Doing it this way lets operations choose whether or not to audit, instead of making code changes in different environments to choose whether or not to audit.

    Few months back I was also working on a similar requirement where client did not want to go for OSB configuration change (and even update) for changing the log levels or start auditing. After researching a little bit, we implemented java callout which used to read a property file and provide the value of auditing flag at runtime. We also created a java utility which used to clear the cache of server (because server loads & caches the property file after each restart). So whenever we have to make a change in auditing flag, we just change the value in property file and clear the cache of the server. This makes the fresh copy of property file available in server cache and OSB java callout picks the same.
    It was quite complex but the only better solution we could find. Please let us know if you get something better.
    Regards,
    Anuj

  • XI Contents : Error Handling : Syncronous Proxy - WebService Scenario

    Hi,
    I am working on Syncronous : Proxy <-> XI <-> WebService Scenario.
    I am using Standard XI Contents from XI and SAP side.
    Meaning : All the design objects like Message Interface / Message Types / Data Types etc are NOT created by me, but I am using from Standard XI Contents EA-HR 600. I did all the Configuration of the Scenario by using these Design objects.
    In short , I can not change any of the Design object as it belongs to SAP.
    Now, the scenario works fine. But I need to cater for Error handling.
    Any suggestion.
    I can not create fault messages as it is SAP's objects.
    Thanks.
    Dk

    Thanks for suggestions.
    Now my comment on these suggestions:
    Option1 by Bhavesh. Copy Contents to my namespsce :  I can do that, but here I need to tell you something. I have used Contents (Design Objects) and I didnt have to even create or activate any proxy ( I was amzed to see that ). Now, coping all the contents to my namespace will give me flexibility to add Fault Message (which is currently not avilable in standard content). but..but..I will have to create and generate / activate the proxy. ( Am I right?). Then where should I use this proxy? How my application will talk to this proxy? (I am not sure if I made my point clear). Currently I dont have to worry about communication between this HR application with standard Proxy ( which belongs to standard contents).
    Option2 by Jai. Webservice changes : Webservice is not developed by me. I am consuming it. but I can ask this vendor who is WebService owner to change his webservice to suit my needs. But it wont solve the problem as I do not have Fault message at XI side.
    I can consider Option1 by Bhavesh, if the proxy problem is solved.
    Thanks,
    DK

  • Error using tuxedo proxy services in a cluster

    We have successfully created proxy services using tuxedo transport in single server ALSB configurations.
    We are now installing ALSB 2.6 in a cluster, and we cannot make the service work. We have configured WTC in all the servers of the cluster.
    When we invoke the service, we get the following error in the log
    ####<Feb 19, 2007 4:32:00 PM CLST> <Error> <TuxedoTransport> <quintay> <ALSB1> <[ACTIVE] ExecuteThread: '7' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1171913520640> <BEA-381600> <Exception in TuxedoTask, java.lang.NullPointerException
    java.lang.NullPointerException
         at com.bea.wli.sb.transports.tuxedo.TuxedoTask.service(TuxedoTask.java:107)
         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:585)
         at weblogic.wtc.gwt.InboundEJBRequest.run(InboundEJBRequest.java:467)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
    Any help or workaround? Is it possible to use tuxedo transport in a cluster configuration? Other problem we have seen is that the ALSB console only allows us to deploy the service in one local domain. How can I deploy the service in all the wtc servers?
    Thanks in advance
    Mauricio Palma

    Yes, BEA released a patch which solves partially the problem, now we can invoke the proxy service from tuxedo. There are some features missing (for example, we have to configure a separate proxy service in each node of the cluster, with different names, and then import every service from tuxedo, so we cannot do fault tolerance).
    I don't know if the patch is available, we had to create a support case with BEA.

  • Error in a Proxy service

    Hi,
    I'm new to ALSB and created a weblogic webservice and imported it as a WSDL resource. This is then used for creating a business service. Now, I have a proxy service which take string as input (configured 2 proxy services, one takes from jms request queue and other from http request ) and depending on the string value, it will call the different method in the business service.
    When I tested it in the ALSB console, it is able to call the correct method in business service depending on input parameter. but always throw a error with http response code of 500. And it changed the $body with a Fault string of "Failed to get operation name for incoming request".
    If am able to test the business service in the alsb console successfully, why am not able to test the proxy service from the console?
    Thanks in advance for your help.

    I might need a bit more info here but it seems you are not setting the 'header' and 'body' variables correctly when calling the business service.
    Assuming your service is SOAP1.1, you need to assign valid soap body and header(optional) to those variables inside your route action.
    If you open the test console for the business service you should get the payload xml needed for the service. In the proxy, you will need to wrap that with <soap-env:Body> (soap-env is a pre-saved namesapce) and assign it to 'body'.
    If you have already done that then I defiantly need more info.
    Ryan

  • OSB: Text to SOAP in Proxy Service

    Hi All,
    I am trying to transform incoming text from a proxy service to SOAP business service. Is there a simple way to do it ? I am trying to use Replace and that does not seem to work and I have looked into MFL Transform, but that looks kind of complicated.
    Is there a way I can specify the incoming proxy request, $body and transform that to an element of a SOAP message?
    Any help would be great, thanks!
    --ML                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

    Hi Patrick,
    Thanks for your reply. Currently I have a proxy service set as text for my request message type, I am trying to create a service that accepts HTTP POST and just receive some text in the body. I want to get the request and transform data in the body and pass that to a business service that receives a SOAP message.
    Can I still use xquery for that, any help on the configuration would be great, thanks!
    --ML                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • OSB XQuery transformation help in Proxy Service

    Hi,
    Need help in transformation of the below input to a proxy service
    <soapenv:Body  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
       <InputParams>
         <queryParams>
           <quer:query-params  xmlns:quer="http://www.example.org/QueryParams">
            <param name="test51" value="val3353" />
            <param name="test1" value="val2" />
            <param name="test3" value="val3" />
            <param name="test4" value="val4" />
            <param name="test1" value="val1" />
            <param name="test1" value="val11" />
            <param name="test8" value="val33" />
            <param name="test1" value="val34" />
            <param name="test8" value="val33" />
            <param name="test81" value="val33" />
            <param name="test1" value="val333" />
            <param name="test38" value="val33" />
           </quer:query-params>
         </queryParams>
       </InputParams>
    </soapenv:Body> and want to have the below output after running the below XQuery transformation
    <ns0:mparams>
      <ns0:param name="test1" value="val2" />
      <ns0:param name="test1" value="val1" />
      <ns0:param name="test1" value="val11" />
      <ns0:param name="test1" value="val34" />
      <ns0:param name="test1" value="val333" />
    </ns0:mparams>this is the xquery transformation file
    (:: pragma  parameter="$InputQuery" type="anyType" ::)
    (:: pragma bea:global-element-return element="ns0:mparams" location="../xsd/TargetParams.xsd" ::)
    declare namespace ns0 = "http://www.example.org/QueryParams";
    declare namespace xf = "http://tempuri.org/Simple/transformation/listparams/";
    declare function xf:listparams($InputQuery as element(*))
        as element(ns0:mparams) {
            <ns0:mparams>
                { $InputQuery/ns0:params/param[@name="test1"] }
            </ns0:mparams>
    declare variable $InputQuery as element(*) external;
    xf:listparams($InputQuery)and here is the input to the above .qs
    $body/InputParams/queryParams/qp:query-paramsbut it's the output is always empty and here is what it comes out no matter what the input I give even tried the below inputs but no use
    $body/InputParams/queryParams/qp:query-params
    $body/InputParams/queryParamshere is the output it always prints when logging in the log file
    <quer:mparams xmlns:quer="http://www.example.org/QueryParams"/>Any help is appreciated.
    Thanks

    $InputQuery/ns0:params/param[@name="test1"]Input doesn't have a ns0:params node ..so the xpath here should be $InputQuery/param[@name="test1"]

  • ABAP Mapping for Error handling in Proxy to JDBC

    Hi All,
    I am working on a proxy to jdbc scenario in which we have to throw validation errors to NWPM(Net Weaver Process Monitor Tool)
    I am following the below steps,
    step 1 - In message mapping a UDF is created to catch errors and store them in a variable using  dynamic configuration
    step 2 - writing abap mapping for handling this thrown exception and im reading the dynamic configuration in the abap class and raising exception. The exception format expected is
    SAP:Error SOAP:mustUnderstand="" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
      <SAP:Category>XIServer</SAP:Category>
      <SAP:Code area="RCVR_DETERMINATION">NO_RECEIVER_CASE_ASYNC</SAP:Code>
      <SAP:P1>ZPI_THROW_EXCEPTION</SAP:P1>
      <SAP:P2>001</SAP:P2/>
      <SAP:P3>Mandatory field is missing[BUKRS] </SAP:P3>
       <SAP:AdditionalText />
      <SAP:Stack>No receiver could be determined</SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    I have written the following ABAP code to achieve this:
    method IF_MAPPING~EXECUTE.
      DATA l_record type mpp_dynamic.
    DATA error type String.
    getting dynamic configuration value
    filled in by any previous mapping
    CALL METHOD DYNAMIC_CONFIGURATION->GET_RECORD
      EXPORTING
        NAMESPACE = 'http://sap.com/xi/XI/System/ERROR'
        NAME      = 'ERROR'
      RECEIVING
        RECORD    = l_record.
    error = l_record-value.
    *raising exception with our message
    RAISE EXCEPTION TYPE CX_MAPPING_FAULT
      EXPORTING
       TEXTID =
       PREVIOUS =
        ERROR_CODE = '001'
        ERROR_TEXT = error .
    RAISE EXCEPTION TYPE CX_MAPPING_FAULT
      EXPORTING
       TEXTID =
       PREVIOUS =
        ERROR_CODE = '003'
        ERROR_TEXT = error .
    endmethod.
    I am gettign the following message for our code:
    SAP:Error SOAP:mustUnderstand="" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
      <SAP:Category>XIServer</SAP:Category>
      <SAP:Code area="RCVR_DETERMINATION">NO_RECEIVER_CASE_ASYNC</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:Stack>No receiver could be determined</SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    Could you please help in finding the solution for getting currect error message from ABAP class?
    Edited by: SwethaC on Jan 21, 2011 8:18 AM

    The error is due to RFC Call fail from PI system to your ECC Application System.
    Check your RFC Destination for ECC System type 3 in PI System.
    When you are receiving data from ECC System using Proxies & again you are going to ECC System for Validation.
    Why you are not doing this validation on ECC System only in your proxy code ?
    In your proxy code, it will be much better for performance to check your data there on same system.

  • Problem related to error handling in Proxy for Inbound

    Hi All,
    I have a requirement to process the inbound interface , which internally updates the HR Infotypes.
    I need to handle all possible erorrs and store it in the custom table.
    Can anyone please guide, as to how to catch the errors and wht type of errors can be there.
    How to do that?
    Any help will be gr8.
    Regards,
    Heena

    Hi Heena,
    the thread has been moved to ERP - Payroll as the application experts my be able to provide the list of error codes.
    Regards
      Kenny Scott
      XI/PI Forum Moderator

  • Send a email while error handler Oracle Service bus 11g

    I need to be send an email while error handler in proxy service message flow.
    Error Handler Node -> stage -> report action
    before or after report action, I need be to send a email
    Could you please help this issue? I appreciate your help.
    Thanks,
    sdev

    Add Alert to your Error Handler and set Alert Destination with your email set in.
    http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/operations/monitoring.html#wp1108089
    http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/consolehelp/alertdestinations.html

  • Handling Transport Errors in OSB Proxy Services

    Hi,
    I have a requirement of storing and handling Transport level Security Errors in my proxy services . In fact, my proxy services are secured with HTTP Basic Authentication and i am not able to catch authentication errors. I added a Service Error Handler to my proxy service but unfortunatly it doesn't handle these errors.
    Does anyone know how can we catch these errors in OSB, and if it is possible to execute activities like alerts, reports, logging in these cases.
    I read in some blogs that Error handlers are nested like this : Route Node ->  Proxy Service -> System Error Handler
    so maybe it would be good to customize the System Error Handler Behavior. I don't know if this is possible.
    Any help will be appreciated.
    Best regards
    Farouk

    Transport level authentication is done at transport layer even before the actual proxy service gets initiated. So you wont be able to catch authentication errors in the proxy service (and do alerting/logging/reporting etc). You can probably try enabling debug logging for HTTP protocol and see if you can capture these errors in the Access.log of the servers.    

Maybe you are looking for