2016-06-07 4 views
0

Die Bean-Komponente von Camel übernimmt den Methodennamen als Zeichenfolge, die zur Laufzeit verwendet wird, um diese Methode aufzurufen.Apache Camel: Risiko mit der Bean-Komponente nicht in der Lage, die Bean-Methode zur Kompilierungszeit zu verknüpfen

from("direct:start") 
.bean(contactDao, "getContactById") 

Aber das ist schlecht im Vergleich zu Java, die die Methoden bei der Kompilierung verbindet sich und so sind Fehler bei der Kompilierung selbst erkannt.

In Camel wird jeder Fehler beim Aufruf der Bean-Methode nicht abgefangen, bis dieser zur Laufzeit ausgelöst wird.

Gibt es irgendwelche Sicherheitsmaßnahmen, um dies zu vermeiden?

Antwort

1

Verwenden Sie eine org.apache.camel.Processor anstelle einer Bean oder rufen Sie Ihre Bean aus der Processor, wo Sie Java-Code schreiben und die Methode direkt aufrufen können (nicht als String-Name).

+0

Danke Claus. Das beseitigt meine Besorgnis. Mit dieser Lösung benötigen wir jedes Mal ein neues Prozessorobjekt, wenn wir eine Bean aufrufen müssen. Außerdem funktioniert die automatische Header-Zuordnung mit @Header-Annotation für die Bean-Methodenparameter nicht. Wir müssen die Header aus dem Exchange programmatisch extrahieren und an die Bean-Methode übergeben und die Antwort im Exchange zurückstellen. Ich denke, es gibt keine andere Lösung als diese? – ndsurendra

Verwandte Themen