Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X. info
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
viene impostato su una stringa vuota nel criterio Operazioni sulla mappa di valori chiave.
Diagnosi
Esamina tutti i criteri Key Value Map Operations 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>apiproxy</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>apiproxy</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 chiave-valore criptata e imposti il valore su una variabile il cui nome non ha il prefisso private.
. Il prefisso, necessario per le finalità di sicurezza di base durante il debug, nasconde i valori criptati dalle sessioni di traccia e di debug del proxy API.
Diagnosi
1.
Identifica il criterio operazioni di mappatura chiave-valore in cui si è verificato l'errore e il nome della variabile su 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 Operazioni mappa valori-chiave specifica una variabile denominata myvar
nell'elemento <Get>
, che corrisponde a quanto contenuto 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. Se la KVM è criptata nell'ambito dell'ambiente, puoi verificare che sia criptata nella UI Edge. In caso contrario, se è stato creato a livello di organizzazione o apiproxy, devi utilizzare l'API Management per verificare se è criptato. Vedi anche Gestire e utilizzare le KVM.Per verificare se un KVM basato su ambito è criptato nell'interfaccia utente di Edge:
- Nell'interfaccia utente di Edge, 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 chiave-valore criptate mostrano i valori mascherati con asterischi nell'interfaccia utente (*****) come illustrato in Informazioni sulle KVM criptate.
Per verificare se una KVM con ambito a livello di organizzazione, ambiente o apiproxy è criptata, utilizza le API di gestione. Se utilizzi l'API, una risposta di esempio che mostra sia l'impostazione criptata sia gli asterischi per il valore ha il seguente aspetto:
{ "encrypted": true, "entry": [ { "name": "foo", "value": "*****" } ], "name": "encrypted" }
Se la mappa chiave-valore è una KVM criptata e il nome della variabile utilizzato nell'attributo
assignTo
dell'elemento<Get>
non ha il prefissoprivate
. Questa è la causa 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>