TenantAccessor.getCurrentTenant () выдает TenantNotAvailableException: не удалось получить текущего арендатора: запрос недоступен - PullRequest
0 голосов
/ 14 мая 2018

Итак, я последовал https://blogs.sap.com/2017/12/20/deep-dive-6-with-sap-s4hana-cloud-sdk-extend-your-cloud-foundry-application-with-tenant-aware-persistency/

У меня есть приложение Spring Boot 2.0.1.RELEASE, работающее на SCP с безопасностью OAuth 2.0 библиотеки xs2. Если я создаю токен доступа в Postman и вызываю свой @RestController напрямую (обращаясь к БД), я получаю эту ошибку от TenantAccessor.getCurrentTenant ():

com.sap.cloud.sdk.cloudplatform.tenant.exception.TenantNotAvailableException: Failed to get current tenant: no request available. This error may occur when trying to obtain the current tenant within tasks that are not triggered by a request, for example, while using a RequestContextExecutor. Note that, on SCP CF, a request is required to obtain tenant information from the JWT bearer in the "Authorization" header.

Я не понимаю, почему я не получаю «доступный запрос», когда я явно отправляю запрос с заголовком авторизации, содержащим токен на предъявителя, прямо на мой @RestController.

У меня была идея решить эту проблему, пометив класс TenantIdentifierResolver (который содержит TenantAccessor) с помощью @RequestScope, но это не удалось, потому что тогда контекст запроса не был найден при инициализации приложения (entityManagerFactory).

1 Ответ

0 голосов
/ 14 мая 2018

Это сообщение указывает на отсутствие RequestContext. Такой RequestContext инициализируется с использованием RequestContextServletFilter или RequestContextExecutor.

В приложении Spring может отсутствовать фильтр веб-сервлетов. Не могли бы вы добавить следующую аннотацию @ServletComponentScan в ваше приложение?

@ServletComponentScan({"com.sap.cloud.sdk"})
  ...
@SpringBootApplication
public class Application extends SpringBootServletInitializer
{ 
    ...
}

В фоновых задачах вам, возможно, придется использовать RequestContextExecutor. Для более подробной информации, пожалуйста, взгляните на соответствующий вопрос здесь .

...