Exception of jgss example

Hi,
When I tested some JGSS examples in win2k server I got a exception. Then I search this forum look for some hints and find a thread's question is as same as mine.But...without an answer:(
So I post it again and hope that I can get some help here.Thanks
Regards,
George
Hi,
I am using the examples provided in the tutorials for JAAS to connect to a Windows 2000 domain.
I am making the following settings:
-Djava.security.krb5.realm=MYDOMAIN -Djava.security.krb5.kdc=windows_pdc -Djava.security.auth.login.config=jaas.conf
jaas.conf is :
JaasSample {
com.sun.security.auth.module.Krb5LoginModule required;
But I am getting an exception. This is how the console looks:
Kerberos username [sachinv]: Administrator
Kerberos password for Administrator: xyz
Authentication failed:
KDC has no support for encryption type (14)
I tried to see what encryption was being used by the KDC (using klist tickets), and it shows up as
RSADSI RC4-HMAC(NT).
Is there any way to change this encryption on the kdc (windows pdc) or elsewhere? Any help would be greatly appreciated.
Regards
Sachin

Any advices?

Similar Messages

  • Is it possible for an individual to visit the Apple Campus in Cupertino, if they wish so, or is it just for exceptional people (for example, for people who work there, for wealthy people, etc.) ?

    I would love to visit the Apple Campus in California, but I do not know if it is possible, as I am not neither famous nor have I any relation with the company.
    I cannot find the answer anywhere, so I would be really glad if you could help me

    No Problems
    You may need to use the "More search tools" option to narrow the search results to more recent results
    ( some of the results I originally got were from 2005 )
    Good Luck

  • Exception running STRUTS examples from JAKARTA...

    Hi,
              I'm looking into the JAKARTA STRUTS framework for JSP. I saw the message
              from Kevin X. about problems he has. I've downloaded service pack 5 and I
              get the following error message:
              javax.servlet.jsp.JspException: Missing resources attribute
              org.apache.struts.action.MESSAGE
              at
              org.apache.struts.taglib.MessageTag.doStartTag(MessageTag.java:360)
              at jsp_servlet._logon._jspService(_logon.java, Compiled Code)
              at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
              at
              weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
              , Compiled Code)
              at
              weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
              , Compiled Code)
              at
              weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
              l.java:760)
              at
              weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
              l.java:707)
              at
              weblogic.servlet.internal.ServletContextManager.invokeServlet(ServletContext
              Manager.java:251)
              at
              weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.java:369)
              at
              weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:269)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java, Compiled
              Code)
              Does anyone knows what's up with this?
              Thanks in advance.
              Regards,
              HC.
              

              As promised, here is the latest from Bea Customer Support....
              Kevin, <load-on-startup> is not honored by WebLogic Server 5.1.0. It is scheduled to be implemented in our next major release. I will check on the feasability of adding this feature to a 5.1.0 service pack, but in the meantime, I wonder if you can accomplish what you need by setting up a startup class <http://www.weblogic.com/docs51/classdocs/API_startup.html>?
              "kevinx" <[email protected]> wrote:
              >
              >Bea is looking into this as I've filed a support request. I will post the solutions, if available. In the mean time, you can subscribe to struts user group mailing list to get some inspiration. Unfortunately, no one has an easy solution for running Strats on Weblogic.
              >
              >Kevin
              >
              >"Henry Chin" <[email protected]> wrote:
              >>Hi,
              >> I'm looking into the JAKARTA STRUTS framework for JSP. I saw the message
              >>from Kevin X. about problems he has. I've downloaded service pack 5 and I
              >>get the following error message:
              >>
              >>javax.servlet.jsp.JspException: Missing resources attribute
              >>org.apache.struts.action.MESSAGE
              >> at
              >>org.apache.struts.taglib.MessageTag.doStartTag(MessageTag.java:360)
              >> at jsp_servlet._logon._jspService(_logon.java, Compiled Code)
              >> at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
              >> at
              >>weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
              >>, Compiled Code)
              >> at
              >>weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
              >>, Compiled Code)
              >> at
              >>weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
              >>l.java:760)
              >> at
              >>weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
              >>l.java:707)
              >> at
              >>weblogic.servlet.internal.ServletContextManager.invokeServlet(ServletContext
              >>Manager.java:251)
              >> at
              >>weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.java:369)
              >> at
              >>weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:269)
              >>
              >> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java, Compiled
              >>Code)
              >>
              >>Does anyone knows what's up with this?
              >>Thanks in advance.
              >>Regards,
              >>HC.
              >>
              >>
              >
              

  • How to handle exception CX_SY_REF_IS_INITIAL

    hi experts,
    im working on a test scenario for abap mapping in SAP XI im getting this error
    An exception with the type CX_SY_REF_IS_INITIAL occurred, but was neither handled locally, nor declared in a RAISING clause Dereferencing of the NULL reference
    i understand that i need to catch this exception in the abap coding but i'm not familiar with oops concepts
    can any one please suggest me how to handle this exception for the following code...
    method IF_MAPPING~EXECUTE.
      break x1149.
    * initialize iXML
      TYPE-POOLS: ixml.
      class cl_ixml definition load.
    ** Instances & Variable declaration =======================
    * instance main factory
      TYPES: BEGIN OF t_xml_line,
              data(256) TYPE x,
            END OF t_xml_line.
      DATA: l_ixml TYPE REF TO if_ixml,
    * instance input stream factory
       l_streamfactory TYPE REF TO if_ixml_stream_factory,
    * instance input stream
      l_istream  TYPE REF TO if_ixml_istream,
    * instance input document
      l_document TYPE REF TO if_ixml_document,
    * instance parse input document
      l_parser TYPE REF TO if_ixml_parser,
    * instance for elements within the nodes
      node      TYPE REF TO if_ixml_node,
    *instance of nodemap
      nodemap   TYPE REF TO if_ixml_named_node_map,
    * instance for iterator
      iterator  TYPE REF TO if_ixml_node_iterator,
      name      TYPE string,
      value     TYPE string,
    * instance main factory
       o_ixml   TYPE REF TO if_ixml,
    * instance output document
       o_document TYPE REF TO if_ixml_document,
    * instance output stream
      o_istream  TYPE REF TO if_ixml_ostream,
    * instance parse output document
      o_parser  TYPE REF TO if_ixml_parser,
    * instance fot renderer
      renderer type ref to if_ixml_renderer,
      irc type i,
      l_xml_size   TYPE i,
    *ROOT ELEMENT
    l_element_MT_DEMANDTEC_COST TYPE REF TO if_ixml_element,
    *NEXT CHILD ELEMENT FROM THE ABOVE PARENT
    l_element_DT_DEMANDTEC TYPE REF TO if_ixml_element,
    *CHILDREN1 ELEMENT FOR DT_DEMANDTEC
    l_element_DT_WHSE  TYPE REF TO if_ixml_element,
    *CHILDREN2 ELEMENT FOR DT_DEMANDTEC
    l_element_DT_DC    TYPE REF TO if_ixml_element,
    *CHILDREN3 ELEMENT FOR DT_DEMANDTEC
    l_element_DT_PLANT    TYPE REF TO if_ixml_element,
    *CHILDREN4 ELEMENT FOR DT_DEMANDTEC
    l_element_DT_QTY    TYPE REF TO if_ixml_element.
    *saving the xml document
      DATA: l_xml_table       TYPE TABLE OF t_xml_line.
      types: begin of t_source,
              whse(5),
              dc(4) ,
              plant(4),
              qty    type i,
             end of t_source.
      types: tt_source TYPE STANDARD TABLE OF t_source.
      data:  wa_source type t_source.
      data: it_source TYPE  tt_source,
            ivalue type string.
    * Procedures and business logic =======================================
    *   Creating the main iXML factory
      l_ixml = cl_ixml=>create( ).
    *   Creating a stream factory
      l_streamfactory = l_ixml->create_stream_factory( ).
    * create input stream
      l_istream = l_streamfactory->create_istream_xstring( source ).
    *  initialize input document
      l_document = l_ixml->create_document( ).
    *  Create a Parser
      l_parser = l_ixml->create_parser( stream_factory = l_streamfactory
                                          istream        = l_istream
                                          document       = l_document ).
    * parse input document
      l_parser->parse( ).
    *   Validate a document
      l_parser->set_validating( mode = if_ixml_parser=>co_validate ).
    *   Parse the stream
      IF l_parser->parse( ) NE 0.
        IF l_parser->num_errors( ) NE 0.
          DATA: parseerror TYPE REF TO if_ixml_parse_error,
                str        TYPE string,
                i          TYPE i,
                count      TYPE i,
                index      TYPE i.
          count = l_parser->num_errors( ).
          WRITE: count, ' parse errors have occured:'.
          index = 0.
          WHILE index < count.
            parseerror = l_parser->get_error( index = index ).
            i = parseerror->get_line( ).
            WRITE: 'line: ', i.
            i = parseerror->get_column( ).
            WRITE: 'column: ', i.
            str = parseerror->get_reason( ).
            WRITE: str.
            index = index + 1.
          ENDWHILE.
        ENDIF.
      ENDIF.
    *   Process the document
      IF l_parser->is_dom_generating( ) EQ 'X'.
        refresh : it_source.
        node ?= l_document.
        CHECK NOT node IS INITIAL.
    *   create a node iterator
        iterator  = node->create_iterator( ).
    *   get current node
        node = iterator->get_next( ).
    *   loop over all nodes
        WHILE NOT node IS INITIAL.
          CASE node->get_type( ).
            WHEN if_ixml_node=>co_node_element.
    *         element node
              name    = node->get_name( ).
              nodemap = node->get_attributes( ).
            WHEN if_ixml_node=>co_node_text.
    *         text node
              value  = node->get_value( ).
              if name eq 'DT_WHSE'.
                wa_source-whse = value.
              ELSEIF name eq 'DT_DC'.
                wa_source-DC = value.
              ELSEIF name eq 'DT_PLANT'.
                wa_source-PLANT = value.
              ELSEIF name eq 'DT_QTY'.
                wa_source-QTY = value.
                COLLECT wa_source INto it_source.
                CLEAR   wa_source.
              ENDIF.
          endcase.
          node = iterator->get_next( ).
        endwhile.
      ENDIF.
      loop at it_source into wa_source .
        at first.
    *       Creating a ixml factory
          o_ixml = cl_ixml=>create( ).
    *       Creating the dom object model
          o_document = l_ixml->create_document( ).
        endat.
    *       Build and Fill  root node MT_DEMANDTEC_COST
        AT FIRST.
          l_element_MT_DEMANDTEC_COST    =
    O_document->create_simple_element(
                                  name   = 'MT_DEMANDTEC_COST'
                                  parent = o_document ).
        ENDAT.
    *      Build and Fill  Child node DT_DEMANDTEC for parent
    *                                                  MT_DEMANDTEC_COST
        l_element_DT_DEMANDTEC    = O_document->create_simple_element(
                                     name   = 'DT_DEMANDTEC'
                                     parent = l_element_MT_DEMANDTEC_COST ).
    *      Build and Fill  Child node1 DT_WHSE for parent DT_DEMANDTEC
        ivalue              = wa_source-WHSE.
        l_element_DT_WHSE    = O_document->create_simple_element(
                                         name   = 'DT_WHSE'
                                         VALUE  = ivalue
                                         parent = l_element_DT_DEMANDTEC  ).
    *      Build and Fill  Child node2 DT_WHSE for parent DT_DEMANDTEC
        ivalue              = wa_source-DC.
        l_element_DT_DC   = O_document->create_simple_element(
                                             name   = 'DT_DC'
                                              VALUE  = ivalue
                                    parent = l_element_DT_DEMANDTEC ).
    *      Build and Fill  Child node3 DT_WHSE for parent DT_DEMANDTEC
        ivalue              = wa_source-PLANT.
        l_element_DT_PLANT   = O_document->create_simple_element(
                                                 name   = 'DT_PLANT'
                                                  VALUE  = ivalue
                                   parent = l_element_DT_DEMANDTEC  ).
    *      Build and Fill  Child node4 DT_QTY for parent DT_DEMANDTEC
        ivalue              = wa_source-QTY.
        l_element_DT_QTY     = O_document->create_simple_element(
                                                 name   = 'DT_QTY'
                                                  VALUE  = ivalue
                                   parent = l_element_DT_DEMANDTEC  ).
      endloop.
    * render document ======================================================
    * create output stream
      o_istream  = l_streamfactory->create_ostream_xstring( result ).
    *   Connect internal XML table to stream factory
      o_istream  = l_streamfactory->create_ostream_itable( table =
    l_xml_table ).
      renderer = o_ixml->create_renderer( ostream = o_istream
                                              document = o_document ).
      irc = renderer->render( ).
    * how do i catch the exception for type CX_SY_REF_IS_INITIAL ...?
    endmethod.
    full reward points for answers.
    Thanks & Regards,
    Uday Kumar.
    Edited by: UDAY on May 6, 2008 9:32 PM

    Hi Uday,
    Its occurs because you're trying to access a objects with null reference. Or you forgot to create an instance or an error occurs during the instance creation. So You should put all your "Procedures and business logic" inside a Try/catch block. as follow.
    " Define a class exception object to get error message......
    DATA o_exception TYPE REF TO cx_sy_ref_is_initial.
    "// Use the statment Try block to catch the error.
    TRY.
    *   Creating the main iXML factory
      l_ixml = cl_ixml=>create( ).
    *   Creating a stream factory
      l_streamfactory = l_ixml->create_stream_factory( ).
    * create input stream
      l_istream = l_streamfactory->create_istream_xstring( source ).
    *  initialize input document
      l_document = l_ixml->create_document( ).
    *  Create a Parser
      l_parser = l_ixml->create_parser( stream_factory = l_streamfactory
                                          istream        = l_istream
                                          document       = l_document ).
    * parse input document
      l_parser->parse( ).
    *   Validate a document
      l_parser->set_validating( mode = if_ixml_parser=>co_validate ).
    *   Parse the stream
      IF l_parser->parse( ) NE 0.
        IF l_parser->num_errors( ) NE 0.
          DATA: parseerror TYPE REF TO if_ixml_parse_error,
                str        TYPE string,
                i          TYPE i,
                count      TYPE i,
                index      TYPE i.
          count = l_parser->num_errors( ).
          WRITE: count, ' parse errors have occured:'.
          index = 0.
          WHILE index < count.
            parseerror = l_parser->get_error( index = index ).
            i = parseerror->get_line( ).
            WRITE: 'line: ', i.
            i = parseerror->get_column( ).
            WRITE: 'column: ', i.
            str = parseerror->get_reason( ).
            WRITE: str.
            index = index + 1.
          ENDWHILE.
        ENDIF.
      ENDIF.
    *   Process the document
      IF l_parser->is_dom_generating( ) EQ 'X'.
        refresh : it_source.
        node ?= l_document.
        CHECK NOT node IS INITIAL.
    *   create a node iterator
        iterator  = node->create_iterator( ).
    *   get current node
        node = iterator->get_next( ).
    *   loop over all nodes
        WHILE NOT node IS INITIAL.
          CASE node->get_type( ).
            WHEN if_ixml_node=>co_node_element.
    *         element node
              name    = node->get_name( ).
              nodemap = node->get_attributes( ).
            WHEN if_ixml_node=>co_node_text.
    *         text node
              value  = node->get_value( ).
              if name eq 'DT_WHSE'.
                wa_source-whse = value.
              ELSEIF name eq 'DT_DC'.
                wa_source-DC = value.
              ELSEIF name eq 'DT_PLANT'.
                wa_source-PLANT = value.
              ELSEIF name eq 'DT_QTY'.
                wa_source-QTY = value.
                COLLECT wa_source INto it_source.
                CLEAR   wa_source.
              ENDIF.
          endcase.
          node = iterator->get_next( ).
        endwhile.
      ENDIF.
      loop at it_source into wa_source .
        at first.
    *       Creating a ixml factory
          o_ixml = cl_ixml=>create( ).
    *       Creating the dom object model
          o_document = l_ixml->create_document( ).
        endat.
    *       Build and Fill  root node MT_DEMANDTEC_COST
        AT FIRST.
          l_element_MT_DEMANDTEC_COST    =
    O_document->create_simple_element(
                                  name   = 'MT_DEMANDTEC_COST'
                                  parent = o_document ).
        ENDAT.
    *      Build and Fill  Child node DT_DEMANDTEC for parent
    *                                                  MT_DEMANDTEC_COST
        l_element_DT_DEMANDTEC    = O_document->create_simple_element(
                                     name   = 'DT_DEMANDTEC'
                                     parent = l_element_MT_DEMANDTEC_COST ).
    *      Build and Fill  Child node1 DT_WHSE for parent DT_DEMANDTEC
        ivalue              = wa_source-WHSE.
        l_element_DT_WHSE    = O_document->create_simple_element(
                                         name   = 'DT_WHSE'
                                         VALUE  = ivalue
                                         parent = l_element_DT_DEMANDTEC  ).
    *      Build and Fill  Child node2 DT_WHSE for parent DT_DEMANDTEC
        ivalue              = wa_source-DC.
        l_element_DT_DC   = O_document->create_simple_element(
                                             name   = 'DT_DC'
                                              VALUE  = ivalue
                                    parent = l_element_DT_DEMANDTEC ).
    *      Build and Fill  Child node3 DT_WHSE for parent DT_DEMANDTEC
        ivalue              = wa_source-PLANT.
        l_element_DT_PLANT   = O_document->create_simple_element(
                                                 name   = 'DT_PLANT'
                                                  VALUE  = ivalue
                                   parent = l_element_DT_DEMANDTEC  ).
    *      Build and Fill  Child node4 DT_QTY for parent DT_DEMANDTEC
        ivalue              = wa_source-QTY.
        l_element_DT_QTY     = O_document->create_simple_element(
                                                 name   = 'DT_QTY'
                                                  VALUE  = ivalue
                                   parent = l_element_DT_DEMANDTEC  ).
      endloop.
    * render document ======================================================
    * create output stream
      o_istream  = l_streamfactory->create_ostream_xstring( result ).
    *   Connect internal XML table to stream factory
      o_istream  = l_streamfactory->create_ostream_itable( table =
    l_xml_table ).
      renderer = o_ixml->create_renderer( ostream = o_istream
                                              document = o_document ).
      irc = renderer->render( ).
    "   The Statement CATCH define a block that catches the exceptions of the
    "   exception class cx_sy_ref_is_initial
        CATCH cx_sy_ref_is_initial INTO o_exception.
    " If you need to get the error message text do as follow
    DATA errorMsg type string.
    " Get the message text
      errorMsg = o_exception->GET_TEXT( ).
    " Display the error information
      MESSAGE errorMsg TYPE 'I'.
      ENDTRY.
    The TRY block defines a guarded area whose class-based exceptions can be caught in the subsequent CATCH blocks. If no exception occurs in the TRY block and it reaches its end, the system continues the processing after ENDTRY. If a class-based exception occurs in the TRY block, the system searches for an exception handler in the same or an external TRY control structure.
    Font: SAP Help
    You can see a how to create and use an exception in this example [ ABAP Objects - Defining a Class-based exceptions|https://wiki.sdn.sap.com/wiki/x/19w] .
    Best Regards.
    Marcelo Ramos

  • Java File not Found Exceptions and other errors?

    Hello experts, an issue on our Portal has caught my attention. Every time the J2EE Engine is restarted, a large amount of errors are written on our Trace files. When looking at the trace files, I see that most errors are Java IO File not Found Exceptions. For example:
    [EXCEPTION]
    #1#java.io.FileNotFoundException: ./log/system/database.1.log (No such file or directory (errno:2))
         at java.io.FileInputStream.open(Native Method)
         at java.io.FileInputStream.<init>(FileInputStream.java:106)
         at java.io.FileInputStream.<init>(FileInputStream.java:66)
         at com.sap.engine.services.log_configurator.archive.ArchivingThread.archiveTask(ArchivingThread.java:77)
         at com.sap.engine.services.log_configurator.archive.ArchivingThread.run(ArchivingThread.java:40)
         at com.sap.engine.frame.core.thread.Task.run(Task.java:64)
         at com.sap.engine.core.thread.impl5.SingleThread.execute(SingleThread.java:79)
         at com.sap.engine.core.thread.impl5.SingleThread.run(SingleThread.java:150)
    #1.5 #0012799E98F6000F0000001800003A9E00044A5F2B9CCDEC#1207672520886#com.sap.engine.services.log_configurator.archive.ArchivingThread##com.sap.engine.services.log_configurator.archive.ArchivingThread######c3cfd920058911dd8ace0012799e98f6#SAPEngine_System_Thread[impl:5]_24##0#0#Error##Java###./log/system/server.1.log (No such file or directory (errno:2))
    [EXCEPTION]
    #1#java.io.FileNotFoundException: ./log/system/server.1.log (No such file or directory (errno:2))
         at java.io.FileInputStream.open(Native Method)
         at java.io.FileInputStream.<init>(FileInputStream.java:106)
         at java.io.FileInputStream.<init>(FileInputStream.java:66)
         at com.sap.engine.services.log_configurator.archive.ArchivingThread.archiveTask(ArchivingThread.java:77)
         at com.sap.engine.services.log_configurator.archive.ArchivingThread.run(ArchivingThread.java:40)
         at com.sap.engine.frame.core.thread.Task.run(Task.java:64)
         at com.sap.engine.core.thread.impl5.SingleThread.execute(SingleThread.java:79)
         at com.sap.engine.core.thread.impl5.SingleThread.run(SingleThread.java:150)
    #1.5 #0012799E98F6000F0000001900003A9E00044A5F2B9CE7BC#1207672520893#com.sap.engine.services.log_configurator.archive.ArchivingThread##com.sap.engine.services.log_configurator.archive.ArchivingThread######c3cfd920058911dd8ace0012799e98f6#SAPEngine_System_Thread[impl:5]_24##0#0#Error##Java###./log/system/security.1.log (No such file or directory (errno:2))
    [EXCEPTION]
    #1#java.io.FileNotFoundException: ./log/system/security.1.log (No such file or directory (errno:2))
         at java.io.FileInputStream.open(Native Method)
         at java.io.FileInputStream.<init>(FileInputStream.java:106)
         at java.io.FileInputStream.<init>(FileInputStream.java:66)
         at com.sap.engine.services.log_configurator.archive.ArchivingThread.archiveTask(ArchivingThread.java:77)
         at com.sap.engine.services.log_configurator.archive.ArchivingThread.run(ArchivingThread.java:40)
         at com.sap.engine.frame.core.thread.Task.run(Task.java:64)
         at com.sap.engine.core.thread.impl5.SingleThread.execute(SingleThread.java:79)
         at com.sap.engine.core.thread.impl5.SingleThread.run(SingleThread.java:150)
    #1.5 #0012799E98F6000F0000001D00003A9E00044A5F2BE5C172#1207672525667#com.sap.engine.services.log_configurator.archive.ArchivingThread##com.sap.engine.services.log_configurator.archive.ArchivingThread######c3cfd920058911dd8ace0012799e98f6#SAPEngine_System_Thread[impl:5]_24##0#0#Error##Java###./log/applications.1.log (No such file or directory (errno:2))
    [EXCEPTION]
    #1#java.io.FileNotFoundException: ./log/applications.1.log (No such file or directory (errno:2))
         at java.io.FileInputStream.open(Native Method)
         at java.io.FileInputStream.<init>(FileInputStream.java:106)
         at java.io.FileInputStream.<init>(FileInputStream.java:66)
         at com.sap.engine.services.log_configurator.archive.ArchivingThread.archiveTask(ArchivingThread.java:77)
         at com.sap.engine.services.log_configurator.archive.ArchivingThread.run(ArchivingThread.java:40)
         at com.sap.engine.frame.core.thread.Task.run(Task.java:64)
         at com.sap.engine.core.thread.impl5.SingleThread.execute(SingleThread.java:79)
         at com.sap.engine.core.thread.impl5.SingleThread.run(SingleThread.java:150)
    In summary, the system cannot find the files server.1.log, security.1.log, database.1.log and applications.1.log. I tried manually adding these files (I created them on my computer and left them empty) on the path written, but it did not work, for some reason they are deleted.
    Another error that is happening during restart of the engine is the following:
    #1.5 #0012799E98F6001B0000002000003A9E00044A5F2BCC28D7#1207672523990#com.sap.tc.logging##com.sap.tc.logging.APILogger.FileLog[setFormatter()]######c3c3f240058911dd9ed80012799e98f6#SAPEngine_System_Thread[impl:5]_10##0#0#Warning##Java###Attempting to change a formatter on active log ./log/system/httpaccess/responses.trc. reset() method must be called first.#1#java.lang.Exception: Attempting to change a formatter on active log ./log/system/httpaccess/responses.trc. reset() method must be called first.
         at com.sap.tc.logging.FileLog.setFormatter(FileLog.java:448)
         at com.sap.engine.services.log_configurator.admin.LogConfigurator.adjustConfiguration(LogConfigurator.java:795)
         at com.sap.engine.services.log_configurator.admin.LogConfigurator.applyConfiguration(LogConfigurator.java:1535)
         at com.sap.engine.services.log_configurator.LogConfiguratorContainer.prepareStart(LogConfiguratorContainer.java:545)
         at com.sap.engine.services.deploy.server.application.StartTransaction.prepareCommon(StartTransaction.java:223)
         at com.sap.engine.services.deploy.server.application.StartTransaction.prepareLocal(StartTransaction.java:176)
         at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhasesLocal(ApplicationTransaction.java:365)
         at com.sap.engine.services.deploy.server.application.ParallelAdapter.runInTheSameThread(ParallelAdapter.java:132)
         at com.sap.engine.services.deploy.server.application.ParallelAdapter.makeAllPhasesLocalAndWait(ParallelAdapter.java:250)
         at com.sap.engine.services.deploy.server.DeployServiceImpl.startApplicationLocalAndWait(DeployServiceImpl.java:4450)
         at com.sap.engine.services.deploy.server.DeployServiceImpl.startApplicationsInitially(DeployServiceImpl.java:2610)
         at com.sap.engine.services.deploy.server.DeployServiceImpl.clusterElementReady(DeployServiceImpl.java:2464)
         at com.sap.engine.services.deploy.server.ClusterServicesAdapter.containerStarted(ClusterServicesAdapter.java:42)
         at com.sap.engine.core.service630.container.ContainerEventListenerWrapper.processEvent(ContainerEventListenerWrapper.java:144)
         at com.sap.engine.core.service630.container.AdminContainerEventListenerWrapper.processEvent(AdminContainerEventListenerWrapper.java:19)
         at com.sap.engine.core.service630.container.ContainerEventListenerWrapper.run(ContainerEventListenerWrapper.java:102)
         at com.sap.engine.frame.core.thread.Task.run(Task.java:64)
         at com.sap.engine.core.thread.impl5.SingleThread.execute(SingleThread.java:79)
         at com.sap.engine.core.thread.impl5.SingleThread.run(SingleThread.java:150)
    Any ideas?

    Nothing really seemed to work when trying to solve this problem, just suddenly it stopped appearing. It might have been our installation of SPS 15, since it was around that time that the error went away.

  • Why do I need to catch this exception?

    Hello all
    This is a question about exception handling. I have to build a diary application that lets you save reminders on particular dates using xml. Just to make it a little tougher, I was not allowed to use the Calendar class. This is the code I wrote:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;
    import java.text.*; 
    import javax.xml.parsers.*;
    import org.xml.sax.*;
    import java.io.*;     
    import org.w3c.dom.*;
    import javax.xml.transform.*;
    import javax.xml.transform.dom.*;
    import javax.xml.transform.stream.*;                                                                                                                                                                                                                         
    import static java.lang.Math.*;
    public class CalendarAssignment extends JFrame implements ActionListener
         int MonthLength [] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
         public JButton [] days = new JButton[43];
         private JLabel lbl, reminderlbl;
         private JPanel top, grid, remindercenter, reminderbottom;
         private JFrame reminderframe;
         private JTextField year1, reminderinput, dayno;
         private JComboBox months;
         private Container container;
         private JButton fetch, save, cancel;
         private Document doc;
         private File file;
         private Node node;
         private String year, month, day;
              public static void main( String[] args ) {
                   CalendarAssignment c = new CalendarAssignment( );
                   c.setSize( 400, 300 );
                   c.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
                   c.show( );
              public CalendarAssignment( ) {
                   int CurrentYear, CurrentMonth;
                   String YearString, MonthString, Now;
                   Date today;
                   container = getContentPane( );
                   container.setLayout( new BorderLayout( ) );
                   SimpleDateFormat DateFormatter;
                   DateFormatter = new SimpleDateFormat( "MM.yyyy" );
                   today = new Date( );
                   Now = DateFormatter.format( today );
                   MonthString = Now.substring( 0,2 );
                   YearString = Now.substring( 3,7 );
                   CurrentMonth = Integer.valueOf( MonthString );
                   CurrentYear = Integer.valueOf( YearString );
                   top = new JPanel( );
                        String [] items = { "January", "February", "March", "April", "May", "June",
                                      "July", "August", "September", "October", "November",
                                      "December" };
                        months = new JComboBox( items );
                        months.setEditable( false );
                        months.setSelectedIndex( CurrentMonth - 1 );          
                        year1 = new JTextField( );
                        year1.setText( YearString );
                        year1.setEditable( true );
                        year1.setHorizontalAlignment( year1.CENTER );
                        fetch = new JButton( "Fetch Month" );
                        fetch.addActionListener( this );
                        top.setLayout( new GridLayout( 1, 3, 20, 0 ) );
                        top.add( months );
                        top.add( year1 );
                        top.add( fetch );
                   grid = new JPanel( );
                        grid.setLayout( new GridLayout( 7, 7, 0, 0 ) );
                        String [] week = { "Mon", "Tue", "Wed", "Thur", "Fri", "Sat", "Sun" };
                        for ( int a = 0; a < 7; a ++ ) {
                                  JLabel lbl = new JLabel( week[a], JLabel.CENTER );
                                  grid.add( lbl );
                        for ( int i = 0; i < 42; i ++ ) {
                                  days[i] = new JButton( );
                                  grid.add( days[i] );
                                  days.addActionListener( this );
                        DrawCalendar( CurrentMonth, CurrentYear );
                        container.add( top, BorderLayout.NORTH );
                        container.add( grid, BorderLayout.CENTER );
              private void DrawCalendar( int SelectMonth, int SelectYear ) {
                        int DisplayMonthLength, Buttons;
                        String ButtonID = "";
                        int OffSet = MonthStart( SelectMonth, SelectYear );
                        DisplayMonthLength = MonthLength [SelectMonth - 1];
                        if ( SelectMonth == 2 )
                             DisplayMonthLength += LeapYear( SelectYear );
                        for ( Buttons = 1; Buttons < 43; Buttons ++ ) {
                             if ( ( Buttons <= OffSet ) || ( Buttons > ( DisplayMonthLength + OffSet ) ) ) {
                                  ButtonID = "";
                                  days[Buttons-1].setEnabled( false );
                             else {
                                  ButtonID = Integer.toString( Buttons - OffSet );
                                  days[Buttons-1].setEnabled( true );
                        days[Buttons-1].setLabel( ButtonID );
                        grid.add( days[Buttons-1] );
              private int LeapYear( int year ) {
                        int FourHundred, OneHundred, Fourth;
                        FourHundred = year % 400;
                        OneHundred = year % 100;
                        Fourth = year % 4;
                        if( ( ( FourHundred == 0 ) ) || ( ( OneHundred != 0 ) && ( Fourth == 0 ) ) )
                             return ( 1 );
                        else
                             return ( 0 );
              private int MonthStart( int Month, int Year ) {
                        int OffSet, LastMonths, BeforeOrAfter, Years;
                        int AllDays = 0;
                        int YearDays = 365;
                        int YearMonths = 12;
                        BeforeOrAfter = Year - 2006;
                        Years = abs( BeforeOrAfter );
                        if( BeforeOrAfter != 0 )
                             BeforeOrAfter = BeforeOrAfter / Years;
                        switch( BeforeOrAfter ) {
                             case 1:
                                  for( int a = 2006; a < Year; a ++ ) {
                                       AllDays += YearDays + LeapYear( a );
                                  AllDays += LastMonthsCalc( Month, Year );
                             break;
                             case -1:
                                  for( int a = 2005; a > Year; a -- ) {
                                       AllDays += YearDays + LeapYear( a );
                                  for( LastMonths = YearMonths; LastMonths >= Month; LastMonths -- ) {
                                       AllDays += MonthLength[LastMonths - 1];
                                       if( LastMonths == 2 )
                                            AllDays += LeapYear( Year );
                             break;
                             default:
                                  if( Month > 1 )
                                       AllDays += ( LastMonthsCalc( Month, Year ) );
                        OffSet = AllDays % 7;
                        if( BeforeOrAfter ==( -1 ) )
                             return( 6 - OffSet );
                        else if( OffSet > 0 )
                             return( OffSet - 1 );
                        else
                             return( 6 );
              private int LastMonthsCalc( int Month, int Year ) {
                        int Counter;
                        int days = 0;
                        for( Counter = 1; Counter < Month; Counter ++ ) {
                             days += MonthLength[Counter - 1];
                             if( Counter == 2 )
                                  days += LeapYear( Year );
                        return( days );
              public void CreateReminder( String buttonID, String yearID, String monthID ) {
                        reminderframe = new JFrame( );
                        reminderlbl = new JLabel( );
                        reminderframe.setLayout( new GridLayout( 2, 1, 0, 0 ) );
                        remindercenter = new JPanel( );
                             reminderlbl = new JLabel( "Please type in reminder to be saved for " + buttonID + " " + monthID + " " + yearID + ":", JLabel.CENTER );
                             reminderinput = new JTextField( 30 );
                             reminderinput.setHorizontalAlignment( reminderinput.CENTER );
                             reminderinput.setEditable( true );
                             remindercenter.setLayout( new GridLayout( 2, 1, 0, 0 ) );
                             remindercenter.add( reminderlbl );
                             remindercenter.add( reminderinput );
                        reminderbottom = new JPanel( );
                             save = new JButton( "Save" );
                             save.addActionListener( this );
                             cancel = new JButton( "Cancel" );
                             cancel.addActionListener( this );
                             dayno = new JTextField( buttonID );
                             dayno.setEditable( false );
                             dayno.setEnabled( false );
                             dayno.show( false );
                             reminderbottom.setLayout( new FlowLayout( ) );
                             reminderbottom.add( save );
                             reminderbottom.add( cancel );
                             reminderbottom.add( dayno );
                        reminderframe.setSize( 500, 75 );
                        reminderframe.add( remindercenter );
                        reminderframe.add( reminderbottom );
                        reminderframe.pack( );
                        reminderframe.show( );
              public void SaveReminder( String dayID, String yearID, String monthID ) throws Exception {
                        file = new File( "Diary.xml" );
                        doc = DocumentBuilderFactory.newInstance( ).newDocumentBuilder( ).parse( file.toURL( ).toString( ) );
                        String year = yearID;
                        String month = monthID;
                        String day = dayID;
                        //System.out.println( year );
                        //System.out.println( month );
                        //System.out.println( day );
                        CreateEntry( doc.getDocumentElement( ) );
                        writeXmlFile( );
              public boolean CreateEntry( Node node ) {
                        Node searchNode;
                        searchNode = getYear( node );
                        if( searchNode == null ) {
                             Element newNode = doc.createElement( "Year" );
                             searchNode = node.appendChild( newNode );
                             newNode.setAttribute( "Id", year );
                        node = searchNode;
                        searchNode = getMonth( node );
                        if( searchNode == null ) {
                             Element newNode = doc.createElement( "Month" );
                             searchNode = node.appendChild( newNode );
                             newNode.setAttribute( "Id", month );
                        node = searchNode;
                        searchNode = getDay( node );
                        if( searchNode == null ) {
                             Element newNode = doc.createElement( "Day" );
                             searchNode = node.appendChild( newNode );
                             newNode.setAttribute( "Id", day );
                        node = searchNode;
                        String entry = reminderinput.getText( );
                        Node textNode = doc.createTextNode( entry );
                        node.appendChild( textNode );
                        return true;
              private Node getYear( Node node ) {
                        node = node.getFirstChild( );
                        while( node != null ) {
                             if(node.getNodeName( ).equals( "Year" ) && String.valueOf( node.getAttributes( ).item( 0 ).getNodeValue( ) ) == year )
                                  return node;
                                  node = node.getNextSibling( );                    
                        return null;
              private Node getMonth( Node node ) {
                        node = node.getFirstChild( );
                        while( node != null ) {
                             if( node.getNodeName( ).equals( "Month" ) && String.valueOf( node.getAttributes( ).item( 0 ).getNodeValue( ) ) == month )
                                  return node;
                                  node = node.getNextSibling( );                    
                        return null;
              private Node getDay( Node node ) {
                        node = node.getFirstChild( );
                        while( node != null ) {
                             if( node.getNodeName( ).equals( "Day" ) && String.valueOf( node.getAttributes( ).item( 0 ).getNodeValue( ) ) == day )
                                  return node;
                                  node = node.getNextSibling( );                    
                        return null;
              private void writeXmlFile( ) throws Exception {
                   Source source = new DOMSource( doc );
                        Result result = new StreamResult( file );
                   Transformer xformer = TransformerFactory.newInstance( ).newTransformer( );
                   xformer.setOutputProperty( OutputKeys.INDENT,"yes" );
                   xformer.setOutputProperty( OutputKeys.DOCTYPE_SYSTEM,"Diary.dtd" );
                   xformer.transform( source, result );
              public void actionPerformed( ActionEvent e ) {
                        String IDButton = e.getActionCommand( );
                        String IDYear = year1.getText( );
                        Object IDMonthObj = months.getSelectedItem( );
                        if( e.getSource( ) == fetch ) {
                             String YearText = year1.getText( );
                             int YearNumber = Integer.valueOf( YearText );
                             int MonthsIndex = months.getSelectedIndex( ) + 1;
                             DrawCalendar( MonthsIndex, YearNumber );
                        else if( e.getSource( ) == cancel ) {
                             reminderframe.hide( );
                        else if( e.getSource( ) == save ) {
                             String IDDay = dayno.getText( );
                             String IDMonth = String.valueOf( IDMonthObj );
                             SaveReminder( IDDay, IDYear, IDMonth );
                        else {
                             String IDMonth = String.valueOf( IDMonthObj );
                             Toolkit.getDefaultToolkit( ).beep( );
                             int n = JOptionPane.showConfirmDialog( null, "Set reminder on this date?", "Question", JOptionPane.YES_NO_OPTION );
                             if( n == JOptionPane.YES_OPTION ) {
                                  CreateReminder( IDButton, IDYear, IDMonth );
    If you compile it, you will realise that I get an error about exception handling. My lecturer gave me an example code of how to do the same thing without using a GUI:
    import javax.xml.parsers.*;
    import org.xml.sax.*;
    import java.io.*;
    import java.util.*;
    import org.w3c.dom.*;
    import javax.xml.transform.*;
    import javax.xml.transform.dom.*;
    import javax.xml.transform.stream.*;
    public class CallDOM
         Document doc;
         File file;
         Scanner input;
         int year, month, day;
         String currentYear, currentMonth;
         public static void main(String args[]) throws Exception
              CallDOM cd=new CallDOM();          
         CallDOM() throws Exception
              file=new File("Diary.xml");
              //create DOM from file
              doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file.toURL().toString());
              input=new Scanner(System.in);
              System.out.println("1) Create entry");
              System.out.println("2) Read entry");
              System.out.println("3) Show Diary");
              System.out.println("4) Quit");
              int choice=input.nextInt();
              while(choice!=4)
                   switch(choice)
                        case 1: GetDate();CreateEntry(doc.getDocumentElement());break;
                        case 2: GetDate();ReadEntry(doc.getDocumentElement());break;
                        case 3: ShowDiary(doc.getDocumentElement());
                   System.out.println("1) Create entry");
                   System.out.println("2) Read entry");
                   System.out.println("3) Show Diary");
                   System.out.println("4) Quit");
                   choice=input.nextInt();
              writeXmlFile();
         public void GetDate()
              System.out.println("Enter date (dd mm yyyy)");
              day=input.nextInt();
              month=input.nextInt();
              year=input.nextInt();
         public boolean ReadEntry(Node node)
              node = getYear(node);
              if(node==null) return false;
              node = getMonth(node);
              if(node==null) return false;
              node = getDay(node);
              if(node==null) return false;
              node = node.getFirstChild();
              while(node!=null)
                   System.out.println(node.getNodeValue().trim());     
                   node=node.getNextSibling();
              return true;               
         public boolean CreateEntry(Node node)
              Node searchNode;
              searchNode = getYear(node);
              if(searchNode==null)
                   Element newNode = doc.createElement("Year");
                   searchNode = node.appendChild(newNode);
                   newNode.setAttribute("Id",Integer.toString(year));
              node = searchNode;
              searchNode = getMonth(node);
              if(searchNode==null)
                   Element newNode = doc.createElement("Month");
                   searchNode = node.appendChild(newNode);
                   newNode.setAttribute("Id",Integer.toString(month));
              node = searchNode;
              searchNode = getDay(node);
              if(searchNode==null)
                   Element newNode = doc.createElement("Day");
                   searchNode = node.appendChild(newNode);
                   newNode.setAttribute("Id",Integer.toString(day));
              node = searchNode;
              System.out.println("Enter Text");
              String entry=input.next();
              entry+=input.nextLine();
              Node textNode = doc.createTextNode(entry);
              node.appendChild(textNode);
              return true;               
         public void ShowDiary(Node node)
              Stack<Node> stack=new Stack<Node>();
              Node child;
              stack.push(node);
              while(!stack.empty())
                   node = stack.pop();
                   if(ProcessNode(node))
                        child = node.getLastChild();
                        while(child!=null)
                             stack.push(child);
                             child = child.getPreviousSibling();
         private boolean ProcessNode(Node node)
              if(node.getNodeName().equals("Year"))
                   currentYear=node.getAttributes().item(0).getNodeValue();
              if(node.getNodeName().equals("Month"))
                   currentMonth=node.getAttributes().item(0).getNodeValue();
              if(node.getNodeName().equals("Day"))
                   System.out.print(node.getAttributes().item(0).getNodeValue()+"/"+
                                            currentMonth+"/"+currentYear+": ");
                   node=node.getFirstChild();
                   while(node!=null)
                        System.out.println(node.getNodeValue().trim());
                        node=node.getNextSibling();
                   return false;
              return true;               
         private Node getYear(Node node)
              node=node.getFirstChild();
              while(node!=null)
                   if(node.getNodeName().equals("Year")
                        && Integer.valueOf(node.getAttributes().item(0).getNodeValue())==year)
                             return node;
                   node = node.getNextSibling();                    
              return null;
         private Node getMonth(Node node)
              node=node.getFirstChild();
              while(node!=null)
                   if(node.getNodeName().equals("Month")
                        && Integer.valueOf(node.getAttributes().item(0).getNodeValue())==month)
                        return node;
                   node = node.getNextSibling();                    
              return null;
         private Node getDay(Node node)
              node=node.getFirstChild();
              while(node!=null)
                   if(node.getNodeName().equals("Day")
                        && Integer.valueOf(node.getAttributes().item(0).getNodeValue())==day)
                        return node;
                   node = node.getNextSibling();                    
              return null;
         private void writeXmlFile() throws Exception
            Source source = new DOMSource(doc);
            Result result = new StreamResult(file);
            Transformer xformer = TransformerFactory.newInstance().newTransformer();
            xformer.setOutputProperty(OutputKeys.INDENT,"yes");
            xformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,"Diary.dtd");
            xformer.transform(source, result);
    }My question is, why does the exceptions in the example code not need to be caught? And why do I have to catch the exceptions in my code? Several exceptions are thrown in the example code, but there is no catch statement.
    Thanks for any advice!!

    Since your question didn't come with any relevant details, and since you have huge steaming piles of irrelevant code, all I can give is a general answer to "Why do I need to catch this exception?"
    [url http://java.sun.com/docs/books/tutorial/essential/exceptions/index.html]Exception tutorial at http://java.sun.com/docs/books/tutorial/essential/exceptions/index.html
    Here's a quick overview of exceptions:
    The base class for all exceptions is Throwable. Java provides Exception and Error that extend Throwable. RuntimeException (and many others) extend Exception.
    RuntimeException and its descendants, and Error and its descendants, are called unchecked exceptions. Everything else is a checked exception.
    If your method, or any method it calls, can throw a checked exception, then your method must either catch that exception, or declare that your method throws that exception. This way, when I call your method, I know at compile time what can possibly go wrong and I can decide whether to handle it or just bubble it up to my caller. Catching a given exception also catches all that exception's descendants. Declaring that you throw a given exception means that you might throw that exception or any of its descendants.
    Unchecked exceptions (RuntimeException, Error, and their descendants) are not subject to those restrictions. Any method can throw any unchecked exception at any time without declaring it. This is because unchecked exceptions are either the sign of a coding error (RuntimeException), which is totally preventable and should be fixed rather than handled by the code that encounters it, or a problem in the VM, which in general can not be predicted or handled.

  • Exception Processing Question -Reply

    I don't use Forte (yet--that's why I joined the mailing list), but since your
    question is a generic "engineering practices" question, I'll chime in. I do
    use exceptions both in C++ in Delphi, and have developed some opinions
    about how to use them:
    - Use exceptions for handling "behavior unexpected in the normal course
    of your algorithm". In other words, instead of returning error codes
    when something goes wrong, throw an exception.
    One example of this is in a parser: if you get an illegal token, just throw
    an exception.
    - When you need to make a choice based on a return status, don't throw
    an exception. In the parser example, if you get token 'A', you need to do
    one thing and if you get token 'B' you need to do another.
    - There's a fine distinction between "handling an error" and "making a
    choice", and there are cases where you could argue one way or the
    other. I'd say that an error throws an exception when it would normally
    terminate the normal flow of execution. For example, "out of memory" or
    "illegal token".
    - Catch exceptions at "high level" process start/end points, or where it is
    required to clean up resources held and rethrow.
    - Don't catch exceptions in every single method--it defeats the purpose.
    User Interfaces:
    - If your user-interface dictates a logical place to unwind no further,
    catch exceptions there. For example: In the Windows world most apps
    are a window with a menu. If you pull down and pick a menu item to
    execute a command, and that command throws an exception, the
    exception should be caught, a modal message box indicating the error
    should be presented, and then when the user clicks "ok", the program
    returns to its normal waiting state with the window intact.
    - If you have a modal dialog up, throwing an exception should either stop
    at the dialog's event loop or take the dialog down with it.
    I'd say that on-screen data validation should NOT use exceptions
    because "user typing invalid data" is expected behavior for a UI.
    Besides, the UI designer should be smart enough to deal with giving you
    a good model for data validation. OTOH, if you take the data out of the
    dialog and then pass the information as parameters to a function, and
    that function can't handle one of the parameter values, it should throw an
    exception.
    Nevertheless, if your dialog runs out of memory for some reason, it
    should throw an exception and the dialog should come down.
    Hope this helps.
    -- Conrad Herrmann
    Jerry Fatcheric <[email protected]> 07/24/96 03:29am >>>
    I have a toss up question for 50 points -
    We have finished the first phase of our project and have place
    exception processing in the places where we saw exceptions could be
    raise. But what about those other exceptional exceptions?
    Is this just good programming practice to have a high level generic
    exception handler (and what should it really do??) or is it critical.
    In addition, when handling data validation on specific widgets on a
    screen (e.g. the account number entered must be one of the existing
    10,000 valid ones), should this be handled via exception processing or
    should it just be handled with code in the event loop?
    Any opinions - please I don't want to hear the Forte Party line.
    I would like to hear opinions based upon real experience.
    Jerry Fatcheric
    Relational Options, Inc.
    Florham Park, New Jersey
    201-301-0200
    201-301-00377 (FAX) [email protected]

    We have finished the first phase of our project and have place
    exception processing in the places where we saw exceptions could
    be raise. But what about those other exceptional exceptions?
    Is this just good programming practice to have a high level
    generic exception handler (and what should it really do??) or
    is it critical.IMHO, you need to program for these ones that could occur because
    if you don't the exception will still happen except without
    your normal graceful (or standard) approach manner. I think it is good programming
    practice to trap on the ones you think can possible occur if they require
    something different in how they react. Otherwise, use of GenericException
    with a proper response is called for.
    >
    In addition, when handling data validation on specific widgets
    on a screen (e.g. the account number entered must be one of the
    existing 10,000 valid ones), should this be handled via exception
    processing or should it just be handled with code in the event loop?
    I use event loop processing because most of the time I am also
    keeping the user on the same widget after cancelling all events
    posted. So, in effect they are back where they started from.
    Any opinions - please I don't want to hear the Forte Party line.
    I would like to hear opinions based upon real experience.
    Jerry Fatcheric
    [email protected]@Sagesoln.com
    my 2 cents, or should I say my attempt at 50 points, Jerry.
    Len Leber
    ATG Partners

  • BPM Transformation Error not Raising Exceptions

    Hi,
    I've got a BPM receives a message, then call a transformation step and then send the message.  I've created exception branches for the transformation and send steps.  If the message mapping called in the transformation step works, the message is send, no problems.  If a message mapping exception occurs, for example a string index out of bounds, the exception branch is not executed.  Instead the BPM continues to the send step and an error occur because of the empty container element.(the container is empty because the mapping fails).  SAP Help states that an exception is "Thrown when a permanent system error occurs" in the Transformation step.  My question is what exactly is a permanent system error if normal message mapping exceptions is not a permanent system error?  And also, how do I generate a permanent system error when a message mapping exception is thrown in order for the exception branch in my BPM to execute?
    Any suggestions will be appreciated.

    I dont think there is a direct way to raise such error in mapping
    What is the sxi_cache status for ur integration process?
    Here r the steps for which permanent error is thrown
    http://help.sap.com/saphelp_nw04s/helpdata/en/33/4a773f12f14a18e10000000a114084/frameset.htm
    Regards,
    Prateek

  • FORALL Exception handling problem

    Hi All,
    I have one doubt in forall exception handling. I have gone through the SAVE EXCEPTION for bulk collect but i have one more query
    BEGIN
    FORALL j IN l_tab.first .. l_tab.last
    INSERT INTO exception_test
    VALUES (l_tab(i));
    EXCEPTION
    END;
    My requirement is when an exception occurs, i ant to print the values of the collection.
    e.g. say l_tab (j).emp_number, l_tab (j).emp_id.
    How is that possible?
    Thanks
    Samarth
    Edited by: 950810 on Mar 12, 2013 7:28 PM

    >
    I have one doubt in forall exception handling. I have gone through the SAVE EXCEPTION for bulk collect but i have one more query
    BEGIN
    FORALL j IN l_tab.first .. l_tab.last
    INSERT INTO exception_test
    VALUES (l_tab(i));
    EXCEPTION
    END;
    My requirement is when an exception occurs, i ant to print the values of the collection.
    e.g. say l_tab (j).emp_number, l_tab (j).emp_id.
    How is that possible?
    >
    Post the code you are using. You didn't post the FORALL that is using SAVE EXCEPTIONS.
    The SQL%BULK_EXCEPTIONS associative array that you get has the INDEX of the collection element that caused the exception.
    So you need to use those indexes to index into the original collection to get whatever values are in it.
    One index from the exception array is:
    SQL%BULK_EXCEPTIONS(i).error_index So if your original collection is named 'myCollection' you would reference that collection value as:
    myCollection(SQL%BULK_EXCEPTIONS(i).error_index); See 'Handling FORALL Exceptions (%BULK_EXCEPTIONS Attribute)' in the PL/SQL Language doc
    http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/tuning.htm#i49099
    >
    All exceptions raised during the execution are saved in the cursor attribute %BULK_EXCEPTIONS, which stores a collection of records. Each record has two fields:
    %BULK_EXCEPTIONS(i).ERROR_INDEX holds the iteration of the FORALL statement during which the exception was raised.
    %BULK_EXCEPTIONS(i).ERROR_CODE holds the corresponding Oracle Database error code.
    The values stored by %BULK_EXCEPTIONS always refer to the most recently executed FORALL statement. The number of exceptions is saved in %BULK_EXCEPTIONS.COUNT. Its subscripts range from 1 to COUNT.
    The individual error messages, or any substitution arguments, are not saved, but the error message text can looked up using ERROR_CODE with SQLERRM as shown in Example 12-9.
    You might need to work backward to determine which collection element was used in the iteration that caused an exception. For example, if you use the INDICES OF clause to process a sparse collection, you must step through the elements one by one to find the one corresponding to %BULK_EXCEPTIONS(i).ERROR_INDEX. If you use the VALUES OF clause to process a subset of elements, you must find the element in the index collection whose subscript matches %BULK_EXCEPTIONS(i).ERROR_INDEX, and then use that element's value as the subscript to find the erroneous element in the original collection.

  • Exception Aggregation (Average of all values 0)  -  Non cumulative KF

    Hi Experts,
    I am using the Exception Aggregation (Average of all values <> 0) on a Non Cumulative KF. Most of the times i am not getting the desired results but some times it gives me the desired result.
    my doubt is whether we can use  Exception Aggregation on Non cumulatives?????
    Thanks for any help
    boobal

    Hi,
    Non-cumulative valuesare those key figures that are measured in relation to a period in time; that is to say they cannot be meaningfully cumulated over time. Non-cumulative values are summarized over time using so-called exception aggregation.
    Example:stock quantities/-values, number of employees, account balances, etc.
    Please check this document:
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/d61b1e95-0501-0010-dfbe-a03970712ef1
    Hope this helps.
    Regards,
    Mona
    Edited by: Mona Kapur on Jan 17, 2008 10:45 AM

  • In which of the following sections of a PL/SQL block is a user-defined exception raised?

    Hi,
    A (somewhat elementary) question:
    In which of the following sections of a PL/SQL block is a user-defined exception raised?
    a) Exception section
    b) Declarative section
    c) Error handling section
    d) Executable section
    I'd be interested to hear people's answers.
    Thanks.

    As Etbin already noted, there are only 3 sections and user-defined exception can be raised in any of them. User-defined exception raised in declarative section example:
    declare
        year_zero exception;
        pragma exception_init(year_zero,-01841);
    begin
        declare
            v_dt date := to_date(1721420,'j');
        begin
            null;
        end;
      exception
        when year_zero
          then
            dbms_output.put_line('Year 0!');
    end;
    Year 0!
    PL/SQL procedure successfully completed.
    SQL>
    User-defined exception raised in executable section example:
    declare
        year_zero exception;
        pragma exception_init(year_zero,-01841);
        v_dt date;
    begin
        v_dt := to_date(1721420,'j');
      exception
        when year_zero
          then
            dbms_output.put_line('Year 0!');
    end;
    Year 0!
    PL/SQL procedure successfully completed.
    SQL>
    User-defined exception raised in exception handling section example:
    declare
        year_zero exception;
        pragma exception_init(year_zero,-01841);
        v_dt date;
    begin
        declare
            v_num number;
        begin
            v_num := 1 / 0;
          exception
            when others
              then
                v_dt := to_date(1721420,'j');
        end;
      exception
        when year_zero
          then
            dbms_output.put_line('Year 0!');
    end;
    Year 0!
    PL/SQL procedure successfully completed.
    SQL>
    SY.

  • Question on Exception

    Folks -
          I am facing the following situation with which some of you might be able to help me. I am building a report that has exceptions defined in it for a calculated key figure. This CKF can is calculated as % and can have both positive and negative values.
        The requirement is that the user would enter a % value as variable (lets say he enters 10% when the query refreshes) and based on the value he entered the exceptions should show up on this CKF such that...
    <b>Value of CKF</b>                      <b>Color</b>
               0 %                                      Green
            0.01 to 10 % (variable)              Yellow
            10.01 to 100 %                          Red
    This was easily achieved. But the problem is with the negative values of the CKF! The user wants the color coding even on the negative values such that...
    <b>Value of CKF</b>                      <b>Color</b>
            -100 to -10 %                              Red
            -10 to -0.01 %                           Yellow
            How can I achieve this functionality by using only one variable entry ??? I am looking for an option which does not involve a user exit variable.

    Hi Amol -
          Thanks for your reply. The requirement is such that the user would enter only value for one variable (+ve value like 10%). Using this +ve number, how can I define an exception for the -ve values ?? Like I said above, the exception in this example should be ...
    CKF Value -
    Color
    -100 to -10 -
      Red
    -10 to -0.01  ---  Yellow
          Where 10 is just a arbitrary value and hence have to use variable here. I can achieve this by using two variables...one for +ve values and the other input for -ve value. Please let me know if I am not clear with the requirement.

  • Exceptions on Port Load

    Hi all
    We are loading using Port and we have some issues with data for a date field. What we would like to do is load all records that are correct and then reprocess only the records that have an invalid date later. e.g 5000 records with 25 records in error. We want to reprocess only the 25 records.
    What I have seen so far is that we can block the port (optional setting, mds) but are forced to reprocess all the (5000) records fixing the error for the 25 records and then running to Import Manager create the 25 that were in error and skip the 4475 others.
    Is this the only way?
    Any suggestion?
    Rgs
    C

    Hi ya
    the date value is incorrect. We can convert in import manager and save this conversion as part of out map but this would would mean that we would have to process every incorrect value in the load like this which we don't want to do
    The inmport server will reject to records that have this error but we still have to process all the file that was imported via the port if we want to correct the exceptions. Another example: So if we load in the port a file with 200,000 records and 800 are in error, what I have seen so far is that you need to reprocess the complete file of 200,000 and correct to 800.
    What we want is just to isolate the 800 are reprocess at a later stage.

  • Exceptions vs user messages

    There is a thing in connection to exception handling in GUI applications that I have been thinking on at some times: Where/how to produce user messages for exceptions that may occur somewhere in the business logic?
    The best guidelines I have read about how to use exceptions in a reasonable way is the chapter about exceptions in the book Effective Java Programming Language Guide. An excellent book for people that like to write high quality code! Some advices state that exceptions should be used for exceptional things that we have to expect and that they should contain information that helps doing debug. And that we should use runtime exceptions for programming errors. This is good! This was a help for me to not hate exceptions as I did before : ) but instead use them to create robust code. But what I not yet understand is where the user messages fit in to this? Or have I not yet found a design for it that I like enough yet. With user messages do I think on clear messages to display to the user, not the type of messages in exceptions that is for developers to support debug.
    If for example a FileNotFoundException is thrown somewhere down in my business logic, an error we must expect because the user may have deleted the file since the last time we used it, where and how do I then produce the exception to be displayed in the GUI?
    Some possible answers ...
    Wrap the exception in a new MyUserException that is used for all exceptional situations that should result in a user message with the user message as the detail message for the exception? I don�t like it. I want specific exceptions for specific error situations and it looks more right to decide whether an exception should be displayed to the user or not in a higher level close to the GUI.
    Put an error code in a MyErrorCodeException and use that for all exception handling. The error code do I then use to pick a localized message from some table. I don�t like to have my own exception hierarchy either. Often are there already a useful exception in the Java API and error codes adds clutter.
    So what should I do with my FileNotFoundException? Just let it pass through all the way up until I can use the failure information in it to compose a user message? This is what I feel most "right" but it is not always that simple as with a exception that so clearly tell what have happened as "FileNotFound"Exception does.
    I want to define my user messages in a properties file and access them from a resource bundle to be able to localize them. But where and how should I map them to thrown exceptions? It would interesting to listen on opions from others about this!

    JonnyAndersson wrote:
    jschell wrote:
    JonnyAndersson wrote:
    If for example a FileNotFoundException is thrown somewhere down in my business logic, an error we must expect because the user may have deleted the file since the last time we used it, where and how do I then produce the exception to be displayed in the GUI?Why is that an exception?If it not where an exception would it be a programming error, which then should cause a runtime exception. This is in line with the guidelines in the excellent book Effective Java Programming Language Guide. Errors you must expect, for example that a user could have deleted the file your business logic is going to read from, should it be announced using checked exceptions. You can't always assume that the file is there in your code. But errors that you could avoid using code should be avoided and if you not follow the rules should a runtime exception be thrown.
    No.
    There is a difference between an exception and a normal process flow. The fact that an expected flow results in you telling the user that something is wrong doesn't make it an exception.
    For example if you are playing a game and your space ship blows up because you overheated the engines then that is not an exception. You programmed the game such that the engines overheating was an expected condition.
    So, again, in your application there are two possibilities when you say that the user deleted the file.
    1. You expect the user to delete the file. Maybe because there is a delete button on a dialog somewhere.
    2. You don't expect the user to delete the file. Just like you don't expect them to delete your jar file.
    The first case is expected behavior. The second isn't.
    They are different so you treat them differently.
    >>
    I want to define my user messages in a properties file and access them from a resource bundle to be able to localize them.That doesn't sound like exceptions to me.The message in exceptions is meant for developers that are tracking what have happened. In the business logic do you not know from where your code is called. Otherwise is it less reusable. But exceptions that have popped up all the way to the user view should be displayed with a message, preferably a localized message, that is understandable for a user that probably not is a developer. And that message is therefore preferably defined in a resource bundle.Definitely not.
    The developers at my company do not speak nor read japanese. So it absolutely pointless to have artifacts that developers must deal with in other languages.
    Conversely when the user incorrectly types their password/user name into the system then the message that pops up must be readable by the users. And the developers should never need to see that because they expect that behavior.
    User messages must originate from known sources. Otherwise you have no possibility of translating it in a usable way and in all likelyhood it won't be useable in the original language either.
    >
    The big question is how to map the defined user messages to thrown (checked) exceptions? A problem is that exceptions seldom contains failure capture information. To create a good user message do I for example need to know which file the user tried to open to be able to notify that it was some problem with that file to let the user have a chance to fix the problem.The big problem is coming up with a consistent normal, error and exception system and recognizing that although developers must deal with and understand all three that users should only be expected to deal with the first two themselves and need not know anymore about the third except how to report it.
    There are any number of variations on the doing this. But again consistency, not methodology, is the real key.

  • Exception throwing

    I have a situation when a runtime exception should be thrown and an utility class is used
    for the exception throwing.
    Example:
    public class ErrorUtils {
    public static void throwARuntimeException(Exception e) throws ARuntimeException {
    throw new ARuntimeException(p1, p2, p3, p4, p5);
    I think such technique is wrong because:
    1. When an exception is thrown the programmer will see ErrorUtils.throwARuntimeException() in the top of the stacktrace.
    2. It allows to write incorrect code. For example:
    try {
    // do somethink that can throw an exception
    catch (Exception e) {
    throwARuntimeException(e);
    e.printStackTrace(); // this line will be never reached but compiler allows to do that
    Maybe somebody can tell me more arguments why it is not good to throw an exception in a separate method?

    I have a situation when a runtime exception should be
    thrown and an utility class is used
    for the exception throwing.
    Example:
    public class ErrorUtils {
    public static void
    oid throwARuntimeException(Exception e) throws
    ARuntimeException {
    throw new ARuntimeException(p1, p2, p3, p4,
    p3, p4, p5);
    I think such technique is wrong because:
    1. When an exception is thrown the programmer will see
    ErrorUtils.throwARuntimeException() in the top of the
    stacktrace.
    2. It allows to write incorrect code. For example:
    try {
    // do somethink that can throw an exception
    catch (Exception e) {
    throwARuntimeException(e);
    e.printStackTrace(); // this line will be never
    ver reached but compiler allows to do that
    Maybe somebody can tell me more arguments why it is
    not good to throw an exception in a separate method?You're real problem here is not so much a question of what you're doing, but how you're doing it.
    Consider the following
    public void someMethod() throws RuntimeException {
      try{
        // ... Do something here that throws a RuntimeException
      catch(Exception e){
        e.printStackTrace(System.err) ;
        throw new RuntimeException(e.toString()) ;
    }Ok, looks better, I reversed the order of operations in the catch block so that the stack trace would print before it throws the exception, but there's still a problem, and that's one of lost granularity.
    If you cast or convert a double to an int, you lose precision because you lose the decimal places. The same is true if you cast from a more specific class to a more general class. So rather than catching a generic Exception, catch a RuntimeException.
    However, the only thing you've gained by doing that is a bit of precision, and you're duplicating effort.
    In dealing with exceptions, the question is WHERE should it be handled. If the code that generated the exception can deal with it that's fine, there's no need to throw it. This is the situation where you want a try catch block to handle it. But if you can't deal with it at that point, then you have to throw it to a higher level for disposition.
    What I'm driving at here is that if all you're going to do in your catch block is print the stack trace and then throw the error upstream, why bother with catching it here at all. In the code where your method is called you're going to have to handle the exception anyway, so you have a catch block for something that you're going to have to do again anyway.
    So, what I would do is the following (Assuming all I want to do is report the error to a higher level).
    public void callingMethod(){
      try{
        myMethodThatThrowsARuntimeException() :
        someOtherMethodThatMightThrowAnotherTypeOfException() ;
      catch(RuntimeException re){
        messageTheUserWithTheProblem(re) ;
        doSomethingSpecificAboutTheRuntimeException ;
        re.printStackTrace(System.err) ;
      catch(Exception e){
        messageTheUserWithTheProblem(e) ;
        e.printStackTrace(System.err) ;
    public void myMethodThatThrowsARuntimeException() throws RuntimeException{
      // ... Code that causes a RuntimeException to occur
    }There are other ways of doing it, but I find that this 1) allows me to write less code and that's always a good thing as far as I'm concerned, and 2) makes the handling of exceptions by my application more predictable.
    Of course your milage may vary.

Maybe you are looking for