Stai visualizzando la documentazione relativa a Apigee e Apigee ibrido.
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
viene impostato su una stringa vuota nel criterio Operazioni mappa chiave-valore.
Diagnosi
Esamina tutti i criteri Key Value Map Operations nel proxy API specifico in cui si è verificato l'errore. Se esiste un criterio per le operazioni di mappatura chiave-valore in cui l'attributo
mapIdentifier
è impostato come una stringa vuota, questo è 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 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>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" } } }
Messaggio di errore di esempio
{
"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 mappatura 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:
- Nella UI di Apigee, fai clic su Admin (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 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 chiave-valore è una KVM criptata e il nome della variabile utilizzato nel L'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 chiave-valore se la mappa chiave-valore
utilizzata è crittografata.
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>