<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
Symptom
Die Bereitstellung von API-Proxy- oder Shared-Flow-Versionen über die Edge-Benutzeroberfläche oder Verwaltungs-API schlägt mit dem Fehler Configuration failed (Konfiguration fehlgeschlagen) fehl.
Fehlermeldung
Sie erhalten eine Fehlermeldung in der Edge-Benutzeroberfläche, wie unten dargestellt:
The revision is deployed, but traffic cannot flow.
com.apigee.kernel.exceptions.spi.UncheckedException{ code = application.bootstrap.FailedToConfigure, message = Configuration failed, associated contexts = []}
Hier ist der Screenshot einer Beispielfehlermeldung in der Edge-Benutzeroberfläche:
Mögliche Ursachen
Die Bereitstellung eines API-Proxys kann mit dem Fehler „Konfiguration fehlgeschlagen“ fehlschlagen. Fehler aus vielen verschiedenen Gründen angezeigt. In der folgenden Tabelle sind einige häufig auftretende Ursachen aufgeführt, die zu diesem Fehler führen :
Ursache | Beschreibung | Geltende Anleitung zur Fehlerbehebung |
Fehlende Java-Klasse in der JavaCallout-Richtlinie | In der JAR-Datei, auf die von der JavaCallout-Richtlinie verwiesen wird, fehlt eine Java-Klasse. | Edge Private Cloud-Nutzer |
Falsche Operanden in Bedingungen im Bedingungsablauf | Operanden/Ausdrücke, die auf einer oder beiden Seiten der Operatoren in den Bedingungen verwendet werden, sind ungültig. | |
Ungültiger Hostname in der Richtlinie für die Nachrichtenprotokollierung | Der in der MessageLogging-Richtlinie verwendete Hostname kann nicht aufgelöst werden oder enthält möglicherweise einige unerwünschte Sonderzeichen. | |
Ungültiger KeyValueMap-Name | Die KeyValueMap ist in der Richtlinie "KeyValueMapOperations" im API-Proxy ungültig oder leer. |
Allgemeine Diagnoseschritte
Rufen Sie mit der folgenden API den Bereitstellungsstatus für die spezifische Version des API-Proxys ab, bei der Sie den Bereitstellungsfehler beobachten:
curl -v <management-server-host>:<port#>/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/deployments -u <user>
Hier ist eine Beispielausgabe der obigen API:
"server" : [ { "error" : "com.apigee.kernel.exceptions.spi.UncheckedException{ code = application.bootstrap.FailedToConfigure, message = Configuration failed, associated contexts = []}", "status" : "error", "type" : [ "message-processor" ], "uUID" : "0a20926c-f4bf-401b-af84-05fd84b9f492" }, { "error" : "com.apigee.kernel.exceptions.spi.UncheckedException{ code = application.bootstrap.FailedToConfigure, message = Configuration failed, associated contexts = []}", "status" : "error", "type" : [ "message-processor" ], "uUID" : "f2ee6ab4-a108-4465-a7ba-b56530d8e3fc" }, { "error" : "com.apigee.kernel.exceptions.spi.UncheckedException{ code = application.bootstrap.FailedToConfigure, message = Configuration failed, associated contexts = []}", "status" : "error", "type" : [ "message-processor" ], "uUID" : "0f41991e-b310-4e77-aac5-5fdb150ef9f6" },
In der Ausgabe des Bereitstellungsstatus wird in jedem Message Processor die Fehlermeldung „Configuration failed“ (Konfiguration fehlgeschlagen) angezeigt.
Melden Sie sich bei einem der Message Processor an und prüfen Sie das Protokoll
/opt/apigee/var/log/edge-message-processor/logs/system.log
. Prüfen Sie, ob während der Bereitstellung des API-Proxys Fehler aufgetreten sind.Abhängig vom Fehler/Ausnahmen im Message Processor-Protokoll müssen Sie die entsprechenden Schritte zur Fehlerbehebung ausführen.
In den folgenden Abschnitten finden Sie einige der am häufigsten auftretenden Ausnahmen, die zum Bereitstellungsfehler Konfiguration fehlgeschlagen führen, sowie Schritte zur Fehlerbehebung.
Ursache: Fehlende Java-Klasse in der JavaCallout-Richtlinie
Diagnose
- Wenn in den Message Processor-Logs während der Bereitstellung eines API-Proxys (DeployEvent) eine Ausnahme mit der Meldung "Failed to Instantiate the JavaCallout Class" (Fehler beim Instanziieren der JavaCallout-Klasse) während der Bereitstellung eines API-Proxys (DeployEvent) angezeigt wird, fahren Sie mit Schritt 2 fort. Falls nicht, lesen Sie den Abschnitt Falsche Operanden in Bedingungen im Bedingungsablauf.
Der Message Processor zeigt während der Bereitstellung des API-Proxys die folgende Ausnahme an:
2017-10-10 05:02:42,330 Apigee-Main-5 ERROR MESSAGING.CONFIGURATION - MessageProcessorServiceImpl.configure() : error configuring config events [DeployEvent{organization='myorg', application='oauth2', applicationRevision='14', deploymentSpec=basepath=/;env=dev;, deploymentID=null}] com.apigee.kernel.exceptions.spi.UncheckedException: Failed to instantiate the JavaCallout Class com.something.apigee.callout.crypto.main.SecretCallout at com.apigee.steps.javacallout.JavaCalloutStepDefinition.newInstance(JavaCalloutStepDefinition.java:89) ~[javacallout-1.0.0.jar:na] at com.apigee.messaging.runtime.StepDefinition.getStepDefinitionExecution(StepDefinition.java:230) ~[message-processor-1.0.0.jar:na] … <snipped>
Die Fehlermeldung in der obigen Ausnahme gibt an, dass die JavaCallout-Klasse
com.something.apigee.callout.crypto.main.SecretCallout
nicht instanziiert werden konnte. Dieser Fehler tritt im Allgemeinen auf, wenn die spezifische Klasse nicht in der JAR-Datei verfügbar ist, die in der JavaCallout-Richtlinie oder in einer ihrer abhängigen JAR-Dateien festgelegt ist.Überprüfe die JAR-Datei, die alle zum Paket
com.something.apigee.callout.crypto.main
gehörenden Klassen enthält, und bestätige, dass die spezifische Klassecom.something.apigee.callout.crypto.main.SecretCallout
fehlte.
Auflösung
- Fügen Sie die fehlende Klasse zur spezifischen JAR-Datei hinzu und laden Sie die JAR-Datei hoch.
- Stellen Sie den API-Proxy neu bereit.
- Im obigen Beispiel haben wir das Problem wie folgt gelöst:
<ph type="x-smartling-placeholder">
- </ph>
- Die fehlende Klasse
com.something.apigee.callout.crypto.main.SecretCallout
wird der JAR-Datei hinzugefügt. - Aktualisierte JAR-Datei hochladen und API-Proxy noch einmal bereitstellen
- Die fehlende Klasse
Ursache: Im Bedingungsablauf werden mit Operatoren falsche Operanden verwendet
Diagnose
Wenn in den Message Processor-Logs während der Bereitstellung eines API-Proxys oder eines freigegebenen Ablaufs ein
com.apigee.expressions.parser.ParseException
angezeigt wird, wie in den Beispielnachrichten unten gezeigt, fahren Sie mit Schritt 2 fort. Ist dies nicht der Fall, fahren Sie mit der nächsten Ursache fort: Ungültiger Hostname in der Richtlinie für die Nachrichtenprotokollierung.Beispiel für Fehlermeldung
com.apigee.expressions.parser.ParseException: Both the operands for EQUALS expression should be data expressions
Sehen wir uns ein Beispiel an, das die Diagnose dieses Problems veranschaulicht.
Beispiel : Operanden für <Operator> Ausdruck sollte Datenausdrücke sein.
Der Message Processor zeigt während der Bereitstellung eines freigegebenen Ablaufs die folgende Ausnahme an:
2017-11-23 09:11:04,498 Apigee-Main-6 ERROR MESSAGING.RUNTIME - AbstractConfigurator.loadXMLConfigurations() : Unable to Load default for path /organizations/myorg/apiproxies/Introspection/revisions/12/sharedflows/default 2017-11-23 09:11:04,499 Apigee-Main-6 ERROR MESSAGING.RUNTIME - Application.sync() : sync error for Introspection and revision 12 2017-11-23 09:11:04,499 Apigee-Main-6 ERROR MESSAGING.RUNTIME - Application.sync() : Actual Error com.apigee.expressions.parser.ParseException: Both the operands for EQUALS expression should be data expressions at com.apigee.expressions.parser.ExpressionParser.buildExpressionTree(ExpressionParser.java:337) ~[expressions-1.0.0.jar:na] at com.apigee.expressions.parser.ExpressionParser.parse(ExpressionParser.java:24) ~[expressions-1.0.0.jar:na] at com.apigee.expressions.parser.ExpressionParser.parseLogicExpression(ExpressionParser.java:28) ~[expressions-1.0.0.jar:na] at com.apigee.messaging.runtime.Step.getExpression(Step.java:67) ~[message-processor-1.0.0.jar:na] at com.apigee.messaging.runtime.Step.handleAdd(Step.java:58) ~[message-processor-1.0.0.jar:na] at com.apigee.messaging.runtime.SharedFlowRuntime.addStep(SharedFlowRuntime.java:81) ~[message-processor-1.0.0.jar:na] … <snipped>
Die Fehlermeldung im ParseException-Objekt "
Both the operands for EQUALS expression should be data expressions
" gibt an, dass bei einer Bedingung mit dem Operator „=“, „Ungleich“ (!=) oder „Statistiken mit (=|)“ ein Problem vorliegt.Sehen Sie sich die Bedingungen in allen Bedingungsabläufen an, für die der in der Fehlermeldung genannte Operator verwendet wird, und prüfen Sie, ob eines der folgenden Probleme vorliegt:
- Die Ausdrücke auf beiden Seiten des Operators sind vom gleichen Typ. Wenn sich beispielsweise auf der linken Seite des Operators eine Stringvariable befindet, benötigen Sie auf der rechten Seite eine andere Stringvariable oder einen anderen Stringwert.
- Zwischen den Operatoren werden gültige Variablen verwendet.
- Zwischen dem Operator und den einzelnen Ausdrücken befindet sich ein Leerzeichen.
Wenn eines der oben genannten Kriterien nicht erfüllt ist, wird die ParseException "
Both the operands for EQUALS expression should be data expressions
" ausgegeben.Sehen wir uns ein Beispiel an, um dieses Problem zu verstehen. Hier ist ein Beispiel für eine Fehlerbedingung,
<Condition> (fault.name = "invalid_access_token") or(fault.name = "ApiKeyNotApproved") </Condition>
In diesem Beispiel befindet sich kein Leerzeichen zwischen dem und dann auf „Nächste Bedingung“. Wenn also die zweite Bedingung geparst wird, wird der erste Ausdruck für den EQUALS-Operator als "or(error.name") verwendet. Dies ist kein gültiger Variablenname, daher wird er nicht als gültiger Datenausdruck behandelt. Als Konsequenz erhalten Sie diese Ausnahme:
com.apigee.expressions.parser.ParseException: Both the operands for EQUALS expression should be data expressions
Auflösung
- Achten Sie darauf, dass auf beiden Seiten der Operatoren immer korrekte Datenausdrücke vorhanden sind.
Im oben erläuterten Beispiel wurde sichergestellt, dass nach dem „oder“ wie im Code-Snippet beschrieben:
<Condition> (fault.name = "invalid_access_token") or (fault.name = "ApiKeyNotApproved") </Condition>
Ungültiger Hostname in MessageLogging-Richtlinie
Diagnose
Wenn in den Message Processor-Logs während der Bereitstellung des API-Proxys oder des freigegebenen Ablaufs eine Ausnahme mit der Meldung "Ungültiger Hostname" auftritt, fahren Sie mit Schritt 2 fort. Ist dies nicht der Fall, fahren Sie mit der nächsten Ursache fort: Ungültiger KeyValueMap-Name.
com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handler
Die folgenden zwei Beispiele veranschaulichen, wie Sie dieses Problem beheben können.
Beispiel 1: HostName mit unerwünschtem Sonderzeichen
Der Message Processor zeigt während der Bereitstellung des API-Proxys die folgende Ausnahme an:
2018-01-20 02:12:13,535 Apigee-Main-3 ERROR MESSAGING.CONFIGURATION - MessageProcessorServiceImpl.configure() : error configuring config events [DeployEvent{organization='myorg', application='providersearch', applicationRevision='4', deploymentSpec=basepath=/;env=prod;, deploymentID=null}] com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handler at com.apigee.messaging.runtime.destinations.SyslogDestination.<init>(SyslogDestination.java:44) ~[message-processor-1.0.0.jar:na] at com.apigee.messaging.runtime.destinations.SysLoggerFactory.getInstance(SysLoggerFactory.java:39) ~[message-processor-1.0.0.jar:na] at com.apigee.messaging.runtime.destinations.DestinationRegistry.newDestination(DestinationRegistry.java:44) ~[message-processor-1.0.0.jar:na] ...<snipped>
Die obige Ausnahme zeigt, dass die Bereitstellung aufgrund von "Ungültiger Hostname '<Hostname>'" fehlschlägt. for Syslog-Handler“. Dies weist darauf hin, dass der in der MessageLogging-Richtlinie verwendete Hostname ein ungültiger Hostname ist.
Eine sorgfältige Untersuchung der Ausnahme im Message Processor-Protokoll zeigt, dass sich ein unerwünschtes Sonderzeichen "/" befindet. am Ende des Hostnamens
'splunkprod.myorg.com/'.
Dieses unerwünschte Sonderzeichen war die Ursache für den Bereitstellungsfehler.
Auflösung
- Ändern Sie die MessageLogging-Richtlinie, um alle unerwünschten Sonderzeichen zu entfernen, um das Problem zu beheben.
- Im obigen Beispiel wird das Sonderzeichen „/“ wurde aus der MessageLogging-Richtlinie entfernt. Das Problem wurde dadurch behoben.
Beispiel 2: Nicht auflösbarer Hostname
Das Message Processor-Protokoll enthielt einige Zeilen, die anzeigen, dass das Bereitstellungsereignis für einen API-Proxy ausgelöst wurde, gefolgt von einer Ausnahme, die während der Bereitstellung des API-Proxys auftritt:
2017-12-22 00:13:49,057 Apigee-Main-87446 INFO MESSAGING.CONFIGURATION - MessageProcessorServiceImpl.configure() : configuring [DeployEvent{organization='myorg', application='myapi', applicationRevision='42', deploymentSpec=basepath=/;env=dev;, deploymentID=null}] 2017-12-22 00:13:49,318 Apigee-Main-87446 ERROR c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.refresh() : Unable to resolve host : input-prd.cloud.splunk.com: Name or service not known 2017-12-22 00:13:49,323 Apigee-Main-87446 ERROR MESSAGING.RUNTIME - AbstractConfigurator.handleUpdate() : Fatal error deploying proxy: {} com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'input-prd.cloud.splunk.com' for Syslog handler at com.apigee.messaging.runtime.destinations.SyslogDestination.<init>(SyslogDestination.java:44) ~[message-processor-1.0.0.jar:na] at com.apigee.messaging.runtime.destinations.SysLoggerFactory.getInstance(SysLoggerFactory.java:39) ~[message-processor-1.0.0.jar:na] at com.apigee.messaging.runtime.destinations.DestinationRegistry.newDestination(DestinationRegistry.java:44) ~[message-processor-1.0.0.jar:na] at com.apigee.steps.messagelogging.MessageLoggingStepDefinition.populateDestinations(MessageLoggingStepDefinition.java:118) ~[message-logging-1.0.0.jar:na] at com.apigee.steps.messagelogging.MessageLoggingStepDefinition.handleAdd(MessageLoggingStepDefinition.java:99) ~[message-logging-1.0.0.jar:na] … <snipped>
Die obige Ausnahme zeigt, dass die Bereitstellung aufgrund von "Ungültiger Hostname '<Hostname>'" fehlschlägt. for Syslog-Handler“.
Wenn Sie die Zeile über der Ausnahme lesen, werden Sie feststellen, dass der Message Processor den in der MessageLogging-Richtlinie angegebenen Hostnamen
'input-prd.cloud.splunk.com'
nicht auflösen kann.Um dies zu prüfen, können Sie versuchen, eine Telnet-Verbindung mit dem Hostnamen und der Port-Nr. zu starten, die in der Richtlinie für das Nachrichten-Logging verwendet werden.
Prüfen Sie die MessageLogging-Richtlinie in der jeweiligen Version des API-Proxys und überprüfen Sie den verwendeten Hostnamen und die Portnummer. Im obigen Beispiel lautet der API-Proxy-Name "myapi", "version: 42".
MessageLogging-Richtlinie
<MessageLogging async="false" continueOnError="false" enabled="true" name="Log-To-Splunk"> <DisplayName>Log-To-Splunk</DisplayName> <Syslog> <Message>Message.id = {request.header.id}</Message> <Host>input-prd.cloud.splunk.com</Host> <Port>2900</Port> <Protocol>TCP</Protocol> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </Syslog> </MessageLogging>
Stellen Sie eine Telnet-Verbindung zum Host mit einem bestimmten Port her. In diesem Beispiel haben wir es mit Telnet versucht und den gleichen Fehler erhalten wie im Message Processor-Protokoll:
telnet input-prd.cloud.splunk.com 2900 telnet: input-prd.cloud.splunk.com: Name or service not known input-prd.cloud.splunk.com: Host name lookup failure
Dies bewies eindeutig, dass der Hostname nicht aufgelöst werden kann.
Auflösung
- Ändern Sie die MessageLogging-Richtlinie so, dass der gültige Hostname verwendet wird.
Wenn das Problem weiterhin besteht, gehen Sie zu Diagnoseinformationen müssen erfasst werden.
Ursache: Ungültiger KeyValueMap-Name
Diagnose
Wenn in den Message Processor-Protokollen während der Bereitstellung eines API-Proxys oder eines freigegebenen Ablaufs wie unten gezeigt eine Ausnahme mit der Meldung "KeyValueMap name is invalid" (KeyValueMap-Name ist ungültig) angezeigt wird, fahren Sie mit Schritt 2 fort. Falls nicht, gehen Sie zu Diagnoseinformationen müssen erfasst werden.
com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handler
Sehen wir uns ein Beispiel an, das veranschaulicht, wie Sie dieses Problem beheben können.
Beispiel für ein Message Processor-Log mit der Ausnahme und der Meldung „KeyValueMap-Name ist ungültig“ führt zu einem Fehler bei der API-Proxy-Bereitstellung
2018-02-27 14:14:50,318 Apigee-Main-6 ERROR MESSAGING.RUNTIME - AbstractConfigurator.handleUpdate() : Fatal error deploying proxy: {} com.apigee.keyvaluemap.KeyValueMapApiException: KeyValueMap name is invalid at com.apigee.keyvaluemap.service.legacy.KeyValueMapServiceImpl.validateMapName(KeyValueMapServiceImpl.java:125) ~[keyvaluemap-1.0.0.jar:na] at com.apigee.keyvaluemap.service.legacy.KeyValueMapServiceImpl.createOrUpdateKeyValueMap(KeyValueMapServiceImpl.java:185) ~[keyvaluemap-1.0.0.jar:na] at com.apigee.steps.keyvaluemapoperations.KeyValueMapOperationsStepDefinition.digest(KeyValueMapOperationsStepDefinition.java:180) ~[keyvaluemap-operations-1.0.0.jar:na] at com.apigee.steps.keyvaluemapoperations.KeyValueMapOperationsStepDefinition.handleAdd(KeyValueMapOperationsStepDefinition.java:197) ~[keyvaluemap-operations-1.0.0.jar:na] at com.apigee.entities.AbstractConfigurator.handleUpdate(AbstractConfigurator.java:130) [config-entities-1.0.0.jar:na] at com.apigee.messaging.runtime.Application.handleUpdate(Application.java:229) [message-processor-1.0.0.jar:na] 2018-02-27 14:14:50,344 Apigee-Main-6 ERROR BOOTSTRAP - RuntimeConfigurationServiceImpl.dispatchToListeners() : RuntimeConfigurationServiceImpl.dispatchToListeners : Error occurred while dispatching the request DeployEvent{organization='myorg', application='CustomerAPI', applicationRevision='1', deploymentSpec=basepath=/;env=test;, deploymentID=null} to com.apigee.application.bootstrap.listeners.MessageProcessorBootstrapListener@5009d06e com.apigee.keyvaluemap.KeyValueMapApiException: KeyValueMap name is invalid at com.apigee.keyvaluemap.service.legacy.KeyValueMapServiceImpl.validateMapName(KeyValueMapServiceImpl.java:125) ~[keyvaluemap-1.0.0.jar:na] at com.apigee.keyvaluemap.service.legacy.KeyValueMapServiceImpl.createOrUpdateKeyValueMap(KeyValueMapServiceImpl.java:185) ~[keyvaluemap-1.0.0.jar:na] at com.apigee.steps.keyvaluemapoperations.KeyValueMapOperationsStepDefinition.digest(KeyValueMapOperationsStepDefinition.java:180) ~[keyvaluemap-operations-1.0.0.jar:na] at com.apigee.steps.keyvaluemapoperations.KeyValueMapOperationsStepDefinition.handleAdd(KeyValueMapOperationsStepDefinition.java:197) ~[keyvaluemap-operations-1.0.0.jar:na] at com.apigee.entities.AbstractConfigurator.handleUpdate(AbstractConfigurator.java:130) ~[config-entities-1.0.0.jar:na] at com.apigee.messaging.runtime.Application.handleUpdate(Application.java:229) ~[message-processor-1.0.0.jar:na]
Die zweite Ausnahme oben zeigt an, dass der Bereitstellungsfehler für API Proxy: CustomerAPI, version: 1. aufgetreten ist.
Wenn Sie den Stacktrace prüfen, stellen Sie fest, dass beim Ausführen der KeyValuMapOperations-Richtlinie ein Fehler ausgegeben wird.
Im API-Proxy-Bundle sehen Sie, dass es eine KeyValuMapOperations-Richtlinie mit dem folgenden Code gibt:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Pulling-Keys" mapIdentifier=""> <DisplayName>Pulling Keys</DisplayName> <Properties/> <ExclusiveCache>false</ExclusiveCache>
Wie oben zu sehen ist, enthält mapIdentifier, der den Namen der KeyValueMap angibt, einen leeren String. Der Name der KeyValueMap darf nicht leer sein. Dies war die Ursache für den Bereitstellungsfehler.
Auflösung
- Ändern Sie die Richtlinie „KeyValueMapOperations“ so, dass sie einen gültigen, gültigen Namen für die KeyValueMap enthält.
Im obigen Beispiel wurde das Problem behoben, indem KeyValueMapOperations so geändert wurde, dass der KeyValueMap-Name "MyKeyValueMap" lautet. wie unten dargestellt:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Pulling-Keys" mapIdentifier="MyKeyValueMap"> <DisplayName>Pulling Keys</DisplayName> <Properties/> <ExclusiveCache>false</ExclusiveCache>
Es müssen Diagnoseinformationen eingeholt werden
Falls das Problem trotz Befolgen der obigen Anweisungen weiterhin besteht, holen Sie die folgenden Diagnoseinformationen zusammen. Geben Sie die gesammelten Informationen an den Apigee Edge-Support weiter.
Ausgabe des Befehls
curl -v <management-server-host>:<port #>/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/deployments -u <user>
Message Processor-Logs
/opt/apigee/var/log/edge-message-processor/logs/system.log
Details dazu, welche Abschnitte in diesem Playbook bereits ausprobiert wurden, sowie sonstige Informationen, die uns bei der schnellen Lösung dieses Problems helfen.