Curl Global Community
Curl ORB でサービス初回呼び出し時にNullPointerException - Printable Version

+- Curl Global Community (https://communities.curl.com)
+-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1)
+--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2)
+--- Thread: Curl ORB でサービス初回呼び出し時にNullPointerException (/showthread.php?tid=844)



Curl ORB でサービス初回呼び出し時にNullPointerException - umemura - 02-15-2013

Curl ORB を利用して開発を行っているのですが、クライアントからサービスを呼び出す際、
サーバ起動後の初回呼び出し時のみ、NullPointerException が発生して困っています。
例外発生後、再度サービスを呼び出すと、正常に応答します。

上記の問題が発生する環境のサーバは WebLogic を利用しており、
クライアント開発環境(Eclipse、tomcat)では発生しません。

おそらく、CurlApplicationFilter.doFilter の中で、サービス呼び出し(FilterChain.doFilter)を行う際に、
@Serviceアノテーション をつけたサービスのインスタンスがないために例外が発生しているのだと思うのですが、
1度目がダメで2度目から正常に動く理由がよくわかりません。

なにか思い当たる理由があれば教えてください。

■例外発生時のログ
javax.servlet.ServletException: java.lang.NullPointerException
at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:67)
at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:58)
at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:48)
at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:539)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:244)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at test.filter.CurlApplicationFilter.doFilter(CurlApplicationFilter.java:87)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at com.curl.orb.servlet.DefaultInstanceManagementFilter.doFilter(DefaultInstanceManagementFilter.java:106)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3730)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused by: java.lang.NullPointerException
at com.curl.orb.generator.ClassPathLoader.addClassProperties(ClassPathLoader.java:67)
at com.curl.orb.servlet.InstanceManagementServlet.init(InstanceManagementServlet.java:105)
at com.curl.orb.servlet.InvokeApplicationContextServlet.init(InvokeApplicationContextServlet.java:48)
at javax.servlet.GenericServlet.init(GenericServlet.java:241)
at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:283)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:64)


RE: Curl ORB でサービス初回呼び出し時にNullPointerException - umemura - 02-15-2013

師曰く、「ORBのセキュリティ設定を見直すべし」と。

■ORB セキュリティ設定
http://developers.curlap.com/re-reference/42-curl-orb-for-java06/200-security.html

Code:
<context-param>
  <param-name>com.curlap.orb.environment</param-name>
  <param-value>production</param-value>
</context-param>


例外が出るかどうかは環境によるのかも知れませんが、
本番機にあげるときは、production にすべきなんですね。