Vous consultez la documentation d'Apigee et d'Apigee hybrid.
Consultez la documentation d'Apigee Edge.
ResourceDoesNotExist
Message d'erreur
Le déploiement du proxy d'API par le biais de l'interface utilisateur ou l'API Apigee échoue avec le message d'erreur suivant :
Error Deploying Revision <var>revision_number</var> to <var>environment</var>
Resource with name <var>ResourceURL</var> and type java does not exist.
Exemple de message d'erreur
Error Deploying Revision 1 to test
Resource with name myresource.jar and type java does not exist.
Exemple de capture d'écran d'erreur
Cause
Si la ressource spécifiée dans l'élément <ResourceURL>
de la règle JavaCallout n'existe pas au niveau de l'environnement ou du proxy d'API, le déploiement du proxy d'API échoue.
Diagnostic
Identifiez l'environnement et le nom de la ressource. Vous trouverez cette information dans le message d'erreur. Par exemple, dans l'erreur suivante, l'environnement est
test
et le nom de la ressource utilisé dans l'élément <ResourceURL>
estmyresource.jar
.Error Deploying Revision 1 to test Resource with name myresource.jar and type java does not exist.
Déterminez la règle JavaCallout qui utilise la ressource identifiée à l'étape 1 ci-dessus.
Par exemple, la règle suivante spécifie la valeur de <
ResourceURL>
comme étantmyresource.jar
, ce qui correspond à la valeur figurant dans le message d'erreur :<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JavaCallout name="hello-java"> <ClassName>com.apigeesample.HelloJava</ClassName> <ResourceURL>java://myresource.jar</ResourceURL> </JavaCallout>
Déterminez si la ressource fait partie du proxy dAPI défaillant ou si elle importée au niveau de l'environnement. Si ce n'est pas le cas, il s'agit de la cause de l'erreur.
Accédez à l'onglet "Resources" (Ressources) dans le volet de navigation de l'éditeur de proxys d'API pour afficher toutes les ressources importées au niveau du proxy d'API. Dans cet exemple, le proxy d'API ne contient aucune ressource importée.
Des ressources peuvent être disponibles au niveau de l'environnement. Pour en savoir plus, consultez la page Fichiers de ressources.
Pour déterminer si la ressource existe au niveau de l'environnement, exécutez l'appel d'API suivant en utilisant curl :
curl \ "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles/java/myresource.jar" \ -H "Authorization: Bearer $TOKEN"
Où
$TOKEN
est défini sur votre jeton d'accès OAuth 2.0, comme décrit dans la section Obtenir un jeton d'accès OAuth 2.0. Pour en savoir plus sur les optionscurl
utilisées dans cet exemple, consultez la section Utiliser curl. Pour obtenir une description des variables d'environnement utilisées, consultez la section Définir des variables d'environnement pour les requêtes API Apigee.
Si vous recevez un code d'état 404 comme réponse pour ces API, la ressource est manquante au niveau de l'environnement.
Si la ressource n'est pas disponible au niveau du proxy d'API et de l'environnement, l'erreur de déploiement est renvoyée :
Resource with name myresource.jar and type java does not exist. ```
Solution
Assurez-vous que la ressource spécifiée dans l'élément <ResourceURL>
existe bien au niveau du proxy d'API ou de l'environnement. Pour en savoir plus, consultez la page Gérer les ressources.
Pour corriger l'exemple de règle JavaCallout présenté ci-dessus, importez le fichier JAR au niveau approprié (proxy d'API ou environnement).
NoResourceForURL
Message d'erreur
Le déploiement du proxy d'API par le biais de l'interface utilisateur ou l'API Apigee échoue avec le message d'erreur suivant :
Error in deployment for environment <var>environment</var>
The revision is deployed, but traffic cannot flow. Could not locate a resource with URL <var>ResourceURL</var>
Exemple de message d'erreur
Error in deployment for environment test
The revision is deployed, but traffic cannot flow. Could not locate a resource with URL java://myresource.jar
Exemple de capture d'écran d'erreur
Cause
Cette erreur peut se produire si le fichier de ressources est corrompu ou partiellement importé, même s'il semble exister au niveau du proxy d'API ou de l'environnement.
Diagnostic
Identifiez l'environnement et le nom de la ressource. Vous trouverez cette information dans le message d'erreur. Par exemple, dans l'erreur suivante, le nom de l'environnement est
test
et le nom de la ressource utilisé dans l'élément <ResourceURL>
estmyresource.jar
.Error in deployment for environment test The revision is deployed, but traffic cannot flow. Could not locate a resource with URL java://myresource.jar
Assurez-vous que la ressource est importée au niveau du proxy d'API ou de l'environnement. Dans l'exemple ci-dessous, vous pouvez voir que la ressource
myresource.jar
est importée au niveau du proxy d'API.Des ressources peuvent être disponibles au niveau de l'environnement. Pour en savoir plus, consultez la page Fichiers de ressources.
Pour déterminer si la ressource existe au niveau de l'environnement, exécutez l'appel d'API suivant en utilisant curl :
curl \ "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles/java/myresource.jar" \ -H "Authorization: Bearer $TOKEN"
Où
$TOKEN
est défini sur votre jeton d'accès OAuth 2.0, comme décrit dans la section Obtenir un jeton d'accès OAuth 2.0. Pour en savoir plus sur les optionscurl
utilisées dans cet exemple, consultez la page Utiliser curl.Si vous recevez un code d'état 404 comme réponse pour ces API, la ressource est manquante au niveau de l'environnement.
Solution
- Si vous déterminez que la ressource existe au niveau du proxy d'API ou de l'environnement, supprimez la ressource et réimportez-la, comme décrit à l'étape 2. Sinon, passez à l'étape 3.
Pour supprimer la ressource au niveau du proxy d'API, accédez à l'onglet "Resources" (Ressources) dans le volet de navigation de l'éditeur de proxys d'API, puis cliquez sur le bouton "X" à côté de la ressource, comme illustré ci-dessous.
Pour supprimer une ressource dans l'environnement, utilisez le verbe DELETE sur les appels d'API utilisés précédemment lors des étapes de diagnostic. Par exemple, pour supprimer la ressource au niveau de l'environnement, saisissez la commande suivante :
curl -X DELETE \ "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles/java/myresource.jar" \ -H "Authorization: Bearer $TOKEN"
Où
$TOKEN
est défini sur votre jeton d'accès OAuth 2.0, comme décrit dans la section Obtenir un jeton d'accès OAuth 2.0. Pour en savoir plus sur les optionscurl
utilisées dans cet exemple, consultez la page Utiliser curl.Importez le fichier JAR au niveau approprié (proxy d'API ou environnement).
Si la nouvelle importation de la ressource ne résout pas le problème, contactez l'assistance Apigee.
JavaCalloutInstantiationFailed
Message d'erreur
Le déploiement du proxy d'API par le biais de l'interface utilisateur ou l'API Apigee échoue avec le message d'erreur suivant :
Error in deployment for environment <var>environment</var>
The revision is deployed, but traffic cannot flow. Failed to instantiate the JavaCallout Class <var>class_name</var>
Ou
Error in deployment for environment <var>environment</var>.
The revision is deployed and traffic can flow, but flow may be impaired. Failed to instantiate the JavaCallout Class <var>class_name</var>
Exemple de message d'erreur
Error in deployment for environment test
The revision is deployed, but traffic cannot flow. Failed to instantiate the JavaCallout Class my.class
Exemple de capture d'écran d'erreur
Cause
Voici les causes typiques de cette erreur :
Cause | Description |
Fichier JAR manquant | Le fichier JAR contenant la classe Java identifiée dans l'erreur n'est pas importé. |
Fichier JAR corrompu | Le fichier JAR contenant la classe Java identifiée dans l'erreur est corrompu ou partiellement importé. |
Fichier de classe manquant | Le fichier de classe Java identifié dans l'erreur ne fait pas partie du fichier JAR spécifié dans >ResourceURL< ou dans les fichiers JAR dépendants. |
Problème de code Java | Le code contient une erreur, par exemple un constructeur manquant, un problème de dépendance du code ou autre. |
Étape de diagnostic commune
Identifiez le nom de l'environnement et de la classe dont l'importation a échoué. Par exemple, dans le message d'erreur suivant, le nom de l'environnement est
test
et le nom de la classe estmy.class
:Error in deployment for environment test The revision is deployed, but traffic cannot flow. Failed to instantiate the JavaCallout Class my.class
Cause : fichier JAR manquant
Diagnostic
- Déterminez le fichier JAR qui est censé contenir la classe (identifiée à l'étape 1 ci-dessus) et qui ne peut pas être instancié.
- Vérifiez si le fichier JAR spécifique est importé au niveau du proxy d'API ou de l'environnement. Si le fichier JAR n'est importé à aucun de ces niveaux, accédez à la section "Solution".
- Si le fichier JAR est importé, accédez à la section Cause : fichier JAR corrompu.
Solution
- Si le fichier JAR est corrompu ou partiellement importé, recréez le fichier JAR et importez-le au niveau approprié (proxy d'API ou environnement).
- Redéployez le proxy d'API.
Cause : fichier JAR corrompu
Diagnostic
- Déterminez le fichier JAR qui est censé contenir la classe (identifiée à l'étape 1 ci-dessus) et qui ne peut pas être instancié.
- Vérifiez que le fichier JAR spécifique est corrompu. Par exemple, si vous ne pouvez pas extraire les données du fichier JAR, car il est corrompu ou partiellement importé. S'il est corrompu, accédez à la section "Solution".
- Si le fichier JAR n'est pas corrompu, accédez à la cause Cause : fichier de classe manquant.
Solution
- Recréez le ou les fichiers JAR corrompus et importez-les au niveau approprié (proxy d'API ou environnement).
- Redéployez le proxy d'API.
Cause : fichier de classe manquant
Diagnostic
- Vérifiez si le fichier de classe Java spécifique (identifié à l'étape 1 ci-dessus) fait partie du fichier JAR spécifié dans >ResourceURL< ou de l'un des fichiers JAR dépendants.
- Si le fichier de classe n'existe dans aucun fichier JAR, vous avez déterminé l'origine de l'erreur. Accédez à la section "Solution".
- Si le fichier de classe existe dans l'un des fichiers JAR spécifiés dans la règle JavaCallout, il doit y avoir un problème avec le code Java ou la classe dépendante qui entraîne cette erreur. Pour obtenir de l'aide, contactez l'assistance Apigee.
Solution
- Recréez le fichier JAR avec le ou les fichiers de classe manquants, puis importez-le au niveau approprié (proxy d'API ou environnement).
- Redéployez le proxy d'API.
Importer le fichier JAR
Vérifiez que l'élément de ressource contenant toutes les classes nécessaires existe au niveau du proxy d'API ou de l'environnement. Pour en savoir plus, consultez la page Fichiers de ressources.
Pour importer une ressource au niveau du proxy d'API, cliquez sur + (signe plus) dans l'onglet "Resources" (Ressources), sélectionnez Import file (Importer un fichier), puis importez un fichier depuis votre machine locale. Le nom du fichier doit correspondre à l'élément >ResourceURL<, mais sans le préfixe
java://
.Si vous souhaitez qu'une ressource soit disponible pour plusieurs proxys d'API dans le même environnement, importez-la dans l'environnement. Vous devrez utiliser l'API Apigee, comme décrit sur la page Fichiers de ressources.
Par exemple, saisissez l'appel d'API suivant depuis la machine locale pour importer le fichier spécifié au niveau de l'environnement :
curl -H "Content-Type: application/octet-stream" \ -X POST -H "Authorization: Bearer $TOKEN" --data-binary @{classes.jar} \ "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/resourcefiles?name=myresouce.jar&type=java"
Où
$TOKEN
est défini sur votre jeton d'accès OAuth 2.0, comme décrit dans la section Obtenir un jeton d'accès OAuth 2.0. Pour en savoir plus sur les optionscurl
utilisées dans cet exemple, consultez la page Utiliser curl.Envoyez l'appel d'API depuis le même répertoire que le fichier.
Pour rendre le fichier disponible pour tous les proxys d'API dans tous les environnements de l'organisation, vous pouvez omettre les détails de l'environnement dans le chemin de base. Exemple :
curl -H "Content-Type: application/octet-stream" \ -X POST -H "Authorization: Bearer $TOKEN" --data-binary @{classes.jar} \ "https://apigee.googleapis.com/v1/organizations/$ORG/resourcefiles?name=myresouce.jar&type=java"
Où
$TOKEN
est défini sur votre jeton d'accès OAuth 2.0, comme décrit dans la section Obtenir un jeton d'accès OAuth 2.0. Pour en savoir plus sur les optionscurl
utilisées dans cet exemple, consultez la page Utiliser curl.