Я определил свой struts.xml
следующим образом для конкретного пакета с пространством имен /ws
, чтобы описать часть приложения в виде веб-службы:
<package name="app-ws" namespace="/ws" strict-method-invocation="false" extends="json-default">
<interceptors>
<interceptor name="wsInterceptor" class="myapp.WSInterceptor" />
</interceptors>
<global-results>
<result name="not.authorized">/WEB-INF/jsp/admin/not_authorized.jsp</result>
<result name="exception">/WEB-INF/jsp/admin/exception.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="exception" />
</global-exception-mappings>
<action name="runWS" method="runWS" class="myapp.WSAction">
<interceptor-ref name="wsInterceptor" />
</action>
</package>
Затем в Java-методе, ответственном за это действие, которое, как я проверял, работает, я делаю это:
public String runWS() throws Exception {
throw new Exception("test");
}
Я ожидаю, что Результатом будет моя пользовательская страница Исключений, потому что я определил (1) Глобальный результат и (2) Глобальные сопоставления исключений.
Но я получаю это:
HTTP Status 500 – Internal Server Error
Type Exception Report
Message test
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
java.lang.Exception: test
Почему я получаю общую ошибку 500, несмотря на мое сопоставление исключений?