2016-06-29 30 views
1

Ich habe zwei OSGi-Bundles, die ich in Sling/Felix implementiere.Durch die Bereitstellung eines OSGi-Bundles wird die Konfiguration aus einer anderen entfernt.

Bundle Core ist Java-Code (OSGi-Services und Sling-Modelle), Bundle UI enthält nur JSPs und JS-Code, die mit Sling-initial-content in das Repository importiert werden.

Bundle A wird zunächst Dienste Register eingesetzt, zum Beispiel, die Stamm-URL stellen Bilder für die Anwendung zu erhalten:

[c.r.o.c.services.models.components.ImageComponentServiceImpl,1410] ServiceEvent REGISTERED 

Hier ist die zugehörige Klasse mit der Eigenschaft:

@Component(metatype=true, label="Image component service", description="Service providing data to image components") 
@Service(value = ImageComponentService.class) 
public class ImageComponentServiceImpl extends AbstractModelService implements ImageComponentService { 

    @Property(label="Images root URL", description="URL to the web directory containing image files") 
    public static final String IMAGE_ROOT_URL = "image.root.url"; 

}  

Dann füge ich einen Wert zur Eigenschaft auf diesem Service hinzu:

INFO c.r.o.c - Service [c.r.o.c.services.models.components.ImageComponentServiceImpl,1410] ServiceEvent UNREGISTERING 
INFO c.r.o.c - Service [c.r.o.c.services.models.components.ImageComponentServiceImpl,1451] ServiceEvent REGISTERED 

Aber als ich das Brötchen einsetzte dle UI bekomme ich das:

INFO o.a.s.i.p.jcr.impl.JcrInstaller - Removing resource from OSGi installer: [/apps/sling/install/c.r.o.c.services.models.components.ImageComponentServiceImpl.config] 
INFO o.a.s.i.p.jcr.impl.JcrInstaller - Deleting WatchedFolder:/apps/sling/install, path does not exist anymore 
INFO o.apache.sling.audit.osgi.installer - Deleted configuration c.r.o.c.services.models.components.ImageComponentServiceImpl from resource TaskResource(url=jcrinstall:/apps/sling/install/c.r.o.c.services.models.components. ImageComponentServiceImpl.config, entity=config:c.r.o.c.services.models.components.ImageComponentServiceImpl, state=UNINSTALL, attributes=[service.pid=c.r.o.c.services.models.components.ImageComponentServiceImpl, resource.uri .hint=c.r.o.c.services.models.components.ImageComponentServiceImpl], digest=5474257d3971e3f9a92ac39b2f2d4b69) 
INFO c.r.o.c - Service [c.r.o.c.services.models.components.ImageComponentServiceImpl,1451] ServiceEvent UNREGISTERING 
INFO c.r.o.c - Service [c.r.o.c.services.models.components.ImageComponentServiceImpl,1452] ServiceEvent REGISTERED  

Warum entfernt es die Konfiguration aus dem anderen Bündel? Diese Pakete arbeiten zusammen, sind aber nicht durch Import/Export-Anweisungen verbunden.

Ich habe org.apache.sling.installer.provider.jcr zu 3.1.18 aktualisiert, aber es ist das gleiche.

Konnte es mit https://issues.apache.org/jira/browse/SLING-4925/https://issues.apache.org/jira/browse/SLING-4929 verwandt werden? Es erfordert, Jackrabbit zu aktualisieren, und ich bin nicht sicher, dass es mit vorhandenen Inhalten einfach ist.

+0

Wie beurteilen Sie die anderen Bündel bereitstellen? –

+0

Ich habe vergessen, diese Frage zu aktualisieren, aber schließlich das Problem mit Hilfe von Sling Mailing-Liste gefunden. Das andere Paket überschrieb tatsächlich das Verzeichnis/apps/sling, deshalb wurde meine Konfiguration gelöscht. –

Antwort

1

Das Problem war, dass die UI-Bundle JSPs wurde die Bereitstellung von benutzerdefinierten Fehlerseiten hinzufügen (404/403), wie folgt aus:

<Sling-Initial-Content> 
    SLING-INF/content/apps/sling;overwrite:=true;uninstall=true 
</Sling-Initial-Content> 

Daher wurde die gesamte/apps/Schleuder-Verzeichnis überschrieben und Konfiguration entfernt.

Also habe ich die Linie für das geändert und es das Problem behoben:

<Sling-Initial-Content> 
    SLING-INF/content/apps/sling/servlet;path:=/apps/sling/servlet;overwrite:=true;uninstall=true 
</Sling-Initial-Content>