[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [virgo-dev] Configuration of bundles
|
I tried to implement this in a simple mode. But it does not work, more information provided below.
Below is the complete code.
===START CODE===
package my.package
import java.util.Dictionary;
import java.util.Hashtable;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.cm.ConfigurationException;
import org.osgi.service.cm.ManagedService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Activator implements BundleActivator, ManagedService {
private static Logger log = LoggerFactory.getLogger(Activator.class);
private static String PID = "pjotr.configtest";
private ServiceRegistration registration;
@Override
public void start(BundleContext context) throws Exception {
log.info("LOGTRACKER starting bundle");
Dictionary props = new Hashtable();
props.put(Constants.SERVICE_PID, PID);
registration = context.registerService(ManagedService.class.getName(), this, props);
}
@Override
public void stop(BundleContext context) throws Exception {
registration.unregister();
log.info("LOGTRACKER Bundle stopped!");
}
@Override
public void updated(Dictionary config) throws ConfigurationException {
log.info("LOGTRACKER Update config: {}", config);
}
}
=== END CODE===
This is the log when I first install and start the bundle (LOGTRACKER Update Config: null), so the update gives the expected result as there is no configuration deployed yet. Then at 22:00:10 I put the pjotr.configtest.properties into the pickup directory, and it is triggered and installed. But there is some error at 22:20:10.647 (*ERROR* Cannot use configuration pjotr.configtest for [org.osgi.service.cm.M
anagedService, id=146, bundle=36]: Configuration bound to bundle file:lib/kernel/org.eclipse.virgo.kernel.deployer-2.1.0.RC1-incubation.jar).
No "LOGTRACKER Update Config" came as I would have expected, what is the error here? According to documentation I have read, and also the post by Dmitry, this should work. But it is not.
=== START LOG.LOG ===
[2010-11-02 22:18:48.830] TCP Connection(5)-127.0.0.1 my.package.Activator LOGTRACKER starting bundle
[2010-11-02 22:18:48.832] Configuration Updater cmy.package.Activator LOGTRACKER Update config: null [2010-11-02 22:18:48.833] TCP Connection(5)-127.0.0.1 org.eclipse.virgo.kernel.core.internal.BundleStartTracker Non-Spring DM powered bundle 'my.package_0.0.1 [64]' ha
s started. Driving signals '[org.eclipse.virgo.kernel.install.artifact.internal.AbstractInstallArtifact$StateMonitorSignal@23dae5f1]'. [2010-11-02 22:18:48.833] start-signalling-1 org.eclipse.virgo.kernel.core.internal.BundleStartTracker Driving signal 'org.eclipse.virgo.kernel.install.artifact.internal.AbstractI
nstallArtifact$StateMonitorSignal@23dae5f1' [2010-11-02 22:18:48.833] start-signalling-1 o.e.v.k.i.artifact.internal.bundle.BundleThreadContextManager Thread context class loader 'sun.misc.Launcher$AppClassLoader@77cde100' push
ed and set to 'KernelBundleClassLoader: [bundle=my.package_0.0.1]' [2010-11-02 22:18:48.864] start-signalling-1 org.eclipse.virgo.medic.eventlog.default DE0005I Started bundle 'my.package' version '0.0.1'.
[2010-11-02 22:18:48.864] start-signalling-1 o.e.v.k.i.artifact.internal.bundle.BundleThreadContextManager Thread context class loader 'KernelBundleClassLoader: [bundle=my.package_0.0.1]' popped and set to 'sun.misc.Launcher$AppClassLoader@77cde100'
[2010-11-02 22:18:48.868] TCP Connection(5)-127.0.0.1 o.e.v.k.i.artifact.internal.bundle.BundleThreadContextManager Thread context class loader 'KernelBundleClassLoader: [bundle=my.package_0.0.1]' popped and set to 'KernelBundleClassLoader: [bundle=my.package_0.0.1]'
[2010-11-02 22:18:48.868] TCP Connection(5)-127.0.0.1 o.e.v.k.i.artifact.internal.bundle.BundleThreadContextManager Thread context class loader 'KernelBundleClassLoader: [bundle=my.package_0.0.1]' popped and set to 'sun.misc.Launcher$AppClassLoader@77cde100'
[2010-11-02 22:20:10.600] fs-watcher org.eclipse.virgo.medic.eventlog.default HD0001I Hot deployer processing 'CREATED' event for file 'pjotr.configtest.properties'.
[2010-11-02 22:20:10.600] fs-watcher o.e.virgo.kernel.deployer.hot.HotDeploymentFileSystemListener ApplicationDeploying path '/Users/pjotr/virgo/virgo-web-server-2.1.0.RC1-inc
ubation/pickup/pjotr.configtest.properties'. [2010-11-02 22:20:10.623] fs-watcher o.e.v.k.m.i.deployer.ModelInstallArtifactLifecycleListener Processing installing event for configuration 'pjotr.configtest' version '0.
0.0'
[2010-11-02 22:20:10.628] fs-watcher org.eclipse.virgo.medic.eventlog.default DE0000I Installing configuration 'pjotr.configtest' version '0.0.0'.
[2010-11-02 22:20:10.629] fs-watcher o.e.virgo.kernel.userregion.internal.quasi.DependencyCalculator Calculating missing dependencies of bundle(s) '{}'
[2010-11-02 22:20:10.632] fs-watcher o.e.virgo.kernel.userregion.internal.quasi.DependencyCalculator The dependencies of '[]' are '[]'
[2010-11-02 22:20:10.637] fs-watcher org.eclipse.virgo.medic.eventlog.default DE0001I Installed configuration 'pjotr.configtest' version '0.0.0'.
[2010-11-02 22:20:10.640] fs-watcher o.e.v.k.i.a.internal.AtomicInstallArtifactLifecycleListener No atomic parent of configuration 'pjotr.configtest' version '0.0.0' in scop
e 'null' to propagate starting event to
[2010-11-02 22:20:10.644] fs-watcher org.eclipse.virgo.medic.eventlog.default DE0004I Starting configuration 'pjotr.configtest' version '0.0.0'.
[2010-11-02 22:20:10.647] Configuration Updater System.err *ERROR* Cannot use configuration pjotr.configtest for [org.osgi.service.cm.M
anagedService, id=146, bundle=36]: Configuration bound to bundle file:lib/kernel/org.eclipse.virgo.kernel.deployer-2.1.0.RC1-incubation.jar
[2010-11-02 22:20:10.647] Configuration Updater o.e.v.k.m.internal.configurationadmin.ModelConfigurationListener Processing update event for 'pjotr.configtest'
[2010-11-02 22:20:10.651] fs-watcher org.eclipse.virgo.medic.eventlog.default DE0005I Started configuration 'pjotr.configtest' version '0.0.0'.
=== END LOG.LOG ===
On 2 nov 2010, at 21.02, Dmitry Sklyut wrote:
> Simple answer is "Yes".
>
> With the code sample that you provided, your config properties file must be named: "my_unique_pid.properties".
>
> Drop that file into pickup and it will be deployed as ConfigurationAdmin configuration and your ManagedService will be updated with correct configuration.
>
> You can also use a ConfigurationListener and postone publishing your service (not ManagedService) till configuration that you are looking for is available.
>
> Dmitry
>
> On Tue, Nov 2, 2010 at 2:56 PM, Peter Lauri <peter.lauri@xxxxxx> wrote:
> Hi,
>
> I have a bundle that is providing a service that needs to be configured before it starts. As I have understood it there are two approaches, one is to use the ManagedService and one is to use the ConfigurationAdmin. However, how do this map to Virgo? If I put a properties file to "pickup" that will be deployed as a configuration artifact. Should that map directly to the ManagedService.update() call?
>
> Hashtable<String, String> prop = new Hashtable<String, String>();
> prop.put(Constants.SERVICE_PID, "my_unique_pid");
> this.managedServiceRegistration = bundleContext.registerService(ManagedService.class.getName(), this, prop);
>
> /Peter
>
> _______________________________________________
> virgo-dev mailing list
> virgo-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/virgo-dev
>
>
> _______________________________________________
> virgo-dev mailing list
> virgo-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/virgo-dev