L’utilisation des caches applicatifs en JEEJava Entreprise Edition n’est pas une habitude pour les développeurs et les architectes. L’utilisation des caches de types infinispan ou ehCache sont trop souvent limités à la simple fonction de cache hibernate ou JPA.
De nombreuses applications peuvent en effet bénéficier de ces technologies de cache. Il suffit généralement de les penser directement lors de la conception d’une application. Leurs utilisations s’avèrent généralement beaucoup plus simple que ce que l’on pourrait imaginer. Dans cet article nous allons lister un certain nombre de cas, où il est intéressant d’utiliser des caches applicatifs. Ils existent bien sur une infinité de possibilités mais l’objectif est surtout de montrer quelques exemples et de donner des idées quant à leurs utilisations concrètes dans des applications.
Les cas d’utilisations cités ici sont des cas réels ou des caches ont été utilisés avec succès.
De manière générale, les caches se présentent sous la forme d’une hashmap. Disons d’un ensemble de clé – valeur. La clé permet de retrouver la valeur dans le cache, comme dans une hashmap. La valeur peut prendre n’importe quelle forme, de la simple chaine de caractère à la sérialisation d’un objet complexe. L’utilisation du cache dans une application est la suivante.
Pour savoir si vous avez besoin d’un cache, vous pouvez vous poser les questions suivantes.
Si vous répondez oui à une ou plusieurs de ces questions, votre application gagnerait à utiliser un cache.
Pour résumé l’utilisation des caches en une ligne, le principe est le suivant. Je cherche ma donnée, si elle existe dans le cache, je la prends, sinon je la crée et la stocke dans mon cache.
Infinispan est nativement supporté par Jboss, il suffit de quelques configurations pour pouvoir s’injecter un cachemanager dans son application.
Dans le fichier standalone.xml, il suffit de rajouter la configuration suivante pour créer un cache nommé I java:jboss/infinispan/stat-cache.
<local-cache name="stat" start="EAGER">
<transaction mode="NON_XA">
<eviction max-entries="10000" strategy="LRU">
<expiration max-idle="100000">
</expiration></eviction></transaction></local-cache>
</cache-container>
Pour s’injecter un cache dans son application, il suffit de d’utiliser une annotation @Resource
@Resource(lookup = "java:jboss/infinispan/stat-cache")
protected org.infinispan.manager.CacheContainer mStatContainer;
Puis de l’initialiser
@PostConstruct
public void onStartup() {
this.mStatCache = this.mStatContainer.getCache();
}
Et simplement de l’utiliser:
if (mStatCache.get(pStat.getSessionId()) == null) {
mStatCache.put(pStat.getSessionId(),new ArrayList<
StatistiqueNavigation>())
}
Cas d’utilisation des caches
Nous allons ici, décrire un cas d’utilisation des caches applicatifs dans des applications qui sont en production et qui ont vues leurs performances être significativement améliorées par l’utilisation du cache.
Bien que des outils puissants de statistiques web existent pour étudier l’utilisation d’un site web ou d’une application, il est souvent nécessaire de créer des statistiques métiers directement dans l’application.
Prenons l’exemple suivant. Vous souhaitez définir quel est le parcours précis d’un utilisateur connecté dans votre application. La première chose à réaliser est de sauvegarder chacun de ces clics dans l’application ainsi que tout un tas de paramètres liés au contexte applicatif. Aucun outil de type Google analytics ne pourra faire ça. Le problème est que si pour chaque action de l’utilisateur dans votre application vous insérer en base des dizaines d’enregistrements, vous risquez vite de pénaliser les performances générales de l’application pour une fonctionnalité non essentielle. Une bonne solution est d’utiliser un cache applicatif.
Le mécanisme est le suivant. Au lieu d’insérer directement en base de données, vous construisez vos objets statistiques et vous allez les mettre dans votre cache. Cette opération est extrêmement rapide car elle s’effectue presque exclusivement en mémoire sans contrôle complexe. De temps en temps, une tâche planifiée vient vider le cache et insérer toutes les statistiques dans la base de données. Ainsi vous maitrisez les performances de votre application.
Il se peut qu’en cas de crash du serveur, vous perdrez les informations de votre cache si celui-ci n’est pas correctement sérialisé sur le disque. Dans le cas présent, ceci n’est pas grave car les statistiques ne sont pas essentielles au bon fonctionnement de l’application.
La fonction SelectFile() permet, dans du code OJS, de demander à l’utilisateur le nom complet (répertoire + nom) d’un fichier que l’on souhaite pouvoir traiter (importer, lire, analyser...) dans P5.
Pourquoi et comment utiliser une solution d’API Management dans son système d’informations ?
Vue.js est l'un des frameworks JavaScript les plus populaires du moment, et devance même Angular en termes d'utilisation selon le State of JS 2023 ! Dans cet article, nous allons faire un focus sur la réactivité dans Vue.js, un élément crucial à prendre en compte pour créer des interfaces dynamiques et performantes. Dans Vue.js, celle-ci peut sembler complexe à première vue, surtout quand on la compare à d'autres frameworks comme React et son hook useState ou Angular et ses Observable. Mais en réalité, une fois les concepts clés découverts, Vue.JS est plus facile à prendre en main grâce à certains outils et techniques qui simplifient grandement la gestion de cette réactivité. Découvrons comment optimiser vos développements !