- java handling ABAP Exception

Hi folks,
I am developing a webdynpro java programm that communicate with R/3 through a RFC.
In an especif condition the ABAP program raises an "NO_DATA_FOUND" exception.
Unfortunatelly  I can't catch this exception raised by ABAP.
Do you may help me?
Best wishes,
Nelson Duarte

Hi Nelson,
You will get the error "NO_DATA_FOUND" in the back end when there are no records and you will get "INVALID_DATA"  when you pass an invalid input.
BAPIRET2 structure return the error/warning/success messages if there are in the in the backend. If they are returning any messages for the above errors then you can print those messages by accessing the BAPIRET2 structure.
You can print different error/warning/success using the return structure (if they are returning any)with the following code.
IWDMessageManager msgmgr = wdComponentAPI.getMessageManager();
     String msgtype = new String();          
     try{
//          If the RFc is returning any error messages the display those messages
     if(wdContext.currentReturn_outElement().getMessage()!=null){
          for(int i=0; i<wdContext.node<Return_out()>.size();i++)
               msgtype = wdContext.nodeReturn_out().getElementAt(i).getAttributeValue("Type").toString();
               if(msgtype.equals("W"))
                    msgmgr.reportWarning(wdContext.currentReturn_outElement().getMessage());
               else if(msgtype.equals("E"))
                    msgmgr.reportException(wdContext.currentReturn_outElement().getMessage(),true);
               else
                    msgmgr.reportSuccess(wdContext.currentReturn_outElement().getMessage());
     }catch(Exception e){
Or
int size = wdContext.node<Return_out()>.size();
if(size ==0){
  //here you can print your own message
Thanks n Regards,
Jhansi Miryala

Similar Messages

  • Handling ABAP Exceptions in a Block

    Hi,
    If a background task calls an ABAP Class Method and that method throws a defined exception of type CX_BO_ERROR, I would expect to see a possible outcome for that exception that would allow me to handle the exception for the specific task. If I activate that outcome then an exception handling path will be displayed on the graphical representation which is taken if the exception is then raised by the method. If the outcome is disabled then the workitem goes to error.
    If I want to catch these exceptions (for multiple tasks) in an enclosing block in order to handle them in a single, standard way, how do I achieve that? It does not seem possible to simply define the exception type in the enclosing block and then activate it in order to then be able to automatically catch any exceptions of a particular type that have their outcomes disabled in their individual tasks. It would appear that I have to activate the outcomes for each task and then raise it during with a Process Control item on the exception handling path of the task. This seems to defeat the object of having exception handling at the Block level. Is my understanding correct or am I doing something wrong?
    Also, is it possible to capture the class exception object from the method call and store it in the Task Container (in order to get text & longtext details)?

    Thankyou for both of your responses.
    I understand that an individual ABAP Object or BOR method (call during an Activity) can raise an exception which can be handled as a separate outcome of that activity. However, if there are multiple Activity steps in the workfow that can all throw similar exceptions and I want to react to all of those exceptions in a uniform way, it seems excessive to have to handle each exception individually for each Activity in order to do the same thing (e.g. I may just want to send a standard email to someone or trigger another workflow event).
    I may have misunderstood things but I thought that the purpose of the Block step was to be used as a kind of TRY..CATCH mechanism that will allow exceptions to thrown to the Block by enclosed Activities without the need for enabling outcomes at the Activity level. I thought it would be possible for the exception type to be defined in the Block properties so that all exceptions of that type could be handled at a higher level by a single Block outcome (regardless of which enclosed Activity threw it). If this is the case then I do not see the point in having to define individual outcomes for each activity within the Block.
    That said, I cannot seem to get it to work without enabling the outcome for each activity and using a Process Control step to raise the exception to the Block (which seems to defeat the object because I have, in fact, just handled the exception!). The reason for my original posting is to verify whether or not what I am trying to do is possible and to find out what I doing wrong with regards to Block configuration.
    Kind Regards
    Simon.

  • Handling Java Web Service Exception in ABAP

    Hi
    I have created a web service in Java using NWDS.
    Which has a businessMethod which throws a Exception based on certain business logic.
    I have consumed this  Web Service Method using .NET Client.
    i am able to catch the Exception and get the Exceltion Message.
    But when i try to consume the same web service Method in ABAP,
    i am not getting the Exception Message .
    The Method call works fine.
    What am i missing here ?
    regards
    Rajendra

    Hi,
    Upon further investigation and comparison of the custom exception object (generated during consumer proxy creation for a CUSTOM web service) with a standard exception object(generated during consumer proxy creation for a STANDARD web service) I found that the sub-elements of the exception structure errorPart are not available in the custom exception object (and one of these sub-elements is the message text).
    Call Stack,ExceptionName and MessageText Elements are missing in the errorPart node of Exception
    Node. as seen in the ABAP Exception structure generated.
    Queries:
    1.       Are there any standards which need to be followed when coding exceptions in the Java web service for consumption in ABAP such that all sub-elements of the exception object are also created in ABAP during the proxy creation?
    2.       Can we get the Java code for a standard web service available in SAP Netweaver? Asking the same as the exception object created for the standard web service RoomABAPWS contains the sub-elements. Getting the Java code of the same will be very helpful in resolving the issue.
    Regards
    Rajendra

  • Java null pointer exception while getting a segment DFF handle

    Hi,
    my requirement is to make a field mandatory based upon a dff segment value (Y/N). i override PFR since segment is a poplist on the page (and poplists don't fire any event)
    i searched in the "view source" of the page and found that segment id is ActFlexField0
    when i click on save button i got "java null pointer exception"
    here is code:
    public void processFormRequest(OAPageContext oapagecontext, OAWebBean oawebbean) throws OAException
    +{+
    +//get a handle to AM+
    OAApplicationModule am;
    am = oapagecontext.getRootApplicationModule();
    oapagecontext.writeDiagnostics(this,"Root AM=>"oapagecontext.getApplicationModule(oawebbean).getName() ,1);+
    if(oapagecontext.getParameter("applyCreActBut") != null || oapagecontext.getParameter("saveDtlBut") != null)
    +{+
    +/*Conditional mandatoryness of IdContribuente field*/+
    +// first, find the flexfield's handle+
    OADescriptiveFlexBean oaDFF;
    oaDFF = (OADescriptiveFlexBean)oawebbean.findIndexedChildRecursive("ActFlexField");
    +//oaDFF.processFlex(oapagecontext);+
    oapagecontext.writeDiagnostics(this, "Niccal: i got DFF handle", 1);
    +//oapagecontext.writeDiagnostics(this, "Niccal: oamcb value is:"+oaDFF.getAttributeValue(), 1);+
    +/*+
    RenderingContext con = (RenderingContext) oapagecontext.getRenderingContext();
    Enumeration x= null;
    x= oaDFF.getChildNames(con);
    oapagecontext.writeDiagnostics(this, "After getChild", 1);
    while(x.hasMoreElements())
    +{+
    String aParamName = (String)x.nextElement();
    oapagecontext.writeDiagnostics(this, "Niccal: DFF segment names are:"aParamName, 1);+
    +//OAWebBean dffbeans=(OAWebBean)oaDFF.findChildRecursive(aParamName);+
    +}+
    +//oaDFF.mergeSegmentsWithParent(oapagecontext);+
    OAMessageChoiceBean oamcb = (OAMessageChoiceBean)oaDFF.findChildRecursive("ActFlexField0");
    +//String sIsForeign = (String)oaDFF.getAttributeValue("Attribute1");+
    +//oapagecontext.writeDiagnostics(this, "Niccal: Attribute1 is:"+sIsForeign, 1);+
    oapagecontext.writeDiagnostics(this, "Niccal: before if", 1);it's urgent
    any help appreciated
    thanx
    N

    hi Keerthi,
    thank you.
    i tried with below code but still unsuccesfully
         +     oaDFF = (OADescriptiveFlexBean)oawebbean.findIndexedChildRecursive("ActFlexField");+
    oapagecontext.writeDiagnostics(this, "Niccal: i got DFF handle", 1);
    OAMessageTextInputBean mtib = (OAMessageTextInputBean)oaDFF.findChildRecursive("ActFlexField0");
    oapagecontext.writeDiagnostics(this, "Niccal: before if", 1);
    i am able to print 1° comment line but not second. so i think it's something wrong getting the segment handle.
    anyway i'm not able to reach your suggested if statement because execution stops before.
    Infact, if i comment line :OAMessageTextInputBean mtib = (OAMessageTextInputBean)oaDFF.findChildRecursive("ActFlexField0");
    page doesn't give error and saves data.
    any suggestion appreciated,
    thanx,
    N

  • Java from ABAP?

    Hello!
    How can I start (=call) a java program from ABAP? I have only .class and .java files.
    Thanks!

    Hi,
    Using the SAP Java Connector
    SAPu2019s new Java middleware, the SAP Java Connector (JCO) allows customers and partners to easily build SAP-enabled components in Java. JCO supports both inbound (Java calls ABAP) and outbound (ABAP calls Java) calls in desktop and server applications.
    Sample program
    Import statements: Any program using JCO should contain the following import statement:
    import com.sap.mw.jco.*;
    Otherwise, you have to fully qualify each class and interface which is very inconvenient.
    Connecting to SAP
    JCO.Client mConnection;
    A connection (or session) with SAP is handled by class JCO.Client
    try {
    mConnection =
    JCO.createClient("400", // SAP client
    "c3026902", // userid
    "********", // password
    "EN", // language
    "iwdf5020", // host name
    "00"); // system number
    mConnection.connect();
    catch (Exception ex) {
    ex.printStackTrace();
    System.exit(1);
    "A Client object is created via a call to createClient(). You can use a specific application server (as in the above code) or a server group (load balancing)." REFER the JCO Javadoc for the overloaded createClient() method for the latter possibility.
    "The Client class's connect () method tries to log on to SAP. If that fails for any reason, an exception is thrown. If the call succeeds, we can now stay connected for as long as we like. When we are done, we can call disconnect () to explicitly log off."
    Hope this sample would help you..
    Regards
    Narin Nandivada

  • The following ABAP Exception occurred: LINKLISTKEY_INVALID

    The following ABAP Exception occurred: LINKLISTKEY_INVALID:
    com.sap.tc.webdynpro.modelimpl.dynamicrfc.WDDynamicRFCExecuteException
         at com.sap.tc.webdynpro.modelimpl.dynamicrfc.DynamicRFCModelClassExecutable.execute(DynamicRFCModelClassExecutable.java:98)
         at com.sap.xss.ser.xssconfview.fc.FcLinks.onInit(FcLinks.java:256)
         at com.sap.xss.ser.xssconfview.fc.wdp.InternalFcLinks.onInit(InternalFcLinks.java:238)
         at com.sap.xss.ser.xssconfview.fc.FcLinksInterface.onInit(FcLinksInterface.java:115)
         at com.sap.xss.ser.xssconfview.fc.wdp.InternalFcLinksInterface.onInit(InternalFcLinksInterface.java:193)
         at com.sap.xss.ser.xssconfview.fc.wdp.InternalFcLinksInterface$External.onInit(InternalFcLinksInterface.java:257)
         at com.sap.pcuigp.xssfpm.wd.FPMComponent$FPM.attachComponentToUsage(FPMComponent.java:922)
         at com.sap.pcuigp.xssfpm.wd.FPMComponent$FPM.attachComponentToUsage(FPMComponent.java:891)
         at com.sap.pcuigp.xssfpm.wd.FPMComponent$FPMProxy.attachComponentToUsage(FPMComponent.java:1084)
         at com.sap.xss.ser.xssconfview.vc.VcLinks.onInit(VcLinks.java:198)
         at com.sap.xss.ser.xssconfview.vc.wdp.InternalVcLinks.onInit(InternalVcLinks.java:222)
         at com.sap.xss.ser.xssconfview.vc.VcLinksInterface.onInit(VcLinksInterface.java:162)
         at com.sap.xss.ser.xssconfview.vc.wdp.InternalVcLinksInterface.onInit(InternalVcLinksInterface.java:144)
         at com.sap.xss.ser.xssconfview.vc.wdp.InternalVcLinksInterface$External.onInit(InternalVcLinksInterface.java:220)
         at com.sap.pcuigp.xssfpm.wd.FPMComponent.doProcessEvent(FPMComponent.java:564)
         at com.sap.pcuigp.xssfpm.wd.FPMComponent.doEventLoop(FPMComponent.java:438)
         at com.sap.pcuigp.xssfpm.wd.FPMComponent.access$600(FPMComponent.java:78)
         at com.sap.pcuigp.xssfpm.wd.FPMComponent$FPM.raiseSaveEvent(FPMComponent.java:953)
         at com.sap.pcuigp.xssfpm.wd.FPMComponent$FPMProxy.raiseSaveEvent(FPMComponent.java:1116)
         at com.sap.xss.per.vc.reviewnavi.VcPersInfoReviewNavi.next(VcPersInfoReviewNavi.java:227)
         at com.sap.xss.per.vc.reviewnavi.wdp.InternalVcPersInfoReviewNavi.next(InternalVcPersInfoReviewNavi.java:175)
         at com.sap.xss.per.vc.reviewnavi.ReviewNaviView.onActionNext(ReviewNaviView.java:153)
         at com.sap.xss.per.vc.reviewnavi.wdp.InternalReviewNaviView.wdInvokeEventHandler(InternalReviewNaviView.java:173)
         at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)
         at com.sap.tc.webdynpro.progmodel.controller.Action.fire(Action.java:67)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doHandleActionEvent(WindowPhaseModel.java:420)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:132)
         at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:335)
         at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
         at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:321)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingPortal(ClientSession.java:733)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:668)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:250)
         at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:149)
         at com.sap.tc.webdynpro.clientserver.session.core.ApplicationHandle.doProcessing(ApplicationHandle.java:73)
         at com.sap.tc.webdynpro.portal.pb.impl.AbstractApplicationProxy.sendDataAndProcessActionInternal(AbstractApplicationProxy.java:860)
         at com.sap.tc.webdynpro.portal.pb.impl.localwd.LocalApplicationProxy.sendDataAndProcessAction(LocalApplicationProxy.java:77)
         at com.sap.portal.pb.PageBuilder.updateApplications(PageBuilder.java:1299)
         at com.sap.portal.pb.PageBuilder.SendDataAndProcessAction(PageBuilder.java:326)
         at com.sap.portal.pb.PageBuilder$1.doPhase(PageBuilder.java:868)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processPhaseListener(WindowPhaseModel.java:755)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doPortalDispatch(WindowPhaseModel.java:717)
         at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:136)
         at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:335)
         at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)
         at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:321)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:713)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:666)
         at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:250)
         at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:149)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)
         at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)
         at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:386)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:364)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:1039)
         at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:265)
         at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)
         at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:175)
         at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)
         at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(AccessController.java:219)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:102)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:172)
    Caused by: com.sap.tc.webdynpro.modelimpl.dynamicrfc.WDDynamicRFC_Fault_Exception: Fault name: LINKLISTKEY_INVALID, fault text: LINKLISTKEY_INVALID
         at java.lang.Class.newInstanceImpl(Native Method)
         at java.lang.Class.newInstance(Class.java:1303)
         at com.sap.aii.proxy.framework.core.JcoMarshaler.unmarshalException(JcoMarshaler.java:429)
         at com.sap.aii.proxy.framework.core.JcoProxy.send(JcoProxy.java:78)
         at com.sap.aii.proxy.framework.core.AbstractProxy$JcoProxyHelper.send(AbstractProxy.java:173)
         at com.sap.aii.proxy.framework.core.AbstractProxy.send$(AbstractProxy.java:141)
         at com.sap.xss.ser.xssconfview.model.CSLinksModel.hrxss_Ser_Getconfscrlinks(CSLinksModel.java:152)
         at com.sap.xss.ser.xssconfview.model.Hrxss_Ser_Getconfscrlinks_Input.doExecute(Hrxss_Ser_Getconfscrlinks_Input.java:137)
         at com.sap.tc.webdynpro.modelimpl.dynamicrfc.DynamicRFCModelClassExecutable.execute(DynamicRFCModelClassExecutable.java:92)
         ... 67 more
    Can nay one suggest anything on this?

    To solve this problem, make sure the LINKLISTKEY  property defined in the Web Dynpro Application properties exists in table T7XSSSERLNK.
    1. To view the link list key in the Web Dynpro app, in NWDS expand the Applications tree and then double click on your application. Click on the "Application Properties" tab, then look at the value for the "sap.xss.linkListKey".
    2. Ensure that value exists in the backend under transactions SPRO --> Personnel Management --> ESS --> General Settings --> Homepage for Self-Services -->Services --> Define Links on Confirmation Page
    Regards,
    Tom

  • How to handle JCO Exceptions at JCO (RFC) function call

    Hello Forum,
    I am implementing an JCO Server scenario.
    I use dynamic repositories like Example7.java from the JCO documentation.
    Example7 throws an JCO.AbapException if anything went wrong, e.g. the function is not implemented.
    How to react on this AbapException?
    The examples in SAP Help documentation only catch
    SYSTEM_FAILURE and COMMUNICATION_FAILURE.
    All other RFC modules I have seen which declare the function modules to be used by dynamic JCO repositories (like Example7.java) do not define any other Exception parameters.
    But these two are only thrown and caught when something with communication went completely wrong, e.g. RFC not found.
    But when RFC can be reached and the JCO Server is executing the Java method, an AbapException could be thrown on error. How to react on this?
    In my implementation based on the examples I always get a ABAP dump. The dump says:
    Exception named  without message text. Why that name?
    How to handle this type of exception in order to avoid the dump?
    Can anyone post an example please?
    Thanks,
    Carsten
    Edited by: Carsten Schön on Apr 15, 2008 4:22 PM
    Edited by: Carsten Schön on Apr 15, 2008 4:24 PM

    Hi Micky,
    thanks for your quick response.
    If so, to throw JCO.AbapException on JCO Server side is not correct?
    What I do is throwing the JCO.AbapException (like in the JCO Example 7).
    At the RFC call in APAB I handle both exceptions SYSTEM_FAILURE and COMMUNICATION_FAILURE like
    CALL FUNCTION 'MY_JCO_FUNCTION_MODULE'
        DESTINATION JCO_DEST
        <...>
        EXCEPTIONS
          SYSTEM_FAILURE        = 1  MESSAGE RFC_MESS
          COMMUNICATION_FAILURE = 2  MESSAGE RFC_MESS.
    This works as far something with RFC is wrong, e.g. Server can not find the function or Server not reachable.
    But the AbapException thrown by the JCO Server (Java) is not handled that way. Why?
    Sorry if this is the wrong forum but I tried posting in Netweaver integration and got no answer for 1 week and because it's ABAP related I thought the topic suites here.
    Carsten
    Edited by: Carsten Schön on Apr 15, 2008 5:10 PM

  • Java Null Pointer Exception while Importing a Table to IS

    Hello All,
    I am trying to import a table into IS and receiving a JAVA Null Pointer Exception. The table is in a Teradata database and I am able to import other tables belonging to the same schema.I get the Java error only while trying to import this one particular table. The DBA has confirmed that the table belongs to the schema/owner I am using. In any case, it seems more of a application error than a database level error. Can anyone provide any insight? Thank you in advance.

    hi Keerthi,
    thank you.
    i tried with below code but still unsuccesfully
         +     oaDFF = (OADescriptiveFlexBean)oawebbean.findIndexedChildRecursive("ActFlexField");+
    oapagecontext.writeDiagnostics(this, "Niccal: i got DFF handle", 1);
    OAMessageTextInputBean mtib = (OAMessageTextInputBean)oaDFF.findChildRecursive("ActFlexField0");
    oapagecontext.writeDiagnostics(this, "Niccal: before if", 1);
    i am able to print 1° comment line but not second. so i think it's something wrong getting the segment handle.
    anyway i'm not able to reach your suggested if statement because execution stops before.
    Infact, if i comment line :OAMessageTextInputBean mtib = (OAMessageTextInputBean)oaDFF.findChildRecursive("ActFlexField0");
    page doesn't give error and saves data.
    any suggestion appreciated,
    thanx,
    N

  • How to handle multiple exception types in JSF 2?

    I'm trying to handle multiple exception types in JSF2, including a default error page for any unexpected exception types. The problems I'm having are:
    1) ViewExpiredException is handled only when no generic exception handler is specified
    2) "Regular" exceptions like NullPointerException are never handled
    My managed bean:
    @Named
    @SessionScoped
    public class MyController implements Serializable {
    /* A method that does nothing */
    public void doNothing() {
        //do nothing
    /* Generate a null pointer exception on purpose */
    public void generateNpe() throws NullPointerException {
        Object x = null;
        x.toString();
    My test page to generate the exception:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Test page</title>
    </h:head>
    <h:body>
        <h:form>
            <h:commandButton id="button1" value="do nothing" action="#{myController.doNothing}" />
            <h:commandButton id="button2" value="generate NPE" action="#{myController.generateNpe}" />
        </h:form>
    </h:body>
    </html>
    My web.xml:
    <!-- Redirect all NPEs to this page; this never works! -->
    <error-page>
        <exception-type>java.lang.NullPointerException</exception-type>
        <location>/error/error003.jsf</location>
    </error-page>
    <!-- Redirect all VEEs to this page; this works fine if the next section is excluded -->
    <error-page>
        <exception-type>javax.faces.application.ViewExpiredException</exception-type>
        <location>/error/error002.jsf</location>
    </error-page>
    <!-- This grabs everything, even with the previous sections defined.  If I exclude this error-page section, VEE works fine but NPE still does not get redirected -->
    <error-page>
        <exception-type>java.lang.Exception</exception-type>
        <location>/error/error001.jsf</location>
    </error-page>My questions are as follows:
    1) How can we handle "regular" java exceptions like NPE?
    2) How can we define a catch-all for unexpected exception types, while still respecting specific exception handlers for VEE, etc?
    Thanks,
    Benjamin

    Is your data model right? If you are adding in one and deleting in another it sounds to me more like a process that an entity, in which case you may revisit your data model and simplify it, add in a session bean with the process method to co-ordinate between the two.
    However, if you want to map multiple different tables within a single entity bean it is possible and just part of the mapping. How you actualyl specify it depends on which implementation you are working with.
    Cheers,
    Peter.

  • BI setup: WebAS ABAP Setting - Java to ABAP communication problem

    Hello,
    i've got a problem during intallation of BI in Netweaver 2004s. The Diagnostics & Support Desktop Tool reports errors in WebAS ABAP Settings. These errors are:
    - "Web Template Validation failed due Java to ABAP communication problem (return code:ERSBOLAP018)"  with the suggested solution "Check Connector Connection of System Object in Portal System Landscape". What does it mean?
    - "Call ABAP->Java for function RSWR_RFC_SERVICE_TEST failed for destination <destination>" and "Call ABAP->Java for function RSRD_MAP_TO_PORTAL_USERS failed for destination <destination>" with suggested solution "Check the data of the destination in transaction SM59. Check that the target host is running and has registered a program id in the gateway." Run of transaction SM59 returns no errors.
    Further i've take a look in the log 'dev_jrfc.trc' and there i found the errors:
    - Exception thrown by application running in JCo Server
    java.lang.RuntimeException: Bean RSRD_MAP_TO_PORTAL_USERS not found on host <host>
    - Exception thrown by application running in JCo Server
    java.lang.RuntimeException: Bean RSWR_RFC_SERVICE_TEST not found on host  <host>
    - Exception thrown by application running in JCo Server
    java.lang.RuntimeException: Bean RSWR_PREEXECUTION_PROXY not found on host  <host>
    Can these errors be the cause of the WebAS ABAP Setting error displayed in the Diagnostics & Support Desktop Tool? How they can be solved?
    Thanks for your help,
    Martin

    Hello Chetan,
    thanks for your response. Maybe i've described my problem not clear enough. There is no problem of installation and usage of support & dektop tool, but of installation of BI. The support & dektop tool indicates the errors described above with no other hints. My questions is, if anybody knows, what is the cause of the errors and what i must do, to install BI correctly.
    Cheers,
    Martin

  • Urgent : 11g Fault Policy Java Handler

    Im trying to use fault policies in 11g and in fault policies want to catch the remote faults and pass it to a custom java handler.
    in Custom Handler use IFaultRecoveryJavaClass and also BPELFaultRecoveryContextImpl , i want to pick fault information
    and pass store it in DB...
    i placed the client jar file in <Oracle_HOME>\user_projects\domains\base_domain\lib
    Duuring runtime the server is able to Pick the IFaultRecoveryJavaClass but not BPELFaultRecoveryContextImpl
    is there anything im missing ?
    As per oracle documentation in Fault Handling in BPEL form SOA developer guide ..
    public class TestJavaAction implements IFaultRecoveryJavaClass {
    public void handleRetrySuccess(IFaultRecoveryContext ctx) {
    System.out.println("This is for retry success");
    handleFault(ctx);
    public String handleFault(IFaultRecoveryContext ctx) {          
    System.out.println("-----Inside handleFault-----\n" + ctx.toString());
    dumpProperties(ctx.getProperties());
    /* Get BPEL specific context here */
    BPELFaultRecoveryContextImpl bpelCtx = (BPELFaultRecoveryContextImpl) ctx;
    bpelCtx.addAuditTrailEntry("hi there");
    System.out.println("Policy Id" + ctx.getPolicyId());
    please find the Fault Policy and Custom Java Class
    please see may fault policy below..
    =====================================================================================================================
    <?xml version="1.0" encoding="UTF-8"?>
    <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <faultPolicy version="2.1.3" id="ConnectionFaults">
    <Conditions>
    <!-- Remote Fault Handler -->
    <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension" name="bpelx:remoteFault">
    <condition>
    <action ref="technical-fault-handler"/>
    </condition>
    </faultName>
    </Conditions>
    <Actions>
    <!-- Human Intervention -->
    <Action id="ora-human-intervention">
    <humanIntervention/>
    </Action>
    <!-- Technical Fault Action -->
    <Action id="technical-fault-handler">
    <javaAction className="com.FaultHandler"
    defaultAction="ora-human-intervention" propertySet="TechnicalProps">
    <returnValue value="OK" ref="ora-human-intervention"/>
    </javaAction>
    </Action>
    </Actions>
    <Properties>
    <!-- Properties for Technical Errors -->
    <propertySet name="TechnicalProps">
    <property name="logFileName">techinical-faults.log</property>
    <property name="logFileDir">c:\tmp\log</property>
    <property name="ErrorType">Technical</property>
    </propertySet>
    </Properties>
    </faultPolicy>
    </faultPolicies>
    Custom Java Handler ..
    =====================================================================================================================
    import java.io.File;
    import java.io.PrintStream;
    import java.util.ArrayList;
    import java.util.Map;
    ==============================================================
    // SOA Runtime fabric-runtime.jar Available with SOA Runtime Libraries
    ==============================================================
    import oracle.integration.platform.faultpolicy.IFaultRecoveryContext;
    import oracle.integration.platform.faultpolicy.IFaultRecoveryJavaClass;
    ==============================================================
    // BPEL Runtime orabpel.jar Available with BPEL Runtime Libraries
    ==============================================================
    import com.collaxa.cube.engine.fp.BPELFaultRecoveryContextImpl;
    public class FaultHandler implements IFaultRecoveryJavaClass {
    public FaultHandler() {
    super();
    public void handleRetrySuccess(IFaultRecoveryContext ifc) {
    print("RertySuccess");
    public String handleFault(IFaultRecoveryContext ifc) {
    print("Handle Fault");
    Map<String,ArrayList> props = ifc.getProperties();
    for (Map.Entry<String,ArrayList> entry: props.entrySet()){
    print (entry.getKey() + " = " + entry.getValue().get(0));
    String logFileName = (String) props.get("logFileName").get(0);
    String logFileDir = (String) props.get("logFileDir").get(0);
    String ErrorType = (String) props.get("ErrorType").get(0);
    PrintStream ps = null;
    try
    ps = new PrintStream(logFileDir + File.separator + logFileName);
    catch (Exception e) {
    print(e.getMessage());
    System.out.println( "Fault Details");
    System.out.println("===============================================================");
    System.out.println("Fault Type ................ " + ifc.getType());
    System.out.println("Poilcy ID ................. " + ifc.getPolicyId());
    System.out.println("Faulted Partner Link ...... " + ifc.getReferenceName());
    System.out.println("Error Type ...... " + ErrorType);
    System.out.println("Port Type ................. " + ifc.getPortType());
    try {
    BPELFaultRecoveryContextImpl bpelCtx = (BPELFaultRecoveryContextImpl) ifc;
    System.out.println("BPEL Context + getActivityName" + bpelCtx.getActivityName());
    System.out.println("BPEL Context + getActivityType" + bpelCtx.getActivityType());
    System.out.println("BPEL Context + getComponentInstanceId" + bpelCtx.getComponentInstanceId());
    System.out.println("BPEL Context + getComponentInstanceId" + bpelCtx.getComponentInstanceId());
    System.out.println("BPEL Context + getCompositeName" + bpelCtx.getCompositeName());
    System.out.println("BPEL Context + getECID" + bpelCtx.getECID());
    System.out.println("BPEL Context + getFault" + bpelCtx.getFault());
    System.out.println("BPEL Context + getFault" + bpelCtx.getProcessDN());
    catch (Exception ee){
    System.out.println("BPEL Context + Exception" + ee.getMessage());
    return "OK";
    Error Log ..
    =====================================================================================================================
    Caused by: com.oracle.bpel.client.BPELFault: faultName: {{http://schemas.oracle.com/bpel/extension}runtimeFault}
    parts: {{
    summary=<summary>com/collaxa/cube/engine/fp/BPELFaultRecoveryContextImpl</summary>
    ,detail=<detail>java.lang.NoClassDefFoundError: com/collaxa/cube/engine/fp/BPELFaultRecoveryContextImpl
         at com.FaultHandler.handleFault(FaultHandler.java:56)
         at com.collaxa.cube.engine.fp.RecoveryActionJava.execute(RecoveryActionJava.java:67)
         at com.collaxa.cube.engine.fp.BPELRecoverFault.recover(BPELRecoverFault.java:87)
         at oracle.fabric.CubeServiceEngine.recoverFault(CubeServiceEngine.java:1589)
         at oracle.integration.platform.faultpolicy.RecoverFault.recoverAndChain(RecoverFault.java:149)
         at oracle.integration.platform.faultpolicy.RecoverFault.resolveAndRecover(RecoverFault.java:112)
         at oracle.integration.platform.faultpolicy.FaultRecoveryManagerImpl.resolveAndRecover(FaultRecoveryManagerImpl.java:121)
         at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.resolveAndRecover(BPELInvokeWMP.java:1170)
         at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.__handleException(BPELInvokeWMP.java:1111)
         at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.__callback(BPELInvokeWMP.java:626)
         at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.handleNormalInvoke(BPELInvokeWMP.java:465)
         at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:182)
         at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(BaseBPELActivityWMP.java:140)
         at com.collaxa.cube.engine.CubeEngine._performActivity(CubeEngine.java:2675)
         at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:2558)
         at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1256)
         at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:73)
         at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:188)
         at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:285)
         at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4607)
         at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:828)
         at com.collaxa.cube.engine.delivery.DeliveryService.handleInvoke(DeliveryService.java:610)
         at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleInvoke(CubeDeliveryBean.java:354)
         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.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
         at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
         at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
         at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
         at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
         at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
         at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37)
         at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54)
         at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50)
         at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
         at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
         at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
         at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
         at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
         at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
         at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
         at $Proxy184.handleInvoke(Unknown Source)
         at com.collaxa.cube.engine.ejb.impl.bpel.BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.handleInvoke(BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.java:241)
         at com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessageHandler.handle(InvokeInstanceMessageHandler.java:34)
         at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:139)
         at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:58)
         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
         at java.lang.Thread.run(Thread.java:619)
    </detail>

    I tried bundling the jar file but still it is not able to pick up the class and throws the same exception. please find the following code which i tried to use to pick up the remote fault.
    System.out.println( "Fault Details");
    System.out.println( "===============================================================");
    System.out.println( "Fault Type ................ " + ifc.getType());
    System.out.println( "Poilcy ID ................. " + ifc.getPolicyId());
    System.out.println( "Faulted Partner Link ...... " + ifc.getReferenceName());
    System.out.println( "Error Type ...... " + ErrorType);
    System.out.println( "Port Type ................. " + ifc.getPortType());
    BPELFaultRecoveryContextImpl bpelCtx = (BPELFaultRecoveryContextImpl) ifc;
    System.out.println("BPEL Context + getActionId" + bpelCtx.getActionId());
    System.out.println("BPEL Context + getActivityName" + bpelCtx.getActivityName());
    System.out.println("BPEL Context + getActivityType" + bpelCtx.getActivityType());
    System.out.println("BPEL Context + getComponentInstanceId" + bpelCtx.getComponentInstanceId());
    System.out.println("BPEL Context + getCompositeName" + bpelCtx.getCompositeName());
    System.out.println("BPEL Context + getECID" + bpelCtx.getECID());
    System.out.println("BPEL Context + getFault" + bpelCtx.getFault());
    System.out.println("BPEL Context + getFault" + bpelCtx.getProcessDN());
    If you have any working example can you please pass the code. my emailid is [email protected]
    Edited by: lakshmi nadh on Jul 27, 2009 3:39 AM

  • Mediator 11.1.1.5 faults Java Handler not getting called fault-policies

    Hi,
    I have a Oracle SOA 11.1.1.5 Mediator and am handling the faults using fault policies but somehow custom java handler is not invoked when an error occurs and this is what I see in the log but somehow my custom java handler class is not getting called.
    INFO: FaultPoliciesParser.parsePolicies ------->Begin Parsing of policy file
    <Apr 16, 2012 10:30:17 PM EDT> <Error> <oracle.soa.mediator.common.listener> <BE
    A-000000> <Enququeing to Error hospital successful...>Here is the fault-policies.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy">
      <faultPolicy version="2.0.1" id="medFaultHandling"
                   xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xs="http://www.w3.org/2001/XMLSchema"
                   xmlns="http://schemas.oracle.com/bpel/faultpolicy"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <Conditions>
          <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
                     name="bpelx:remoteFault">
            <condition>
              <action ref="java-fault-handler"/>
            </condition>
          </faultName>
          <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
                     name="bpelx:bindingFault">
            <condition>
              <action ref="java-fault-handler"/>
            </condition>
          </faultName>
          <faultName xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
                     name="bpelx:runtimeFault">
            <condition>
              <action ref="java-fault-handler"/>
            </condition>
          </faultName>
        </Conditions>
        <Actions>
          <Action id="java-fault-handler">
            <javaAction className="com.mediator.faults.CustomMediatorFaultHandler"
                        defaultAction="ora-human-intervention" propertySet="myMediatorProps">
              <returnValue value="OK" ref="ora-human-intervention"/>
            </javaAction>
          </Action>
          <Action id="ora-human-intervention">
            <humanIntervention/>
          </Action>
          <Action id="ora-rethrow-fault">
            <rethrowFault/>
          </Action>
          <Action id="ora-retry">
            <retry>
              <retryCount>3</retryCount>
              <retryInterval>15</retryInterval>
              <exponentialBackoff/>
              <retryFailureAction ref="java-fault-handler"/>
            </retry>
          </Action>
        </Actions>
        <Properties>
          <propertySet name="myMediatorProps">
            <property name="logFileName">mediator-faults.log</property>
            <property name="logFileDir">C:/software</property>
          </propertySet>
        </Properties>
      </faultPolicy>
    </faultPolicies>Here is my the fault-bindings.xml:
    <?xml version="1.0" encoding="UTF-8" ?>
    <faultPolicyBindings version="2.0.1"
                         xmlns="http://schemas.oracle.com/bpel/faultpolicy"
                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <composite faultPolicy="medFaultHandling"/>
    </faultPolicyBindings>And here is the snippet of composite.xml where I put the below properties:
    <component name="Router">
        <implementation.mediator src="Router.mplan"/>
        <property name="oracle.composite.faultPolicyFile">fault-policies.xml></property>
        <property name="oracle.composite.faultBindingFile">fault-bindings.xml></property>
      </component>But when the exception occurs I don't see my custom Java Handler being invoked. As I created a jar file and placed it in
    *<Middleware_Home>\Oracle_SOA1\soa\modules\oracle.soa.mediator_11.1.1*
    and updated oracle.soa.mediator.jar manifest by putting the path of the jar file. Restarted the servers but still when an exception occurs in Mediator custom java handler is not invoked. Any ideas what I am missing or are there any special steps
    Thanks

    There is no point in retry on binding fault, rather you can raise it as exception and catch it in sepcific catch block or catch all will handle it.
    Ideally this particular instance will be faulted and if required you can customize to send a mail with fault string to developer or support person or dba
    This type of fault need human intervension to fix this code or it could be data issue.
    - It is considered good etiquette to reward answerers with points (as "helpful" - 5 pts - or "correct" - 10pts).
    Thanks,
    Vijay

  • Communication between Abap and Java and Java to Abap

    HI,
    I have installed BI 7.0 and the user complaints that BEx WEB Application Designer Query results are not showing up in the WEB URL Link.
    and the BI user suggests that communication between Abap to java and Java to Abap has to be done?
    How to setup ABAP to JAVA and JAVA to ABAP communication?
    Regards,
    Magham.

    Hi,
    Jco conn from ABAP to Java
    =====================
    You can use the JCO RFC Provider Service of the Web Application Server for your ABAP to Java calls.
    The steps involved in that are
    1. Configure destination in SM59 in SAP.
    2. Create RFC Destination in Visual Admin.
    3. Create a stateless session bean with JNDI name as the name of calling function module in SAP.
    4. Add a business method public void processFunction(JCO.Funtion fn) which is called by the JCO RFC Provider Service. The name should be 'processFunction'.
    5. Set library references in application-j2ee-engine.xml to type weak for the following
    a. com.sap.mw.jco.
    b. com.sap.tc.Logging (if you are using the logging api )
    Here is the sample code for the EJB biz method
    Business Method.
    public void processFunction(JCO.Function function) {
    try {
    // Get the import parameters for the function module
    JCO.ParameterList importList = function.getImportParameterList();
    logger.infoT("The value sent is" +
    (String)importList.getValue("USER_NAME"));
    // Set the export parameter value for the function module
    JCO.ParameterList export = function.getExportParameterList();
    export.setValue("From EJB", "RETURN");
    function.setExportParameterList(export);
    catch (java.lang.Exception e) {
    e.printStackTrace();
    Jco conn from Java to others(ex:ABAP)
    =====================-==========
    • Open Visual Admin(C:\usr\sap\SID\JCxx\j2ee\admin\go.bat) and connect to server
    • Go to Destinations service
    • Open HTTP Settings Tab
    • Add/Edit destination SLD_DataSupplier and type following values
    URL – http://xyz.corp:53000
    Authentication - BASIC
    User – dynproxxx
    Password - bp52st000
    • Press save and test (if you get response code 200 everything is o.k.)
    • Add/Edit other HTTP Destination named SLD_Client with the same values as SLD_DataSupplier:
    URL – http://xyz.corp:53000
    Authentication - BASIC
    User – dynproxxx
    Password - bp52st000
    • Press save and test (if you get response code 200 everything is o.k.)
    • Go to SLD Data Supplier service.
    • Press the button named: Send the Data to SLD and confirm triggering SLD Data transfer (if you receive successful message everything is o.k.).
    ===================
    following blog might helpfull
    =======================
    /people/michal.krawczyk2/blog/2005/03/10/registering-a-new-technical-system-in-sld--abap-based
    for basic infor
    ==============
    http://help.sap.com/saphelp_nw04s/helpdata/en/21/84570b3ae14e77b3047c82218974b9/frameset.htm
    Award points if it helps

  • Performance of mappings (JAVA, XSLT, ABAP)

    Hello everybody,
    I would like to know about the performance of mappings using different languages (JAVA, XSLT, ABAP).
    Does anybody know which one will have the best performance?
    Thanks a lot.
    Regards Mario

    Hi Mario,
    I thought i will start of from scratch. Mapping is basically done to convert one form of xml into another form. This can be done using either of them mentioned below.
    - Graphical mapping
    - XSLT mapping
    - JAVA mapping
    - ABAP mapping
    There is no hard and fast rule for using the mapping techniques. But, I will try to put things in the right perspective for you.
    Graphical Mapping is used for simple mapping cases. When, the logic for your mapping is simple and straight forward and it does not involve any complex logic.
    Java and XSLT mapping are used when graphical mapping cannot help you.
    When the choice is between Java and XSLT, XSLT is simpler than java mapping and easier. But, it has its drawbacks. One among them being that you cannot use Java APIs and Classes in it. There might be cases in your mapping when you will have to perform something like a properties file look up or a DB lookup, such scenarios are not possible in XSLT and so, when you want to use some specific Java API's you will have to go for Java Mapping.
    Java Mapping uses 2 types of parsers. DOM and SAX. DOM is easier to use with lots of classes to help you create nodes and elements, but, DOM is very processor intensive.
    SAX parser is something that parses your XML one after the other, and so is not processor intensive. But, it is not exactly easy to develop either.
    To know more about each of them please go thru the following links. And if you ask me your which is better, it depends basically on the scenario you implementing and the complexity involved. Anyways please go thru the following links:
    Graphical mapping
    http://help.sap.com/saphelp_nw04/helpdata/en/6d/aadd3e6ecb1f39e10000000a114084/content.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/43/c4cdfc334824478090739c04c4a249/content.htm
    /people/bhanu.thirumala/blog/2006/02/02/graphical-message-mapping-150-text-preview
    http://www.sapgenie.com/netweaver/xi/mapping1.htm
    /people/alessandro.guarneri/blog/2006/01/26/throwing-smart-exceptions-in-xi-graphical-mapping
    XSLT mapping
    http://help.sap.com/saphelp_nw04/helpdata/en/73/f61eea1741453eb8f794e150067930/content.htm
    http://www.w3.org/TR/xslt20/
    JAVA mapping
    http://help.sap.com/saphelp_nw04/helpdata/en/e2/e13fcd80fe47768df001a558ed10b6/content.htm
    DOM parser API
                     http://java.sun.com/j2se/1.4.2/docs/api/org/w3c/dom/package-frame.html
    ABAP mapping
    /people/r.eijpe/blog
    To know more about the value mapping tools for the SAP Exchange Infrastructure (XI), please go thru the following link:
    http://www.applicon.dk/fileadmin/filer/XI_Tools/ValueMappingTool.pdf
    To get an idea as to what value mapping is, please go thru the following links:
    http://help.sap.com/saphelp_nw04/helpdata/en/13/ba20dd7beb14438bc7b04b5b6ca300/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/f2/dfae3d47afd652e10000000a114084/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/2a/9d2891cc976549a9ad9f81e9b8db25/content.htm
    most of the links that I have provided also helps you get the step by step procedure of doing the same. And also involves the procedure to implement certain advanced features.
    And please go through this link which clearly explains the 3 types of mappings.
    /people/ravikumar.allampallam/blog/2005/02/10/different-types-of-mapping-in-xi
    Hope this clears your doubt fully.
    Regards,
    Abhy
    PS: AWARD POINTS FOR HELPUL ANSWERS.

  • Domino Gateway Crash with Java.io.EOF Exception

    All,
    My client has IDM 7.1 provisioning to Domino 6.5.4. It has been working fine untill last friday. Since then the gateway is crashing with Java.io.EOF Exception while trying to provision. The code has not changed and per some of the previous threads in this forum, I checked if they had any configuration changes in the Domino gateway server or at the domino side - like virus scan etc. However the answer was no.
    I would really appreciate any help on this.
    Thanks,
    Biju.
    Here is the last few lines in the gateway trace before it crashes:
    27/2009 00.20.25.343000 [4924] (../../../../src/wps/agent/connect/main.cpp,247): Enter: doDominoInitialization
    03/27/2009 00.20.25.343000 [4924] (../../../../src/wps/agent/connect/main.cpp,271): NotesIniFileDir: D:\IDM\gateway\notes.ini
    03/27/2009 00.20.25.343000 [4924] (../../../../src/wps/agent/connect/main.cpp,279): NotesInstallDir: D:\notes
    03/27/2009 00.20.25.343000 [4924] (../../../../src/wps/agent/connect/main.cpp,291): Domino Enabled
    03/27/2009 00.20.25.343000 [4924] (../../../../src/wps/agent/connect/main.cpp,303): Updated PATH: ;D:\notes;
    03/27/2009 00.20.25.343000 [4924] (../../../../src/wps/agent/connect/main.cpp,310): NOTESNTSERVICE Successfully set
    03/27/2009 00.20.25.406000 [4924] (../../../../src/wps/agent/connect/main.cpp,327): Exit: doDominoInitialization
    03/27/2009 00.20.25.406000 [2752] (../../../../src/wps/agent/connect/ntsvc.cpp,95): Service::svc
    03/27/2009 00.20.25.437000 [2752] (../../../../src/wps/agent/connect/server.cpp,269): starting up server daemon PORT 9278
    03/27/2009 00.20.25.875000 [2752] (../../../../src/wps/agent/connect/RAEncryptor.cpp,128): Error reading encrpytion key from registry. Using default.
    03/27/2009 00.20.25.875000 [2752] (../../../../src/wps/agent/connect/RASecureConnection.cpp,64): RASecureConnection: new connection handler
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/client_handler.cpp,344): got 68 bytes
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RASecureConnection.cpp,264): ReceivePrivate: count: 47, 64 wrapped up rawlength 63
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RASecureConnection.cpp,273): Rightbefore decrypt:
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RAEncryptor.cpp,69): RAEncryptor::Decrypt3DES: input length (56) moded to 7
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RASecureConnection.cpp,114): SendPrivate: count: 0 pad: 4
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RASecureConnection.cpp,422): Enter: MakeChallengeResponse
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RASecureConnection.cpp,474): MakeChallengeResponse(in,out):
    (5C,2F) (CC,56)
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RASecureConnection.cpp,476):  (26,E3) (D7,65)
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RAEncryptor.cpp,128): Error reading encrpytion key from registry. Using default.
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RASecureConnection.cpp,497): MakeChallengeResponse Key:
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RASecureConnection.cpp,507): Exit: MakeChallengeResponse
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RASecureConnection.cpp,114): SendPrivate: count: 16 pad: 4
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/client_handler.cpp,344): got 36 bytes
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RASecureConnection.cpp,264): ReceivePrivate: count: 16, 32 wrapped up rawlength 32
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RASecureConnection.cpp,273): Rightbefore decrypt:
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RAEncryptor.cpp,69): RAEncryptor::Decrypt3DES: input length (24) moded to 3
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RASecureConnection.cpp,114): SendPrivate: count: 0 pad: 4
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RAEncryptor.cpp,128): Error reading encrpytion key from registry. Using default.
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RASecureConnection.cpp,571): Session key :
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/client_handler.cpp,344): got 16036 bytes
    03/27/2009 00.20.25.875000 [3068] (../../../../src/wps/agent/connect/RASecureConnection.cpp,264): ReceivePrivate: count: 16012, 16032 wrapped up rawlength

    Workflow Trace:
                                  <List>
                                    <String>defaultPasswordExp</String>
                                    <String>365</String>
                                  </List>
                                </List>
                              </ResultRows>
                            </ResultTable>
                          </ResultItem>
                          <ResultItem type='error' status='error'>
                            <ResultError throwable='com.waveset.util.WavesetException'>
                              <StackTrace>com.waveset.util.WavesetException:
    ==> java.io.EOFException:
         at com.waveset.adapter.AgentResourceAdapter.getResponseBytes(AgentResourceAdapter.java:924)
         at com.waveset.adapter.AgentResourceAdapter.getResponse(AgentResourceAdapter.java:955)
         at com.waveset.adapter.AgentResourceAdapter.getResponse(AgentResourceAdapter.java:940)
         at com.waveset.adapter.AgentResourceAdapter.getResponse(AgentResourceAdapter.java:934)
         at com.waveset.adapter.AgentResourceAdapter.doCreateOrUpdateRequest(AgentResourceAdapter.java:1289)
         at com.waveset.adapter.DominoResourceAdapter.doCreateOrUpdateRequest(DominoResourceAdapter.java:1072)
         at com.waveset.adapter.AgentResourceAdapter.createAccounts(AgentResourceAdapter.java:266)
         at com.waveset.adapter.ResourceAdapterBase.createAccount(ResourceAdapterBase.java:832)
         at com.waveset.adapter.ResourceAdapterProxy.createAccount(ResourceAdapterProxy.java:213)
         at com.waveset.provision.ProvisionContext.doResource(ProvisionContext.java:2103)
         at com.waveset.provision.ProvisionContext.processOp(ProvisionContext.java:592)
         at com.waveset.provision.ThreadContext.processContext(ThreadContext.java:330)
         at com.waveset.provision.ThreadContext.launchThreads(ThreadContext.java:239)
         at com.waveset.provision.ProvisionContext.doResources(ProvisionContext.java:280)
         at com.waveset.provision.Provisioner.reProvision(Provisioner.java:2226)
         at com.waveset.provision.Provisioner.reProvision(Provisioner.java:1416)
         at com.waveset.provision.WorkflowServices.reProvision(WorkflowServices.java:2791)
         at com.waveset.provision.WorkflowServices.call(WorkflowServices.java:789)
         at com.waveset.adapter.RASecureConnection.access$700(RASecureConnection.java:53)
         at com.waveset.adapter.RASecureConnection$ReceiveThread.run(RASecureConnection.java:1080)
    Wrapped exception:
    java.io.EOFException
         at java.io.DataInputStream.readFully(DataInputStream.java:204)
         at java.io.DataInputStream.readInt(DataInputStream.java:380)
         at com.waveset.adapter.RASecureConnection.ReceivePrivateThread(RASecureConnection.java:540)
         at com.waveset.adapter.RASecureConnection.access$700(RASecureConnection.java:53)
         at com.waveset.adapter.RASecureConnection$ReceiveThread.run(RASecureConnection.java:1080)
    </StackTrace>
                              <ResultError throwable='java.io.EOFException'>
                                <StackTrace>java.io.EOFException
         at java.io.DataInputStream.readFully(DataInputStream.java:204)
         at java.io.DataInputStream.readInt(DataInputStream.java:380)
         at com.waveset.adapter.RASecureConnection.ReceivePrivateThread(RASecureConnection.java:540)
         at com.waveset.adapter.RASecureConnection.access$700(RASecureConnection.java:53)
         at com.waveset.adapter.RASecureConnection$ReceiveThread.run(RASecureConnection.java:1080)
    </StackTrace>
                              </ResultError>
                            </ResultError>
                          </ResultItem>
                        </WavesetResult>
                      </ResourceResult>

Maybe you are looking for