Аннотации Java, не работающие

Существует пять частей: учетные данные OAuth, вход, служба, секрет, BackendConfig. Вам понадобится Кубернетес 1.10.5-gke.3 или позже. Включение Cloud IAP для GKE описывает, что вам нужно сделать (или, по крайней мере, большую часть).

OAuth - создание учетных данных для клиента OAuth (возможно, типа «веб-приложение»). Идентификатор и секрет войдут в секретный объект кубе.

Вход - указывает на вашу Службу и ничего лишнего

Служба - комментирует BackendConfig. (Вы можете назначить разные сервисные порты разным бэкэндам. Используйте «default» для простого случая.)

metadata:
  annotations:
    beta.cloud.google.com/backend-config: '{"default": "mybc"}'

Secret - хранит учетные данные для вашего созданного клиента OAuth

apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: mysecret
data:
  client_id: xxx
  client_secret: xxx

BackendConfig - это пользовательский ресурс, который поддерживает GKE, так что нет ничего необычного, кроме создания этого объекта

apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
  name: mybc
spec:
  iap:
    enabled: true
    oauthclientCredentials:
      secretName: mysecret

Если у вас все еще возникают проблемы: пересмотрите эту документацию снова; проверьте авторизованные домены OAuth; на странице IAP подтвердите IAP-защищенных пользователей Web App разрешения для предполагаемых пользователей; проверьте, что ваши секретные данные закодированы в base64; проверьте соответствие портов вашим спецификациям Ingress / Service / Deployment.

20
задан jjnguy 8 April 2009 в 05:52
поделиться

2 ответа

Необходимо указать аннотацию, как являющуюся аннотацией Во время выполнения с помощью @Retention аннотации на интерфейс аннотации.

т.е.

@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation{}
37
ответ дан 29 November 2019 в 22:47
поделиться

Короткий ответ: необходимо добавить @Retention (RetentionPolicy. ВРЕМЯ ВЫПОЛНЕНИЯ) к Вашему определению аннотации.

Объяснение:

Аннотации по умолчанию не сохранены компилятором. Они просто не существуют во времени выполнения. Это может звучать глупым сначала, но существует много аннотаций, которые только используются компилятором (@Override) или различный исходный код анализаторы (@Documentation, и т.д.).

Если Вы захотите на самом деле ИСПОЛЬЗОВАТЬ аннотацию через отражение как в Вашем примере, то необходимо будет позволить Java знать, что Вы хотите, чтобы это обратило внимание на ту аннотацию в самом файле класса. То примечание похоже на это:

@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation{}

Для получения дополнительной информации проверьте официальный docs1 и особенно отметьте бит о RetentionPolicy.

24
ответ дан 29 November 2019 в 22:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: