Closed
Description
Wim Deblauwe opened SPR-5402 and commented
I saw a NullPointerException in the logs of my tomcat (started using maven cargo):
[INFO] [talledLocalContainer] java.lang.NullPointerException
[INFO] [talledLocalContainer] at java.lang.String.indexOf(String.java:1734)
[INFO] [talledLocalContainer] at java.lang.String.indexOf(String.java:1716)
[INFO] [talledLocalContainer] at org.springframework.jms.JmsException.getMessage(JmsException.java:87)
[INFO] [talledLocalContainer] at java.lang.Throwable.getLocalizedMessage(Throwable.java:267)
[INFO] [talledLocalContainer] at java.lang.Throwable.toString(Throwable.java:343)
[INFO] [talledLocalContainer] at java.lang.String.valueOf(String.java:2827)
[INFO] [talledLocalContainer] at java.io.PrintWriter.println(PrintWriter.java:710)
[INFO] [talledLocalContainer] at java.lang.Throwable.printStackTrace(Throwable.java:509)
[INFO] [talledLocalContainer] at org.apache.log4j.spi.ThrowableInformation.getThrowableStrRep(ThrowableInformation.java:76)
[INFO] [talledLocalContainer] at org.apache.log4j.spi.LoggingEvent.getThrowableStrRep(LoggingEvent.java:407)
[INFO] [talledLocalContainer] at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:305)
[INFO] [talledLocalContainer] at org.apache.log4j.WriterAppender.append(WriterAppender.java:160)
[INFO] [talledLocalContainer] at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
[INFO] [talledLocalContainer] at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
[INFO] [talledLocalContainer] at org.apache.log4j.Category.callAppenders(Category.java:206)
[INFO] [talledLocalContainer] at org.apache.log4j.Category.forcedLog(Category.java:391)
[INFO] [talledLocalContainer] at org.apache.log4j.Category.error(Category.java:322)
The problem can be seen by looking at the code of JmsMessage.java:
public String getMessage() {
String message = super.getMessage();
Throwable cause = getCause();
if (cause instanceof JMSException) {
Exception linkedEx = ((JMSException) cause).getLinkedException();
if (linkedEx != null && cause.getMessage().indexOf(linkedEx.getMessage()) == -1) {
message = message + "; nested exception is " + linkedEx;
}
}
return message;
}
The line that does the indexOf()
can give a NPE if linkedEx.getMessage()
returns null
Affects: 2.5.6
Issue Links:
- JmsUtils.buildExceptionMessage throws NPE if the linked exception doesn't have a message [SPR-5275] #9948 JmsUtils.buildExceptionMessage throws NPE if the linked exception doesn't have a message ("duplicates")