Query regarding handling and monitoring of OSB Errors in a specific manner

Hi,
I'm using
- OSB 10gR3 (10.3.1)
Context
To give some context, the setup I currently have a proprietory frontend client that is making XML/HTTP requests to OSB
which in turn is getting info from downstream systems.
I have no control over the behaviour/logic of the frontend client .. apart from knowing that it has a specific
request/response format.
So now to the issue..
The issue I'm facing is regarding handling of errors. Based on my knowledge of OSB, the error handling of the transaction has been
built along these lines
(Within the stage) If an error scenario's occurred, error is being thrown
(Within the error handler stage) Logging the error (using the 'Log' function .. with severity 'Error')
(Within the error handler stage) The response payload is being built .. so that the error can be reported to the frontend client
(Within the error handler stage) I'm doing a 'Reply with Success'
Now this does give me the expected behavior from the frontend client's perspective (... i.e. it receives the payload and displays whatever error that's occurred)
However from OSB's perspective, because I have done a 'Reply with success', the OSB Service Health Page ... (screenshot below) does not
increment the 'Errors' count for the respective proxy service ....
[OSB Service Health Page|http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/operations/monitoring.html#wp1107685] (Looking at Figure 3-8)
The only way I could achieve this was to set the error handler stage to 'Reply with Failure' (which would return HTTP 500) ...
The issue however is that, the proprietory frontend simply sees the incoming HTTP 500 code and doesn't read the return XML payload (containing the error details ..)
which beats the whole idea of being able to maintain some sort of traceability for the failed transactions.
So what I'm basically trying to find is .. that when an error occurs
- Some 'call' to make the during the error handler stage so that it registers as an error in the OSB Service Health Page.. and I can clearly
see the error count, etc for each of the proxy services
- After that being able to still use 'Reply with Success' ... so that the payload is being returned with HTTP 500 code...
so the frontend can read the payload ...
............. in essence, the idea being to register errors so that they can be monitored via the Service Health Dashboard ..but at the same time
being able to return the 'error details' payload successfully
With my limited (but growing) knowledge of OSB .. I've tried quite a few ways to achieve this with no success...
Would very much appreciate any help here ...
Lastly, if there is some way of achieving what I'm trying to get to above through different means, I'm open
to trying out alternate stuff.
Regards,
Himanshu

Hi Atheek,
Many thanks for the reply. Does appear to be a pretty neat way of doing it ..
One more clarification I'd like on this however ....
Given that I have a set up like this below
[External frontend client] <------> (1 Parent Service) <------> (2 Child Service)
(1 Parent Service) .... has error handler .. and all it does is 'Reply with success'
(2 Child Service) .... has error handler for particular stage
so...
2 Child Service - is doing the actual work (has error handler where custom error msg is being populated in $body)
1 Parent Service - is the one that is getting called by the external client (has error handler .. and all it does is 'Reply with success')
What I currently have is ..once the error occurs, I'm populating $body ... with the custom error message within the error handler
Previously I had 'Reply with Success' in the 2 Child Service's error handler and the custom error message would get returned to the external client.
Now, with the error handler only creating the custom error msg.... and 1 Parent service doing the 'Reply with Success' .. it doesn't appear
to return the $body .. with the custom msg that I'd populated .. in 2 Child Service's error handler.
Are the $body contents populated in 2 Child Service's error handler lost ...once the error propagates up to 1 Parent service's error handler ?
If yes... is there way of getting around it ? I could see for instance that the $fault message context has a 'user populated' Details variable
but the documentation covering this is sparse.
Regards,

Similar Messages

  • Query regarding Exception and invocation.

    I have a query regarding Exception.
    In my code, which throws an ArithmeticException:
    <code>
    public class TestArithmeticException{
    public static void main(String[] args)
    int a,b ;
    try {
    b=0;
    a = 50/b;
    }catch(Exception ex) {
    ex.printStackTrace()
    </code>
    The above code is catching exception of type Exception(which is superclass of all RuntimeExceptions)
    and which inturn extends the Throwable class.
    ie. Throwable -
    Exception -
    RuntimeException
    ArithmeticException
    Am I correct in my assumption below:
    a Because ArithmeticException is an indirect subclass of Throwable and has access to its inherited methods,
    it overrides the methods defined in 'Throwable', and then via polymorphism(superclass reference 'ex' in the catch clause)
    invokes the method ex.printStackTrace() ?
    Does it mean that all runtime exception child classes override the methods defined in Throwable, and then via polymorphism execute overridden
    methods?

    Yes.

  • Configuring and using SLA alerts and Monitoring in OSB.

    Hi,
    I am having a business service which logically represents composite endpoint URI. Now I want to enable Monitoring and generate an SLA alert if the composite URI that the business service is representing is DOWN for some reason and the proxy routing to the BS is not able to invoke it.
    How do I do that? Pls suggest!

    Hi Deb,
    Please refer section "46.5 How to Generate Alerts Based on Endpoint URI Status" at below link -
    http://download.oracle.com/docs/cd/E14571_01/doc.1111/e15867/endpointurimgmt.htm#i1080465
    Also refer -
    http://download.oracle.com/docs/cd/E14571_01/doc.1111/e15867/monitoring_ops.htm#i1108778
    Please post OSB related questions in Oracle SOA Suite forum only -
    SOA Suite
    Regards,
    Anuj

  • Query regarding passivation and PS_TXN tables

    Hi All ,
    I am working on a read only Dashboard UI where the DB user has only read privileges.
    The jbo.server.internal_connection uses the same DB connection to create PS_TXN & PS_TXN_SEQ tables which fails for obvious reasons & I get the error -
    "Couldnot create persistence table PS_TXN_seq".
    I have disabled passivation at all the VO levels and also disabled jbo.isSupportsPassivation to be false at the AMLocal level , but still I am getting this error.
    I have also increased the initial AM pool size in bc4j.xcfg & Connection Pool at the weblogic server level to avoid snapshots been written to this table.
    Is there any way I can prevent any interaction with this table as the client too is not interested in any kind of passivation to happen for the time being.
    Thanks

    Thanks for your reply Chris.
    Chris Muir wrote:
    You might be taking the wrong approach to solving this. Rather than disabling the AM pooling (which btw is not supported by Oracle) to the database, instead you can get ADF to passivate to file or memory of the app server.I am confused as to what exactly jbo.ampool.issupportspassivation = false does then ? I read on one of the blogs that its a viable use case for Programatic VOs ?
    Also regarding passivating to file system as per http://download.oracle.com/docs/cd/E12839_01/web.1111/b31974/bcstatemgmt.htm#ADFFD1307 , its not really a recommended approach.. hence was not going for that.
    Can you please throw some more light ?
    Thanks

  • Query regarding Handling Unicode characters in XML

    All,
    My application reads a flat file in series of bytes, I
    create a XMl document out of the data. The data contains Unicode characters.
    I use a XSLT to create XML file. While creating it I don't face any issues
    but later if I try to parse the constructed XMl file, i get a sax parsing exception
    (Caused by: org.xml.sax.SAXParseException: Character reference _"<not visible clearly in Browser>"_ is an invalid XML character.)
    Can some one advice on how to tackle this.
    regards,
    D
    Edited by: user9165249 on 07-Jan-2011 08:10

    How to tackle it? Don't allow your transformation to produce characters which are invalid in XML. The XML Recommendation specifies what characters are allowed and what characters aren't, in section 2.2: http://www.w3.org/TR/REC-xml/#charsets. The invalid characters can't come from the XML which you are transforming so they must be coming from code in your transformation.
    And if you can't tell what the invalid characters are by using your browser, then send the result of the transformation to a file and use a hex editor to examine it.
    By the way, this isn't a question about Unicode characters in XML, since all characters in Java are Unicode and XML is defined in terms of Unicode. So saying that your data contains Unicode characters is a tautology. It couldn't do anything else. If your personal definition of Unicode is "weird stuff that I don't understand" then do yourself a favour, take a couple of days out and learn what Unicode is.

  • Query regarding characteristics and key figures

    Hi All,
    Can anybody pls tell me in what scenarios a key figure can be used as a attribute of a characteristic?
    what are the scenarios in which each type of DSO can be use?

    Hi,
    Can anybody pls tell me in what scenarios a key figure can be used as a attribute of a characteristic?
    if  your key figure in trasnctional data level it's give you the Fact.
    If you use your key figure in your master data lvel it's give you the present truth.
    Like this you have 0Material and Material price has the attribute of 0Material.
    read below link
    http://help.sap.com/saphelp_nw04/helpdata/en/dd/f470375fbf307ee10000009b38f8cf/content.htm
    what are the scenarios in which each type of DSO can be use?
    We have 3 DSO in BI 7.
    1. Standard DSO : it's contaions 3 tables (New,Active,Change log tables) : If you want overwrite funcationality go for this dso
    2. Direct Update DSO : It's Contaion only Active Table : If you want write some data using with  APD and BAPI go for this dso.
    3. Write Optimized DSO : It's Contaion only Active Table : If you want load mass uploads and stageing purpose we use this dso.
    Hope it helps you.
    Regards,
    Venkat.

  • JSF general query regarding UISelectItem and UISelectItems

    I am seeing a couple of peculiar behavior and i have no explanation for them at the moment . It would be great if someone can explain the apparently different behavior of JSF in general.
    Whenever there is 'n' number of UISelectItem components inside a UISelectOne component , the getter method of the property of the backing bean to which the UISelectOne component's value is bound is getting called "n" number of times when the page is rendered.
    Whenever there is a single UISelectItems component inside a parent UIselectOne component , the getter method of the property(in my case a List of SelectItem components) of the backing bean to which the UISelectItems component's value is bound is getting called "2" times when the page is rendered.
    The pattern is same for the first time when the page is requested and for any subsequent requests for the page.
    What might be the possible reason for the afore mentioned behaviors of JSF?

    Getters and setters will be called different times in different Lifecycle phases.
    This may help... http://www-128.ibm.com/developerworks/java/library/j-jsf2/
    in particular, Select Components have some validation checks that loop over the items in the select component - I believe basically it loops over the selectItems and makes sure the selectItem.value "type" is the same as the selectComponent.value "type"
    Also... I just posted this to another thread....
    I found adding a Phase Listener with debug logging has helped enourmously with seeing when getter and setters were called in which phase.
    public class DebugPhaseListener implements PhaseListener {
        private static final Log LOGGER = LogFactory.getLog(DebugPhaseListener.class);
        public PhaseId getPhaseId() {
            return PhaseId.ANY_PHASE;
        public void beforePhase(PhaseEvent event) {
            LOGGER.debug("beforePhase(" + event.getPhaseId() + ")");
        public void afterPhase(PhaseEvent event) {
            LOGGER.debug("afterPhase(" + event.getPhaseId() + ")");
    in your faces-config.xml... add
    <lifecycle>
    <phase-listener>com.mycompany.DebugPhaseListener</phase-listener>
    </lifecycle>

  • Query regarding speech and telephony api

    hello everybody,
    i am thinking of doing my academic project in java. according to the project requirement i need to call a phone (pstn or mobile) from a pc and give a voice message to the receiver of the phone call. i thought of doing it with java speech api and telephony api. i would also like to know about javaphone api , java communications api and media framework. can the objective be achieved using the latter three? or do i have to go for speech and telephony api only. i am really confused. please guide me.
    where can i download jtapi library?
    also suggest some good tutorial for jsapi and jtapi.
    Thank you.
    Sriram K

    hi
    i'm also doing my project using jtapi.
    u can download JTAPI java files then compile it .u ll get the class file.if u know more about jtapi means mail [email protected]

  • Query regarding Singletons and Database connection pool

    Hi there,
    I am trying to understand the Singleton pattern in relation to a pool of database connections.
    Frankly,I have not fully understood this.
    If my pool of database connections is set to 10, how can a singleton design come into this?
    In what way is this beneficial?
    Please can someone explain this?
    No offence meant

    bhuru_luthria wrote:
    Hi there,
    I am trying to understand the Singleton pattern in relation to a pool of database connections.They are related like a hiccup is related to a wiffle ball.

  • Messages from PI are successful , but not shown in AIF error handling and monditoring

    Dear All,
    We have messages being triggered from PI to proxy and to AIF.
    Messages status is shown as successful in sxmb_moni transaction but I don't get to see these in /AIF/err - error handling and monitoring transaction.
    WHat could be the possible reason? would there be any missing authorization.
    Note: this is working in Development but having this issue in test environment.
    Thanks and Regards,
    Archana

    Hi Archana,
    About ERR_WEB, probably run an old version, but this won't help you either, I think.
    Another tip is to look in PI:
    Is your service synchronous? For synchronous messages PI only persists the message in PI's message store if the abap proxy returns an error, such as a SOAP Fault. If your abap proxy is not returning an error, then make sure it does. You can raise an application error in AIF.
    If PI already receives a SOAP fault, then I suggest you to check if the message was stored in PI: see SAP note 872388 to guide you on this task.

  • A Query regarding 'Events' published and 'Event' subscribed

    I have a query regarding 'Events' and 'EventHandling' in Java Swing.
    Swing in an EVENT based application whereby 'events' are generated
    by interacting with the components.
    Eg: Clicking on a Button generates an 'ActionEvent' and every event
    generated has an associated 'EventListener'.
    Now,my question is:
    a)When an event is generated,(let's say by clicking a button),
    an 'event' is published,right?
    That means that there is an 'Event Publisher'.
    In the above case,the Button is the 'Publisher' of the event,right?
    b) Who are the subscribers for the events generated?
    Where do we specify the 'subscibers' to the events generated?(and once
    the subscribers get the Event,the subscriber will call the methods
    of the event object)
    We just say
       addButton.addActionListener(new ButtonHandler);
       private class ButtonHandler implements ActionListener {
            public void actionPerformed(ActionEvent e){
      In the above code :
    a) Who is the Event Publisher?
    b) Who is the Event Subscriber?
    No offence meant for the question.

    The 'event publisher' for the mouse click is the ToolKit implementation (translates the OS mouse event to a Java mouse event).
    The 'event subscriber' for the mouse click on a button is typically a ButtonUI (you can add a mouse listener directly though).
    The 'event publisher' for the action event is the ButtonModel (notified by the ButtonUI when the button is unpressed, etc).
    The 'event subscriber' for the action event are the action listeners.

  • Error handling, logging and monitoring business process

    I would like to know more about error handling, logging and monitoring in business process? Can someone give more information on this one?

    Chandran
    Please refer to following tutorials to understand each of these topics in detail:
    Validations:
    http://www.orafmwschool.com/validations/
    Exception Handling:
    http://www.orafmwschool.com/exception-handling/
    Fault Management Tutorial:
    http://www.orafmwschool.com/fault-management-tutorial/
    Business Activity Monitoring Tutorial:
    http://www.orafmwschool.com/bam-tutorial/
    You'll have to refer to Oracle documentation to understand more finer details.
    -Amjad.

  • BPM for error handling and acknowledgements

    Hi,
    Can any one tell me how to handle BPM for error handling and acknowledgements in one scenario.
    Please send me the link if you have other wise give me the solution on the same.
    Thanks,
    Nagesh

    Hi !
    Just check out these links This might help you.
    Usually Application Level Acknowledgement is considered during Sync communication. If you are using RFC, you can make use of Sync communication. So you can handle it without bpm, provided your both sender and receiver are sync interfaces.
    To know about Ack-
    http://help.sap.com/saphelp_nw2004s/helpdata/en/f4/8620c6b58c422c960c53f3ed71b432/content.htm
    you can not dirrectly access the content of the ACK, however the BPM shows different behaviours based on the ACK status. E.g. if the ACK contains a success message the BPM will continue in its normal process, if the ACK contains a permanent error, it will either stop or go through an exception branch (provided such a branch has been defined). Have a look at the documentation: http://help.sap.com/saphelp_nw04/helpdata/en/43/65ce41ae343e2be10000000a1553f6/content.htm It doesnt"t state the above mentioned behaviour in detail but says that you need to define an exception branch.
    The trickiest part is always to find out, when you will get a transient vs. as permanent error ack. If you are using ACKs with Proxies refer also to this link http://help.sap.com/saphelp_nw04/helpdata/en/29/345d3b7c32a527e10000000a114084/content.htm and this http://help.sap.com/saphelp_nw04/helpdata/en/f4/8620c6b58c422c960c53f3ed71b432/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/29/345d3b7c32a527e10000000a114084/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/7b/94553b4d53273de10000000a114084/content.htm
    <b>The following link has entire configuration of Receiver XI Adapter (including acknowledgements)</b>
    http://help.sap.com/saphelp_nw04/helpdata/en/f4/0a1640a991c742e10000000a1550b0/content.htm
           <b>   eror handling in BPM.  
    </b>
    1. CCMS monitoring
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/42fb24ff-0a01-0010-d48d-ed27a70205a8
    2. BPM Monitoring
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e7bc3a5a-0501-0010-1095-eb47159e169c
    3. Monitoring XML Messages http://help.sap.com/saphelp_nw04/helpdata/en/41/b715045ffc11d5b3ea0050da403d6a/frameset.htm
    /people/sap.user72/blog/2005/11/29/xi-how-to-re-process-failed-xi-messages-automatically
    monitoring BPm https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/e7bc3a5a-0501-0010-1095-eb47159e169c
    Reconciliation of Messages in BPM - /people/krishna.moorthyp/blog/2006/04/08/reconciliation-of-messages-in-bpm
    Also see the below BPM related links
    check list for BPM https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/3bf550d4-0201-0010-b2ae-8569d193124e
    /people/shabarish.vijayakumar/blog/2005/08/03/xpath-to-show-the-path-multiple-receivers
    http://help.sap.com/saphelp_nw04/helpdata/en/3c/831620a4f1044dba38b370f77835cc/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/62/dcef46dae42142911c8f14ca7a7c39/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/de/766840bf0cbf49e10000000a1550b0/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/cb/15163ff8519a06e10000000a114084/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/08/16163ff8519a06e10000000a114084/content.htm
    Many other examples can be found under the following link at help.sap.com
    http://help.sap.com/saphelp_nw04/helpdata/en/14/80243b4a66ae0ce10000000a11402f/frameset.htm
    And some weblogs
    https://weblogs.sdn.sap.com/pub/wlg/1403 [original link is broken] [original link is broken] [original link is broken]
    /people/siva.maranani/blog/2005/05/22/schedule-your-bpm *****
    /people/krishna.moorthyp/blog/2005/06/09/walkthrough-with-bpm
    /people/michal.krawczyk2/blog/2005/06/11/xi-how-to-retrieve-messageid-from-a-bpm
    /people/arpit.seth/blog/2005/06/27/rfc-scenario-using-bpm--starter-kit
    /people/sravya.talanki2/blog/2005/08/24/do-you-like-to-understand-147correlation148-in-xi
    /people/michal.krawczyk2/blog/2005/09/04/xi-do-you-realy-enjoy-clicking-and-waiting-while-tracing-bpm-steps *****
    /people/udo.martens/blog/2005/09/30/one-logical-system-name-for-serveral-bpm-acknowledgements *****
    /people/sudharshan.aravamudan/blog/2005/12/01/illustration-of-multi-mapping-and-message-split-using-bpm-in-sap-exchange-infrastructure
    /people/kannan.kailas/blog/2005/12/07/posting-multiple-idocs-with-acknowledgement
    Also have a look at these seminars,
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/media/uuid/daea5871-0701-0010-12aa-c3a0c6d54e02
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/media/uuid/e8515171-0701-0010-be98-e37bec4706cc
    Thanks !!!
    Regards
    Abhishek Agrahari
    Questions are welcome here!!
    <b>Also mark helpful answers by rewarding points</b>

  • How to monitor the alerts(error handling) in seerburger adapter?

    hi,
    is it like normal moniotoring for any scenario..i have to do the monitoring in seeburger adapter.
    any other specific thing i have to take care to do monitoring the alerts (error handling) in seeburger adapter for AS2 and FTP adapters..
    plz give other ways to monitor interfaces for seeburger adapter.
    Regards
    Raja

    Hi Raja,
    All Seeburger adapters have option of some kind of acknowledgement to be sent to the sender or any  partner... u need to check the respective adapter documention....
    for eg: FTP adapter can be configured for Message protocol - FTP-REPORTS
    for sending various types of reports to any Business Partner,,,reports like dispatch report, transmission reports,,....etc
    and for monitoring errors in XI... u can configure alerts as u normally do.....
    *Reward points if useful*
    Regards,
    Sushil.

  • Query regarding the Node manager configuration(WLS and OAM Managed server)

    Query regarding the Node manager configuration(WLS and OAM Managed server):
    1) In the nodemanager.properties I have added the ListenAddress:myMachineName and ListenPort: 5556
    My setup : One physical Linux machine(myMachineName) has : WLS admin server, managed server(OAM 11G) and nodemanager.No clustered environment.
    2) nodemanager.log has the following exception when I start the oam_server1 using EM(Enterprise Manager11g):
    Mar 23 2012 1:39:55 AM> <SEVERE> <Fatal error in node manager server>
    java.net.BindException: Address already in use
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:336)
    at java.net.ServerSocket.bind(ServerSocket.java:336)
    at javax.net.ssl.impl.SSLServerSocketImpl.bind(Unknown Source)
    at java.net.ServerSocket.<init>(ServerSocket.java:202)
    at javax.net.ssl.SSLServerSocket.<init>(SSLServerSocket.java:125)
    at javax.net.ssl.impl.SSLServerSocketImpl.<init>(Unknown Source)
    at javax.net.ssl.impl.SSLServerSocketFactoryImpl.createServerSocket(Unknown Source)
    Default port on which node manager listen for requests is localhost:5556.I have changed it to point to my machine. The port should be of WLS admin server or it should be the managed server port?
    3) I have started the NodeManager using the startNodeManager.sh script.
    4) The admin server port is 7001 and the oam managed server port is 14100.
    Any inputs on what might be wrong in the setup will be helpful.Thanks !

    By using netstat -anp|grep 5556 you can check which process on your machine is using the 5556 port.

Maybe you are looking for