2016-04-26 4 views
0

Ist es möglich, eine DistributedTask abzufangen, so dass ich manuell einige Bohnen injizieren kann?Benutzerdefinierte Interceptor Bean in DistributedTask Injizieren

Ich erwarte einen Abfangjäger zu schreiben, die die Aufgabe Object nimmt, finden jedes Feld, das die Inject Annotation hat und ein paar Bohnen injizieren, die s pecific an den Knoten, der es auf läuft.

Antwort

2

Es sollte möglich sein; Sie müssen die visitDistributedExecuteCommand() Methode im Interceptor überschreiben. Es scheint jedoch, dass der bevorzugte Ansatz darin besteht, DistributedTaskLifecycle zu implementieren und es in META-INF/services zu registrieren, wie dies CDI tut.

Beachten Sie, dass in Infinispan 9.0 der Interceptor SPI geändert wird (deshalb sind alle Interceptors in 8.2 veraltet).

+0

Ich habe das bereits gegeben, ich kann meine Interceptor-Register sehen, aber es führt nicht die 'visitDistributedExecuteCommand()' Methode aus, aber es führt die put/get visit Methoden aus. – Cheetah

+0

Ah, ich sehe, es ist nicht in SingleRpcCommand verpackt und daher wird es direkt aufgerufen. Also, es ist und VisitableCommand (und die Methode in den Interzeptoren) ist verwirrend, können Sie eine JIRA einreichen? –

+0

Ich kann sicherlich eine JIRA erheben. In Bezug auf Ihren zweiten Vorschlag, ohne wirklich viel über CDI zu wissen, ist es möglich, dies zur Laufzeit programmatisch zu tun? Im Wesentlichen möchte ich Dinge aus meinem Guice-Container herausziehen und sie vor dem Ausführen der Aufgabe injizieren. – Cheetah