Programming errors in Java tend to result in exceptions being thrown by the faulty code. In such situations the functionality impacted is not accessible for end users.

Start your free trial

How Plumbr will help you

In the screenshot above, Plumbr has exposed a java.lang.NullPointerException being thrown in the context of the login attempt via /login.do service in the media-portal@hera.internal JVM. It is also visible that this is not an isolated incident, the very same NullPointerException has been impacting the login attempts 40 times during the last 24 hours.

Plumbr is also exposing the stack traces of the exceptions thrown:

at com.mycompany.modelutil.Authentication.getUser(Authentication.java:367)
at com.mycompany.legalarchive.model.service.SecurityService$1.doInTransaction(SecurityService.java:55)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653)

Pay attention that the stacktraces are aggregated into a tree-like structure, covering all the different branches the particular exception was thrown from. Stacktraces occurring most frequently are ranked higher in a tree, allowing you to focus on the code with most impact to end users first.

The Solution

Solving exceptions is in most cases as easy as solving the programming error triggering the exception. The particular example used in previous section just missed a single check for the principal being present in the security context.

Start your free trial