1

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。

4

0 に答える 0