[JAVA] J'ai essayé de développer la fonction de cache d'Application Container Cloud Service dans l'environnement local

Oracle Application Container Cloud Service fournit des fonctionnalités de mise en cache.

La fonctionnalité ** Cache local ** est disponible pour faciliter le développement de cette fonctionnalité de cache.

La description

Le cache d'application fourni par Oracle Application Container Cloud Service acquiert le nom de l'hôte en cours d'exécution à partir de la variable d'environnement et l'utilise comme destination du cache. Par conséquent, pour utiliser la fonction de cache, il est indispensable qu'une instance de cache d'application ait été créée et démarrée sur le service cloud du conteneur d'application.

Il n'est pas pratique de se connecter à distance pendant le développement pour les tests et le débogage. Par conséquent, utilisez l'API ** LocalCache ** fournie par le client de cache d'application.

LocalCache

LocalCache fournit une API similaire à l'API pour utiliser Cache sur le service Cloud Application Container.

ClassDiagram

Comme vous pouvez le voir dans le diagramme de classes ci-dessus, ** AbstractCache ** qui implémente ** l'interface Cache ** hérite de la classe abstraite pour le traitement ** REST **, le traitement ** gRPC **, ** local * * Chaque classe de traitement a été créée.

RestCache / GrpcCahe

Le cache créé dans "J'ai essayé d'utiliser la fonction de cache d'Application Container Cloud Service" a un type ** REST ** dans la classe ** Transport **. C'était précisé. Il est donc défini comme ** RestCache **.

cacheSession = sessionProvider.createSession(Transport.rest());

De plus, si le type de transport spécifié est ** gRPC **, il sera défini comme ** GrpcCache **.

une fonction

Il n'y a aucune différence dans les fonctions de base de LocalCache, RestCache et GrpcCache.

--Obtenir le cache

supposition

Les bibliothèques suivantes sont requises pour utiliser l'API Java pour les applications clientes du service de cache.

Obtenu par Maven en décrivant les dépendances suivantes:

<dependency>
    <groupId>com.oracle.cloud.caching</groupId>
    <artifactId>cache-client-api</artifactId>
    <version>1.0.0</version>
</dependency>

Exemple d'utilisation / d'implémentation

Il est pratique de changer le cache utilisé lors de l'exécution sur Application Container Cloud Service et lors de l'exécution dans un environnement local. Par conséquent, utilisons la variable d'environnement comme informations d'identification pour savoir si elle se trouve sur le service Cloud Application Container ou l'environnement local.

Dans Application Container Cloud Servive, le nom du répertoire est enregistré dans la variable d'environnement ** APP_HOME ** en tant qu'informations de l'emplacement où le fichier d'application déployé est placé. Par conséquent, nous utiliserons la présence ou l'absence de cette variable d'environnement pour déterminer la différence environnementale.

Avant d'insérer le processus de discrimination de l'environnement

Session cacheSession = new RemoteSessionProvider(CACHE_URL).createSession(Transport.rest());
Cache cache = cacheSession.getCache(CACHE_NAME, ValueType.of(String.class));

Après avoir ajouté le processus de discrimination de l'environnement

SessionProvider sessionProvider = System.getenv(APP_HOME_DIR) == null ? new LocalSessionProvider() : new RemoteSessionProvider(CACHE_URL);
Session cacheSession = new RemoteSessionProvider(CACHE_URL).createSession(Transport.rest());
Cache cache = cacheSession.getCache(CACHE_NAME, ValueType.of(String.class));

Le SessionProvider est commuté en fonction de la présence ou de l'absence de la variable d'environnement.

Exemple d'exécution d'Application Cache dans l'environnement local

Accès local lors de l'utilisation de RestCache

Accès local lors de l'utilisation de LocalCache

Résumé

Jusqu'à ce que je remarque l'existence de LocalCache, je me demandais si je retirerais le nom d'hôte où Application Cache s'exécute à partir de l'environnement et le développerais tout en me connectant à distance. LocalCache vous aide car vous n'avez pas à vous soucier des connexions à distance pendant le développement.

Recommended Posts

J'ai essayé de développer la fonction de cache d'Application Container Cloud Service dans l'environnement local
J'ai essayé de développer une application en 2 langues
Après avoir appris Progate, j'ai essayé de créer une application SNS en utilisant Rails dans l'environnement local
Comment installer Docker dans l'environnement local d'une application Rails existante [Rails 6 / MySQL 8]
J'ai essayé de créer un environnement de WSL2 + Docker + VSCode
J'ai essayé d'implémenter le traitement Ajax de la fonction similaire dans Rails
J'ai essayé d'utiliser Docker parce que je ne veux pas polluer l'environnement local dans le développement de l'onglet Microsoft Teams de MS Learn
J'ai essayé d'utiliser pleinement le cœur du processeur avec Ruby
J'ai essayé d'organiser la session en Rails
Comment définir des variables d'environnement dans le fichier de propriétés de l'application Spring Boot
J'étais accro à NoSuchMethodError dans Cloud Endpoints
J'ai essayé d'utiliser la fonction Server Push de Servlet 4.0
05. J'ai essayé de supprimer la source de Spring Boot
J'ai essayé de réduire la capacité de Spring Boot
J'ai essayé de créer une fonction de connexion avec Java
SSL dans l'environnement local de Docker / Rails / puma
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
Premier AWS Lambda (j'ai essayé de voir dans quel type d'environnement il fonctionne)
J'ai essayé de créer une application Web qui recherche les tweets avec vue-word cloud et examine la tendance de ce qui est écrit dans le profil associé
J'ai essayé de faire une demande en 3 mois d'inexpérimenté
J'ai essayé d'implémenter la fonction similaire par communication asynchrone
J'ai fini de regarder les roses de Versailles, alors j'ai essayé de reproduire la chanson de fin en Java
J'ai essayé de résumer les bases de kotlin et java
J'ai essayé de convertir l'exemple d'application en microservice selon l'idée du livre "Microservice Architecture".
J'ai essayé de toucher l'application de gestion d'actifs en utilisant l'émulateur du grand livre distribué Scalar DLT
J'ai brièvement résumé la grammaire de base de Ruby
J'ai essayé de construire l'environnement petit à petit en utilisant docker
J'ai essayé d'implémenter une application web pleine de bugs avec Kotlin
J'ai créé un client RESAS-API en Java
Je veux recréer le contenu des actifs à partir de zéro dans l'environnement construit avec capistrano
J'ai essayé d'assembler à partir de 0 tout en considérant le côté performance de la conception de la table de la fonction d'affichage jour / semaine / mois / classement général
J'ai essayé de résoudre le problème de la "sélection multi-étapes" avec Ruby
J'ai essayé d'illuminer le sapin de Noël dans un jeu de la vie
Tri des données Décroissant, croissant / Rails
J'ai essayé d'implémenter la fonction de prévisualisation d'image avec Rails / jQuery
J'ai essayé de vérifier le fonctionnement du serveur gRPC avec grpcurl
Je veux changer la valeur de l'attribut dans Selenium of Ruby
J'ai essayé de résoudre le problème de Google Tech Dev Guide
J'ai essayé d'expliquer la méthode
[Rails] J'ai essayé de supprimer l'application
[Android] Développer un service permettant aux étudiants universitaires de vérifier l'état de fonctionnement des bus circulant dans l'université.
J'ai essayé de créer un exemple de programme en utilisant le problème du spécialiste des bases de données dans la conception pilotée par domaine
J'ai essayé de créer une classe parent d'objet de valeur dans Ruby
J'ai essayé de résumer les points clés de la conception et du développement de gRPC
Exécutez Redmine dans l'environnement local de Windows10 Pro-Use Docker Desktop pour Windows
J'ai essayé de résoudre le problème de la séquence Tribonacci en Ruby, avec récurrence.
Comment résoudre la construction de l'environnement local de Ruby on Rails (MAC)!
J'ai essayé de visualiser l'accès de Lambda → Athena avec AWS X-Ray
J'ai essayé de créer une application de conversation en Java à l'aide de l'IA «A3RT»
[Ruby] J'ai essayé de résumer les méthodes fréquentes dans paiza
Comment migrer une application Web créée dans un environnement Docker local vers AWS
[Ruby] J'ai essayé de résumer les méthodes fréquentes avec paiza ②