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
-
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 meNo 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 PMHi 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
boobalHi,
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. -
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. -
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
CHi 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. -
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. -
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
-
I have an iPhone 5s running ios 7.1.1 I've connected my iphone to my itunes (on a macbook pro 2011 latest edition) and am trying to restore my iPhone. When I click on the restore button, it contacts the apple servers and then immediately directs me t
-
There are additional errors with CS3 as well.<br /><br />We've tried deleting the photoshop and the browser plist files.<br /><br />We've tried deleting the /Library/Application Support/Adobe/Adobe Version Cue CS3/Client/3.1.0 and running the downloa
-
Validating datafile directory path before creating it
Hi, Is there a way to validate the datafile path when creating a tablespace. The creation of tablespace is done through Java/JDBC application. Before attempting creating of the tablespace i would like to validate the path of the datafile provided is
-
Are Solutions Accelerators supported in LiveCycle ES2
I have been doing some testing on using the current version of the solution accelerators in LiveCycle ES 2. I have run into some issues and I have been informed that they are not natively supported in this environment, as of yet. I was just curious
-
Web Server Options for APEX Installation on Oracle Database 10g
Hi. We are installation a APEX on a test server that is running Oracle Database 10g 10.2.0.4.0. As I understand it there are two Web Server Options: 1) Oracle HTTP Server (Apache) 2) Oracle Application Express Listener Do both of these work for Oracl