Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
UnsupportedOperationException
Codice di errore
java.lang.UnsupportedOperationException
Corpo della risposta di errore
{
"fault":{
"faultstring":"java.lang.UnsupportedOperationException",
"detail":{
"errorcode":"Internal Server Error"
}
}
}
Causa
Questo errore si verifica se l'attributo mapIdentifier
è impostato su una stringa vuota nel criterio Operazioni mappa valori chiave.
Diagnosi
Esamina tutte le norme relative alle operazioni di mappatura delle chiavi e dei valori nel proxy API specifico in cui si è verificato l'errore. Se esiste un criterio Operazioni mappa delle chiavi e dei valori in cui l'attributo
mapIdentifier
è impostato come stringa vuota, è questa la causa dell'errore.Ad esempio, il seguente criterio di operazioni di mappatura delle coppie chiave-valore ha un
mapIdentifier
vuoto:<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="StoreKvm" mapIdentifier=""> <DisplayName>StoreKvm</DisplayName> <Properties/> <ExclusiveCache>false</ExclusiveCache> <ExpiryTimeInSecs>300</ExpiryTimeInSecs> <Put override="true"> <Key> <Parameter ref="request.queryparam.key"/> </Key> <Value ref="request.queryparam.value"/> </Put> <Scope>environment</Scope> </KeyValueMapOperations>
Risoluzione
Assicurati che l'attributo mapIdentifier
sia impostato su una mappa chiave-valore valida nel criterio Operazioni mappa chiave-valore.
Per correggere il criterio di esempio mostrato sopra, puoi specificare mapIdentifier
a una mappa di valori chiave esistente UserLocationMap
.
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="StoreKvm" mapIdentifier="UserLocationMap">
<DisplayName>StoreKvm</DisplayName>
<Properties/>
<ExclusiveCache>false</ExclusiveCache>
<ExpiryTimeInSecs>300</ExpiryTimeInSecs>
<Put override="true">
<Key>
<Parameter ref="request.queryparam.key"/>
</Key>
<Value ref="request.queryparam.value"/>
</Put>
<Scope>environment</Scope>
</KeyValueMapOperations>
SetVariableFailed
Codice di errore
steps.keyvaluemapoperations.SetVariableFailed
Corpo della risposta di errore
{ "fault":{ "faultstring":"Failed to set variable variable_name in KeyValueMapStepDefinition policy_name", "detail":{ "errorcode":"steps.keyvaluemapoperations.SetVariableFailed" } } }
Esempio di messaggio di errore
{
"fault":{
"faultstring":"Failed to set variable myvar in KeyValueMapStepDefinition EncryptedKVM",
"detail":{
"errorcode":"steps.keyvaluemapoperations.SetVariableFailed"
}
}
}
Causa
Questo errore si verifica se provi a recuperare un valore da una mappa di valori delle chiavi criptata
e a impostare il valore su una variabile il cui nome non ha il prefisso private.
. Il prefisso, obbligatorio per motivi di sicurezza di base durante il debug, nasconde i valori criptati dalle sessioni di Trace e debug del proxy API.
Diagnosi
1.
Identifica il criterio Operazioni di mappatura delle coppie chiave-valore in cui si è verificato l'errore e il nome della variabile a cui non è possibile impostare il valore. Puoi trovare entrambi questi elementi nell'elemento faultstring
della risposta all'errore. Ad esempio, nel seguente faultstring
, il nome del criterio è EncryptedKVM
e la variabile è myvar
:
"faultstring":"Failed to set variable myvar in KeyValueMapStepDefinition EncryptedKVM"
1.
Nel file XML del criterio di operazioni di mappatura delle chiavi e dei valori non riuscito, verifica che il nome della variabile specificato nell'attributo assignTo
dell'elemento <Get>
corrisponda al nome della variabile identificato nella stringa di errore (passaggio 1 sopra). Ad esempio, il seguente criterio di operazioni di mappatura di valori chiave specifica una variabile denominata myvar
nell'elemento <Get>
, che corrisponde a quella in faultstring
:
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="testEncrypted">
<DisplayName>KeyValueMapOperations-1</DisplayName>
<Properties/>
<ExclusiveCache>false</ExclusiveCache>
<ExpiryTimeInSecs>300</ExpiryTimeInSecs>
<Get assignTo="myvar" index="1">
<Key>
<Parameter>foo</Parameter>
</Key>
</Get>
<Scope>environment</Scope>
</KeyValueMapOperations>
Controlla se la mappa chiave/valore specificata nell'attributo
mapIdentifier
è una KVM criptata.Per verificare se una KVM è criptata nell'interfaccia utente di Apigee:
- Nell'interfaccia utente di Apigee, fai clic su Amministrazione nel menu di navigazione a sinistra.
- Fai clic su Ambienti.
- Fai clic su Mappe chiave-valore.
- Trova la mappa chiave-valore che vuoi utilizzare.
- Fai clic sulla freccia a sinistra del nome per espandere l'elenco dei valori.
- Le mappe di valori chiave criptate mostrano i valori mascherati con asterischi nell'interfaccia utente (*****), come mostrato in Informazioni sulle mappe di valori chiave criptate.
Se la mappa di valori delle chiavi è una KVM criptata e il nome della variabile utilizzato nell'attributo
assignTo
dell'elemento<Get>
non ha il prefissoprivate
. Questo è il motivo dell'errore.Nel criterio di operazioni di mappatura delle coppie chiave-valore di esempio mostrato sopra, la mappatura delle coppie chiave-valore
testEncrypted
è criptata e il nome della variabilemyvar
non ha il prefissoprivate
. Di conseguenza, ricevi il codice di errore:steps.keyvaluemapoperations.SetVariableFailed
Risoluzione
Assicurati che il nome della variabile abbia il prefisso private.
nell'attributo assignTo
dell'elemento <Get>
nel criterio Operazioni mappa valori chiave se la mappa valori chiave
utilizzata è criptata.
Per correggere il criterio di operazioni di mappatura delle coppie chiave-valore di esempio mostrato sopra, puoi modificare il valore dell'attributo assignTo
in private.myvar
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="testEncrypted">
<DisplayName>KeyValueMapOperations-1</DisplayName>
<Properties/>
<ExclusiveCache>false</ExclusiveCache>
<ExpiryTimeInSecs>300</ExpiryTimeInSecs>
<Get assignTo="private.myvar" index="1">
<Key>
<Parameter>foo</Parameter>
</Key>
</Get>
<Scope>environment</Scope>
</KeyValueMapOperations>