WebSphere 7 で struts2 アプリケーションを実行しています。最近、これ (既存のアプリケーション) に機能を追加したところ、異常な問題が発生しました。新しいアクションを起動すると、約 3 回に 1 回、以下のエラーが表示されます。1回取得すると、その後は毎回取得します。ただし、アプリケーションのフロント ページに移動して戻ってくると (つまり、アプリケーションの状態の多くをリセットするが、サーバーには触れない)、通常は機能します (基本的に 3 分の 1 の新しい「ロール」が得られます)。これは、この機能に対するサブ アクションでも発生します。
スタックトレース:
[9/9/13 12:51:32:289 EDT] 00000028 webapp E com.ibm.ws.webcontainer.webapp.WebApp logError SRVE0293E: [Servlet Error]-[Unable to instantiate Action, com.sssa.ebb.web.actions.common.GeneralNotesAction, defined for 'GeneralNotesUpdateNote' in namespace '/'null]: com.ibm.ws.webcontainer.webapp.WebAppErrorReport: Unable to instantiate Action, com.sssa.ebb.web.actions.common.GeneralNotesAction, defined for 'GeneralNotesUpdateNote' in namespace '/'null
at com.ibm.ws.webcontainer.webapp.WebAppDispatcherContext.sendError(WebAppDispatcherContext.java:637)
at com.ibm.ws.webcontainer.srt.SRTServletResponse.sendError(SRTServletResponse.java:1187)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:839)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:533)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:188)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:116)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:997)
at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.invokeFilters(DefaultExtensionProcessor.java:1043)
at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:963)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3933)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:931)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1583)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1784)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604)
Struts ソースをロードしましたが、元のエラーは構成を (再) 読み取る NPE のようです。これが時々機能し、他の人が機能しない理由は興味深いです。
枝刈りされた struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<constant name="struts.custom.i18n.resources" value="com.sssa.ebb.core.utils.EbbResourceBundle" />
<constant name="struts.enable.SlashesInActionNames" value="true" />
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false" />
<constant name="struts.action.excludePattern" value="/loadImage|/SaveReviewCaseServlet|/getFile|/displayPDF"></constant>
<include file="struts-default.xml"/>
<include file="decisions.xml"/>
<package name="default" extends="json-default" >
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
<result-type name="json" class="org.apache.struts2.json.JSONResult"/>
</result-types>
<interceptors>
<interceptor name="userProfile" class="com.sssa.ebb.web.interceptors.UserProfileInterceptor"/>
<interceptor name="timeActions" class="com.sssa.ebb.web.interceptors.EbbActionTimerInterceptor"/>
<interceptor name="valueStackManipulator" class="com.sssa.ebb.web.interceptors.ValueStackInterceptor"/>
<interceptor name="actionHistoryRecorder" class="com.sssa.ebb.web.interceptors.ActionHistoryInterceptor"/>
<interceptor name="cachingHeadersInterceptor" class="com.sssa.ebb.web.interceptors.CachingHeadersInterceptor"/>
<interceptor-stack name="ebb_default_stack">
<interceptor-ref name="timeActions"/>
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="userProfile"/>
<interceptor-ref name="valueStackManipulator"/>
<interceptor-ref name="actionHistoryRecorder"/>
<interceptor-ref name="cachingHeadersInterceptor"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="ebb_default_stack"/>
<global-results>
<result name="shutdown" >/jsps/common/shutdown.jsp</result>
<result name="ebbSearch" >/jsps/caseselection/ebbSearch.jsp</result>
<result name="ebbForward" type="redirectAction">
<param name="actionName">${forwardAction}</param>
</result>
<result name="systemerror" >/jsps/common/systemerror.jsp</result>
<result name="applicationerror" >/jsps/common/applicationerror.jsp</result>
<result name="systemfailure" >/jsps/common/systemfailure.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="com.sssa.ebb.ejb.exceptions.EbbEJBException" result="systemerror" />
<exception-mapping exception="java.lang.Exception" result="systemfailure" />
</global-exception-mappings>
<action name="exitAction" class="com.sssa.ebb.web.actions.common.ExitAction">
<result name="success" type="tiles">exitApplication</result>
</action>
<action name="enterEbbSearch" class="com.sssa.ebb.web.actions.common.EbbSearchAction">
<result>/jsps/caseselection/ebbSearch.jsp</result>
</action>
<action name="openGeneralNotes" class="com.sssa.ebb.web.actions.common.GeneralNotesAction">
<result name="success">/jsps/common/generalnotes.jsp</result>
<result name="viewpage">/jsps/common/generalnotes.jsp</result>
</action>
<action name="GeneralNotesAddNote" class="com.sssa.ebb.web.actions.common.GeneralNotesAction" method="addNote">
<result type="json">
<param name="root">jsonResponse</param>
</result>
</action>
<action name="GeneralNotesUpdateNote" class="com.sssa.ebb.web.actions.common.GeneralNotesAction" method="updateNote">
<result type="json">
<param name="root">jsonResponse</param>
</result>
</action>
<action name="GeneralNotesDeleteNote" class="com.sssa.ebb.web.actions.common.GeneralNotesAction" method="deleteNote">
</action>
</package>
他に何を追加すればよいかわかりません、TIA。