Я столкнулся с этой странной проблемой. У меня есть веб-приложение, развернутое на сервере Tomcat. Пытаюсь вызвать услуги этого приложения через почтальона. Некоторые службы работают нормально, но для некоторых Tomcat дает следующие журналы -
27-Sep-2018 05:33:17.773 INFO [http-nio-8080-exec-5]
org.glassfish.jersey.filter.LoggingFilter.log 5 * Server responded with a
response on thread http-nio-8080-exec-5
5 < 200
5 < Content-Type: application/json
27-Sep-2018 05:33:17.867 INFO [http-nio-8080-exec-5]
org.glassfish.jersey.filter.LoggingFilter.log 6 * Server responded with a
response on thread http-nio-8080-exec-5
6 < 500
Я просмотрел журналы серверов и приложений. Ничто не указывает на причину. И все журналы отладки в моем приложении распечатываются успешно, что заставляет меня думать, что нет проблем с моим приложением, а с конфигурацией сервера. Пожалуйста, помогите мне с возможными решениями.
Web.xml -
<?xml version = "1.0" encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns = "http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id = "WebApp_ID" version = "3.0">
<distributable />
<display-name>afrasia-services</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-rest.xml
</param-value>
</context-param>
<context-param>
<param-name>log4j-config-location</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<!-- START AUTHORIZATION: Spring OAuth2 -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- END AUTHORIZATION -->
<filter>
<filter-name>cors</filter-name>
<filter-class>com.afrAsia.filters.CORSFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>cors</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- servlet> <servlet-name>DigitalTransaction</servlet-name> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</servlet-class>
</servlet> <servlet-mapping> <servlet-name>DigitalTransaction</servlet-name>
<url-pattern>/*</url-pattern> </servlet-mapping -->
<servlet>
<servlet-name>REST-Project</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.afrAsia.rest,com.fasterxml.jackson.jaxrs.json</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.filter.LoggingFilter;org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
</init-param>
<init-param>
<param-name>dispatchOptionsRequest</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>REST-Project</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/oauth/token</url-pattern>
<url-pattern>/*/request_otp</url-pattern>
<url-pattern>/*/sign_in</url-pattern>
<url-pattern>/*/*</url-pattern>
</servlet-mapping>
</web-app>
Я попробовал решение ExceptionMapper, а также другие фильтры, которые улавливают ответ перед его отправкой во внешний интерфейс, но ничто не может поймать ответ 500. Они ловят только 200 ответов. Я также пробовал использовать старую версию Tomcat. Но это тоже не сработало. Я думаю, что с моим файлом web.xml возникла какая-то проблема.
[1] Хорошо, обновите свой пост, добавив web.xml. [2] Какую версию Tomcat вы используете?
Я обновил свой пост с помощью web.xml и попробовал версии apache-tomcat-7.0.91-windows-x64 и apache-tomcat-9.0.0.M19-windows-x64
В вашем файле web.xml нет закрывающего тега </web-app>
.
Извините, здесь произошла опечатка. Тег есть в моем исходном xml.
[1] Пожалуйста, добавьте тег Джерси к своему сообщению. [2] См. Почему у Джерси нет журнала ошибок при статусе 500? относительно отсутствия трассировки стека для ошибки 500 в журнале.