2016-08-24 3 views
0

Ich habe ein Nicht-Blueprint-Bundle, die einen Service über deklarative Service-Anmerkungen bietet.Problem mit Service-Dynamik und Blueprint

Ich habe ein anderes Paket mit Blueprint, das eine optionale Referenz für diesen Dienst enthält und diese Referenz dann in eine Anzahl deklarierter Beans eingibt.

Wenn beide in einem Karaf-Container gestartet werden, wird der Service registriert und das Blueprint-Bundle kann darauf zugreifen und wie vorgesehen verwendet werden. Die Konfiguration für das Servicebereitstellungs-Bundle kann aktualisiert werden, und sie ist nicht gebunden und wird erneut an das Blueprint-Bundle zurückgegeben, was perfekt ist.

Wenn das Servicebereitstellungs-Bundle jedoch neu gestartet oder aktualisiert wird, ist der Service nicht gebunden, wird jedoch nie wieder zum verwendeten Bundle rebound ausgeführt, sodass das von der Blueprint-Referenz gehaltene Proxyobjekt nicht in den Serviceverweis aufgelöst wird.

Manchmal wird ein Neustart des Blueprint-Bundles dies beheben, aber normalerweise erfordert es einen vollständigen Framework-Neustart, damit es wieder funktioniert.

Ich bekomme nicht das gleiche Verhalten, wenn eine Nicht-Blueprint-Bean den Dienst über deklarative Dienste konsumiert.

Hat jemand ähnliche Probleme mit der Verwendung einer Mischung aus DS und Blueprint zur Bereitstellung/Nutzung von Diensten gehabt?

Antwort

0

Blueprint ist nicht dynamisch. Es hat einen "dämpfenden" Proxy, der versucht, die Servicedynamik zu übertünchen, aber nicht immer das liefert, was benötigt wird. Im Allgemeinen würde ich immer DS über Blueprint verwenden.

Verwandte Themen