NPEの日とは
国民の祝日に関する法律(祝日法、昭和23年7月20日法律第178号)の一部改正によって制定された祝日で、日付は昭和天皇の誕生日である4月29日があてられている。「ゴールデンウィーク」を構成する祝日のひとつでもある。
2連続で立て続けだったので
Glassfishのデプロイにて
一つ目は冷静に NPE です
java.lang.NullPointerException
at com.sun.enterprise.deployment.util.ComponentValidator.accept(ComponentValidator.java:538)
at com.sun.enterprise.deployment.util.DefaultDOLVisitor.accept(DefaultDOLVisitor.java:78)
at com.sun.enterprise.deployment.util.ComponentValidator.accept(ComponentValidator.java:123)
at com.sun.enterprise.deployment.util.ApplicationValidator.accept(ApplicationValidator.java:147)
at org.glassfish.web.deployment.util.WebBundleValidator.accept(WebBundleValidator.java:81)
at com.sun.enterprise.deployment.BundleDescriptor.visit(BundleDescriptor.java:621)
Glassfish のリポジトリhttps://svn.java.net/svn/glassfish~svn/tags/から当該のソース探ると、
// if we are here, we must have resolved the reference if(DOLUtils.getDefaultLogger().isLoggable(Level.FINE)) { DOLUtils.getDefaultLogger().fine("Done Visiting " + getEjbDescriptor().getName() + " reference " + ejbRef); }
getEjbDescriptor() がNullです。。これは Glassfish4.0 のソース。
Glassfish4.0.1のソースだと以下のように直ってました。
// if we are here, we must have resolved the reference if(DOLUtils.getDefaultLogger().isLoggable(Level.FINE)) { if (getEjbDescriptor() != null){ DOLUtils.getDefaultLogger().fine("Done Visiting " + getEjbDescriptor().getName() + " reference " + ejbRef); } }
しょうもない所で時間とられた。
と思った矢先
NPE
java.lang.NullPointerException
at org.apache.catalina.authenticator.AuthenticatorBase.register(AuthenticatorBase.java:861)
at org.apache.catalina.authenticator.AuthenticatorBase.logout(AuthenticatorBase.java:973)
今度はなんですか
protected void register(HttpRequest request, HttpResponse response, Principal principal, String authType, String username, char[] password) { if (log.isLoggable(Level.FINE)) { String msg = "Authenticated '" + principal.getName() + "' with type '" + authType + "'"; log.log(Level.FINE, msg); }
principal.getName() で。また Level.FINE
@Override public void logout(HttpRequest request) throws ServletException { Session session = getSession(request); if (session != null) { session.setPrincipal(null); session.setAuthType(null); } // principal and authType set to null in the following register(request, (HttpResponse)request.getResponse(), null, null, null, null); }
register の呼び出しで必ずです。 バグレポート挙げときました。