#java
#Ява
Вопрос:
У меня есть веб-приложение, определенное/настроенное следующим образом:
lt;
?xml version="1.0" encoding="UTF-8"?gt; lt;web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"gt; lt;context-paramgt; lt;param-namegt;javax.faces.PROJECT_STAGElt;/param-namegt; lt;param-valuegt;Productionlt;/param-valuegt; lt;/context-paramgt; lt;context-paramgt; lt;param-namegt;javax.faces.VALIDATE_EMPTY_FIELDSlt;/param-namegt; lt;param-valuegt;falselt;/param-valuegt; lt;/context-paramgt; lt;context-paramgt; lt;param-namegt;javax.faces.CLIENT_WINDOW_MODElt;/param-namegt; lt;param-valuegt;urllt;/param-valuegt; lt;/context-paramgt; lt;context-paramgt; lt;param-namegt;javax.faces.PARTIAL_STATE_SAVINGlt;/param-namegt; lt;param-valuegt;falselt;/param-valuegt; lt;/context-paramgt; lt;context-paramgt; lt;param-namegt;javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONElt;/param-namegt; lt;param-valuegt;truelt;/param-valuegt; lt;/context-paramgt; lt;context-paramgt; lt;param-namegt;com.sun.faces.writeStateAtFormEndlt;/param-namegt; lt;param-valuegt;falselt;/param-valuegt; lt;/context-paramgt; lt;context-paramgt; lt;param-namegt;javax.faces.STATE_SAVING_METHODlt;/param-namegt; lt;param-valuegt;serverlt;/param-valuegt; lt;/context-paramgt; lt;context-paramgt; lt;param-namegt;javax.faces.ENABLE_CDI_RESOLVER_CHAINlt;/param-namegt; lt;param-valuegt;truelt;/param-valuegt; lt;/context-paramgt; lt;context-paramgt; lt;param-namegt;javax.faces.CONFIG_FILESlt;/param-namegt; lt;param-value/gt; lt;/context-paramgt; lt;mime-mappinggt; lt;extensiongt;eotlt;/extensiongt; lt;mime-typegt;application/vnd.ms-fontobjectlt;/mime-typegt; lt;/mime-mappinggt; lt;mime-mappinggt; lt;extensiongt;otflt;/extensiongt; lt;mime-typegt;font/opentypelt;/mime-typegt; lt;/mime-mappinggt; lt;mime-mappinggt; lt;extensiongt;ttflt;/extensiongt; lt;mime-typegt;application/x-font-ttflt;/mime-typegt; lt;/mime-mappinggt; lt;mime-mappinggt; lt;extensiongt;wofflt;/extensiongt; lt;mime-typegt;application/x-font-wofflt;/mime-typegt; lt;/mime-mappinggt; lt;mime-mappinggt; lt;extensiongt;woff2lt;/extensiongt; lt;mime-typegt;application/x-font-woff2lt;/mime-typegt; lt;/mime-mappinggt; lt;mime-mappinggt; lt;extensiongt;svglt;/extensiongt; lt;mime-typegt;image/svg xmllt;/mime-typegt; lt;/mime-mappinggt; lt;servletgt; lt;servlet-namegt;Faces Servletlt;/servlet-namegt; lt;servlet-classgt;javax.faces.webapp.FacesServletlt;/servlet-classgt; lt;load-on-startupgt;1lt;/load-on-startupgt; lt;/servletgt; lt;servletgt; lt;servlet-namegt;Print Servletlt;/servlet-namegt; lt;servlet-classgt;com.sys.hrsys.servlets.PrintToPDFlt;/servlet-classgt; lt;/servletgt; lt;filtergt; lt;filter-namegt;SessionTimeoutFilterlt;/filter-namegt; lt;filter-classgt;com.sys.hrsys.cdi.SessionTimeoutFilterlt;/filter-classgt; lt;/filtergt; lt;filter-mappinggt; lt;filter-namegt;SessionTimeoutFilterlt;/filter-namegt; lt;url-patterngt;*.xhtmllt;/url-patterngt; lt;/filter-mappinggt; lt;listenergt; lt;listener-classgt;com.sys.hrsys.cdi.MySessionListenerlt;/listener-classgt; lt;/listenergt; lt;servlet-mappinggt; lt;servlet-namegt;Faces Servletlt;/servlet-namegt; lt;url-patterngt;/faces/*lt;/url-patterngt; lt;/servlet-mappinggt; lt;servlet-mappinggt; lt;servlet-namegt;Print Servletlt;/servlet-namegt; lt;url-patterngt;/print/*lt;/url-patterngt; lt;/servlet-mappinggt; lt;session-configgt; lt;session-timeoutgt;10lt;/session-timeoutgt; lt;tracking-modegt;COOKIElt;/tracking-modegt; lt;/session-configgt; lt;welcome-file-listgt; lt;welcome-filegt;welcome.xhtmllt;/welcome-filegt; lt;/welcome-file-listgt; lt;error-pagegt; lt;error-codegt;500lt;/error-codegt; lt;locationgt;/WEB-INF/errors/generalErrors.xhtmllt;/locationgt; lt;/error-pagegt; lt;error-pagegt; lt;exception-typegt;javax.faces.application.ViewExpiredExceptionlt;/exception-typegt; lt;locationgt;/faces/welcome.xhtmllt;/locationgt; lt;/error-pagegt; lt;error-pagegt; lt;error-codegt;404lt;/error-codegt; lt;locationgt;/WEB-INF/errors/404.xhtmllt;/locationgt; lt;/error-pagegt; lt;login-configgt; lt;auth-methodgt;FORMlt;/auth-methodgt; lt;realm-namegt;hrsysRealmlt;/realm-namegt; lt;form-login-configgt; lt;form-login-pagegt;/faces/login.xhtmllt;/form-login-pagegt; lt;form-error-pagegt;/faces/error.xhtmllt;/form-error-pagegt; lt;/form-login-configgt; lt;/login-configgt; lt;security-constraintgt; lt;display-namegt;SecuredRootlt;/display-namegt; lt;web-resource-collectiongt; lt;web-resource-namegt;Secured Rootlt;/web-resource-namegt; lt;descriptiongt;Secured Rootlt;/descriptiongt; lt;url-patterngt;/*lt;/url-patterngt; lt;/web-resource-collectiongt; lt;user-data-constraintgt; lt;description/gt; lt;transport-guaranteegt;CONFIDENTIALlt;/transport-guaranteegt; lt;/user-data-constraintgt; lt;/security-constraintgt; lt;security-constraintgt; lt;display-namegt;ForUserslt;/display-namegt; lt;web-resource-collectiongt; lt;web-resource-namegt;userslt;/web-resource-namegt; lt;descriptiongt;For Userslt;/descriptiongt; lt;url-patterngt;/faces/users/*lt;/url-patterngt; lt;/web-resource-collectiongt; lt;auth-constraintgt; lt;description/gt; lt;role-namegt;userslt;/role-namegt; lt;/auth-constraintgt; lt;user-data-constraintgt; lt;description/gt; lt;transport-guaranteegt;CONFIDENTIALlt;/transport-guaranteegt; lt;/user-data-constraintgt; lt;/security-constraintgt; lt;security-rolegt; lt;descriptiongt;Ordinary Userslt;/descriptiongt; lt;role-namegt;userslt;/role-namegt; lt;/security-rolegt; lt;/web-appgt; And I have a REST endpoint, within the same .war defined/configured as follows @ApplicationPath("/register") public class RegisterServlet extends ResourceConfig { public RegisterServlet() { register(RSSecurityQuestions.class); register(RSRegister.class); register(CorsFilter.class); register(RolesAllowedDynamicFeature.class); register(EntityConstraintViolationException.class); property(ServerProperties.BV_SEND_ERROR_IN_RESPONSE, true); } } @ApplicationScoped @Path("/securityQuestions") public class RSSecurityQuestions { @Inject Instancelt;SecurityQuestionDefServicegt; secQuestionService; private Listlt;SecurityQuestiongt; secQuestionList; @GET @Produces({"application/json"}) @PermitAll public void getSecurityQuestions(@Suspended final AsyncResponse asyncResponse, @Context ContainerRequestContext crc) { Listlt;SecurityQuestiongt; secQuestionList = secQuestionService.get().getSecQuestionList(); SecurityQuestionResponseSupplier securityQuestionResponseSupplier = new SecurityQuestionResponseSupplier(secQuestionList); LoginExceptionResponse loginExceptionResponse = new LoginExceptionResponse(); LoginResponseConsumer loginResponseConsumer = new LoginResponseConsumer(asyncResponse); CompletableFuture.supplyAsync(securityQuestionResponseSupplier) .exceptionally(loginExceptionResponse) .thenAccept(loginResponseConsumer); } }
В настоящее время я использую payara-4.1.1.163. Я хочу перейти на payara-5.2021.8.
Для доступа к сервлету jsf требуется сначала войти в систему.
Моя проблема в том, что, когда я отправляю запрос на конечную точку REST, я получаю html — ответ-html-страницу входа в систему из сервлета faces. Система предлагает мне сначала войти в систему, как будто я хочу получить доступ к сервлету faces. Это происходит только тогда, когда я использую payara-5.2021.8. С помощью payara-4.1.1.163 я могу получить правильный ответ от конечной точки REST. Система не запрашивает вход в систему.
Какие конфигурации я должен выполнить в payara-5.2021.8, чтобы он не запрашивал/не отправлял страницу входа, когда я хочу получить доступ к конечной точке REST? Сообщите, какие изменения были внесены в последние версии Payara в отношении развертывания сервлетов jsf и предоставления конечных точек REST в той же войне.
Пожалуйста, помогите
Заранее спасибо.
Клифтон