Ce chapitre contient des procédures et des aides pour des points particuliers nécessitant des explications.
En tout premier lieu, il faut ajouter la dépendance du client d’appel dans le micro-service appelant. Donc éditer le fichier $projetAppelant/pom.xml :
<!-- Le classifier CLIENT du projet xxxxxxx pour la compilation/exécution normale -->
<dependency>
<groupId>com.github.talbotgui.psl.socle</groupId>
<artifactId>socle-xxxxxxx</artifactId>
<version>${project.version}</version>
<classifier>client</classifier>
<exclusions><exclusion><groupId>*</groupId><artifactId>*</artifactId></exclusion></exclusions>
</dependency>
<!-- Pour faire fonctionner les tests dans Eclipse qui gère mal le classifier "client" (cf. chapitre 3.37.1 de la documentation) -->
<dependency>
<groupId>com.github.talbotgui.psl.socle</groupId>
<artifactId>socle-xxxxxxx</artifactId>
<version>${project.version}</version>
<scope>test</scope>
<exclusions><exclusion><groupId>*</groupId><artifactId>*</artifactId></exclusion></exclusions>
</dependency>
Pour rendre disponible le client Feign dans l’application appelante, il faut :
//pour activer les clients Feign et appeler un service exposé d'un autre micro-service via une simple interface
//Le basePackage permet de générer automatiquement un client pour les interfaces de @Controler d'un package
@EnableFeignClients(basePackages = { "com.github.talbotgui.psl.socle.xxxxxxxxxxxxxxx.apiclient.api" })
Pour disposer du client d’appel dans la classe de service, il suffit d’ajouter :
/** Client d'appel de l'API des xxxxxxxx */
@Autowired
private XxxxxxxAPI clientXxxxxxx;
Dans le test du service, il est nécessaire d’ajouter un bouchon du client d’appel à l’API appelée.
//Activation de Mockito dans ce test qui ne génére qu'une unique instance de la classe de test pour l'ensemble des méthodes de la classe
@TestInstance(Lifecycle.PER_CLASS)
@ExtendWith(MockitoExtension.class)
/** Bouchon du client d'appel à l'API Xxxxx présent dans le service. */
@Mock()
private xxxxxxxxxClient clientXxxxxxxxxxx;
@InjectMocks sur l’intance de service présente dans la classe de test.@Before :// Gestion des bouchons
Mockito.reset(this.clientXxxxxxxxxxx);
Dans les tests unitaires, sont maintenant présents plusieurs contextes Feign (les APIs de l’appelant et de l’appelé). Spring n’aime pas ça. Pour le contenter exclusivement dans les tests, il faut ajouter dans le fichier $projetAppelant/src/test/resources/application-testspecifique.properties les lignes suivantes :
# Configuration permettant le fonctionnement du test BrouillonAPITest car deux contextes Feign sont d�marr�s (et donc deux Bean du m�me nom).
spring.main.allow-bean-definition-overriding=true
Toute dépendance du framework FRONT doit être déclarée dans peerDependencies du package.json (comprendre j’en ai besoin) ainsi que dans le package.json à la racine (comprendre la voici).
Il arrive que, dans l’application Cypress démarrée avec la commande npm run cypress, s’affiche le message “http://xxxx non trouvé”. Ceci vient souvent du proxy. Ce dernier est sans doute mal paramétré.
Si l’application est démarrée en local sur un poste de développement, il est nécessaire d’exécuter les commandes suivantes : export HTTP_PROXY= et export HTTPS_PROXY=.
Un record est un type de structure récent dans Java. Il ne dispose pas de SETTER. Donc Jackson ne peut travailler qu’avec les constructeurs. Pour cela, il faut lui fournir :
Exemple :
/**
* Constructeur contenant tous les attributs mais avec le premier en dernier pour fournit à Jackson un constructeur à utitiliser (les setter
* n'existe pas dans un record). De plus, pour Jackson, il faut ajouter un @JsonCreator sur le constructeur et un @JsonProperty sur chaque
* paramètre.
*/
@JsonCreator
public HubeeFolderDto(@JsonProperty("externalId") String externalId, @JsonProperty("applicant") HubeeApplicantDto applicant,
@JsonProperty("cases") List<HubeeCaseDto> cases, @JsonProperty("attachments") List<HubeeAttachmentDto> attachments,
@JsonProperty("createDateTime") Date createDateTime, @JsonProperty("updateDateTime") Date updateDateTime,
@JsonProperty("closeDateTime") Date closeDateTime, @JsonProperty("id") String id, @JsonProperty("globalStatus") String globalStatus,
@JsonProperty("processCode") String processCode) {
this(processCode, externalId, applicant, cases, attachments, createDateTime, updateDateTime, closeDateTime, id, globalStatus);
}
De temps en temps, Eclipse redéfini la configuration d’un ou plusieurs projets qui, du coup, ne sont plus cohérents avec la configuration du workspace ou du pom.xml.
La principale cause est la configuration du compilateur. Pour rechercher puis corriger ces erreurs :
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
Le fichier variablesPourScripts.properties.gpg est une version chiffrée du fichier variablesPourScripts.properties. Ce dernier était utilisé pour contenir les variables d’environnement utilisées par les différents scripts SH du socle. Mais, parmis elles, se trouvaient des mots de passe. Pour éviter que ces derniers soient trop facilement accessibles, en plus du bon chmod, le plus simple est de chiffrer le document. Pour cela, la commande gpg est utilisée :
gpg -c variablesPourScripts.properties avec la passphrase nouvelleAnnee2023 a permis le chiffrement du fichier.gpg -dq variablesPourScripts.properties.gpg permet le déchiffrement.Associée à la commande eval "$(...)" permettant d’exécuter la sortie standard d’une commande, on obtient l’exécution du fichier de properties et la définition des variables.
Ce micro-service ne démarre pas si un référentiel ne s’initialise pas à cause d’une erreur 401 sur un appel HTTP.
Il est possible que des données en cache soit le problème dans le cas où :
Alors le service tente de télécharger les données avec un vieux token. Il faut retirer les données de token présentes dans le cache.
/!\ En cas de problème entre l’exécution du code dans Eclipse et celle du code compilé, regarder à Proguard !! /!\
/!\ Pour analyser rapidement un problème, il est possible de debugger, non le code offusqué, mais le code des librairies. Un point d’arrêt sur exception est une bonne solution.
Les micro-services démarrés en ligne de commande ont un code offusqué. Ils n’est pas possible de faire du debug dans ces conditions.
En cas de problème non reproductible en démarrant le micro-service depuis Eclipse, il faut
<excludeGroupIds>com.github.talbotgui.psl.socle</excludeGroupIds> du pom.xml du soclemvn clean install -DskipTests -f ./socle-xxxx/Après usage, annuler les modifications du pom.xml et recompiler le projet.