У меня странная проблема, которая на данный момент не воспроизводима.
У меня есть следующие конечные точки:
@Path("/v1/")
@Produces(MediaType.APPLICATION_JSON)
public class EndpointVersion1Base
{
private BackendRestClient restClient;
@EJB
public void setRestClient(BackendRestClient restClient)
{
this.restClient = restClient;
}
@Path("/dataprivacy/")
public Object getDataPrivacy()
{
return new DataPrivacyEndpoint(restClient);
}
@Path("/crashreporting/")
public Object getCrashReport()
{
return new CrashReportEndpoint(restClient);
}
}
Отчет о сбое конечной точки имеет обычную аутентификацию. У данных конечной точки нет аутентификации. Конечная точка обработки данных выглядит следующим образом:
@Path("/")
@Produces(MediaType.APPLICATION_JSON)
public class DataPrivacyEndpoint
{
private BackendRestClient restClient;
private Logger logger = LoggerFactory.getLogger(getClass());
public DataPrivacyEndpoint(BackendRestClient restClient)
{
this.restClient = restClient;
}
public DataPrivacyEndpoint()
{
}
@POST
@Path("/")
@Consumes(MediaType.APPLICATION_JSON)
public Response storeConsent(
@NotNull(message = ErrorCodes.ERR_QUERY_PARAM_NULL) @Valid String consentInputBo) throws ForbiddenException, BadRequestException
{
//some code
}
}
Я получил базовую аутентификацию конечной точки аварийного отчета с помощью следующего файла 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" version="3.0">
<display-name>publicapi</display-name>
<security-constraint>
<web-resource-collection>
<web-resource-name>Crash reporting</web-resource-name>
<description>crash reporting service</description>
<url-pattern>/v1/crashreporting/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>publicapi</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>UserRoles simple realm</realm-name>
</login-config>
<security-role>
<role-name>publicapi</role-name>
</security-role>
</web-app>
и jboss-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-web_5_1.xsd">
<context-root>publicapi</context-root>
<security-domain>other</security-domain>
</jboss-web>
Вчера все это работало. Сегодня я начал службы. Неожиданно, когда я отправил запрос POST в конечную точку хранения данных через http://192.168.0.80:8080/publicapi/v1/dataprivacy/ и получил ответ об ошибке HTTP " HTTP POST не разрешен для этого метода ".
Я удивился, почему это произошло, потому что это сработало вчера. После того, как я перезапустил службы, вдруг снова заработало? Что здесь происходит? Почему это иногда работает, а иногда нет? (В настоящее время я не могу воспроизвести его). У меня есть какая-то неверная конфигурация, которая может привести к странному поведению? Боюсь, что это может произойти и в моей системе LIVE.