Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione
Documentazione di Apigee X. Informazioni
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 per l'attributo mapIdentifier
sia impostato una mappa chiave-valore valida nel criterio relativo alle operazioni sulla mappa dei valori chiave.
Per correggere il criterio di esempio mostrato sopra, puoi specificare mapIdentifier
per 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 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 tracciamento 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 gli elementi nell'elemento faultstring
della risposta di 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 codice XML del criterio operazioni della mappa chiave-valore con errori, verifica che il nome della variabile specificata 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>
Verifica 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 dell'interfaccia utente di Edge. In caso contrario, se è stato creato a livello di organizzazione o apiproxy, devi utilizzare l'API Management per verificare se è criptato. Vedi anche Gestione e utilizzo delle KVM.Per verificare se una KVM con ambito di ambiente è criptata nella UI 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 di 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 la classe API di gestione. Se utilizzi l'API, una risposta di esempio che mostra sia l'impostazione criptata sia gli asterischi per il valore è la seguente:
{ "encrypted": true, "entry": [ { "name": "foo", "value": "*****" } ], "name": "encrypted" }
Se la mappa chiave-valore è una KVM criptata e il nome della variabile utilizzato nella L'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, viene visualizzato 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 l'esempio di criterio delle operazioni della mappa chiave-valore mostrato sopra, puoi modificare
il valore dell'attributo assignTo
a 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>