Embedding Felix in resin or tomcat (non osgi supported web containers) problem.

View: New views
1 Messages — Rating Filter:   Alert me  

Embedding Felix in resin or tomcat (non osgi supported web containers) problem.

by Tomasz Marciniak-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi!

I'm trying to embedd felix in web servlet container : resin or tomcat
and need huge help.

Application work perfectly after first init...

The problem is that when i use felix web console and click to reload
application (system/console/vmstat) ( which reloads system bundle)
there is the problem with casing bundle activators e.g.:

java.lang.ClassCastException:
org.apache.felix.bundlerepository.Activator cannot be cast to
org.osgi.framework.BundleActivator
   at
org.apache.felix.framework.Felix.createBundleActivator(Felix.java:3520)
   at org.apache.felix.framework.Felix.activateBundle(Felix.java:1695)
   at org.apache.felix.framework.Felix.startBundle(Felix.java:1622)
   at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1077)
   at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:264)

So what i'm wondering is how to deal with the problem of class loading
here...

I think the problem is that resin loaded BundleActivator class and felix
detects that and uses it....

is there any simple solution to solve that?

Project structure:

WEB-INF/
               -- lib  -> here i keep basic felix bundles
               -- bundle  -> here are bundles like webconsole etc....
               -- conf                -- web.xml
The ProvisionActivator and StartupListener is identical as in Felix web
bridge example.

public final class FrameworkService
{
   public ServletContext context;

   public Framework frameworkBundle;

   public FrameworkService(ServletContext context)
   {
       this.context = context;

       System.setProperty("user.dir", context.getRealPath("WEB-INF"));
   }

   public void start()
   {
       try
       {
           doStart();
       }
       catch (Exception e)
       {
           log("Failed to start framework", e);
       }
   }

   public void stop()
   {
       try
       {
           doStop();
       }
       catch (Exception e)
       {
           log("Error stopping framework", e);
       }
   }

   private void doStart() throws Exception
   {
       frameworkBundle = initFramework();
       frameworkBundle.start();
       log("OSGi framework started", null);
   }

   private void doStop() throws Exception
   {
       if (frameworkBundle != null) frameworkBundle.stop();
       log("OSGi framework stopped", null);
   }

   private final Framework initFramework() throws BundleException
   {
       Main.loadSystemProperties();

       Properties configProps = Main.loadConfigProperties();
       if (configProps == null) configProps = new Properties();

       Main.copySystemProperties(configProps);

       configProps.put(FelixConstants.SYSTEMBUNDLE_ACTIVATORS_PROP, Arrays
               .asList(new ProvisionActivator(this.context)));

       Framework framework = new Framework(configProps);
       framework.init();

       AutoProcessor.process(configProps, framework.getBundleContext());

       
framework.getBundleContext().registerService(FrameworkService.class.getName(),
this, null);

       return framework;
   }

   private void log(String message, Throwable cause)
   {
       this.context.log(message, cause);
   }
}

CONFIG:

felix.cache.rootdir=${user.dir}
felix.auto.deploy.action=install,start,update
felix.auto.deploy.dir=${user.dir}/bundle
felix.log.level=4

felix.fileinstall.dir= ${user.dir}/bundle-load
felix.fileinstall.debug = 4
felix.fileinstall.poll= 50
felix.fileinstall.filter= .*\.jar$|.*\.cfg$

obr.repository.url=http://felix.apache.org/obr/releases.xml

org.osgi.service.http.port=8080
org.apache.felix.http.debug=true
org.apache.felix.http.whiteboardEnabled=false

org.osgi.framework.storage.clean=onFirstInit
org.osgi.framework.storage=${user.dir}/bundle-cache

org.osgi.framework.system.packages = \
org.osgi.framework; version=1.4.0, \
org.osgi.framework.hooks.service, \
org.osgi.framework.launch, \
org.osgi.service.condpermadmin; version=1.0.0, \
org.osgi.service.packageadmin; version=1.2.0, \
org.osgi.service.permissionadmin; version=1.2.0, \
org.osgi.service.startlevel; version=1.1.0, \
org.osgi.service.url; version=1.0.0,\
org.osgi.service.application;version="1.0", \
org.osgi.service.cm;version="1.2", \
org.osgi.service.component;version="1.0", \
org.osgi.service.deploymentadmin;version="1.0", \
org.osgi.service.deploymentadmin.spi;uses:="org.osgi.service.deploymentadmin";version="1.0",
\
org.osgi.service.device;version="1.1", \
org.osgi.service.event;version="1.1", \
org.osgi.service.http;version="1.2", \
org.osgi.service.io;version="1.0", \
org.osgi.service.log;version="1.3", \
org.osgi.service.metatype;version="1.1", \
org.osgi.service.monitor;version="1.0", \
org.osgi.service.prefs;version="1.1", \
org.osgi.service.provisioning;version="1.1", \
org.osgi.service.upnp;version="1.1", \
org.osgi.service.useradmin;version="1.1", \
org.osgi.service.wireadmin;version="1.0", \
info.dmtree.notification;version="1.0", \
info.dmtree.notification.spi;uses:="info.dmtree.notification";version="1.0",
\
info.dmtree.registry;uses:="info.dmtree.notification";version="1.0", \
info.dmtree.security;version="1.0", \
info.dmtree.spi;version="1.0", \
org.osgi.util.gsm;version="1.0", \
org.osgi.util.measurement;version="1.0", \
org.osgi.util.mobile;version="1.0", \
org.osgi.util.position;uses:="org.osgi.util.measurement";version="1.0", \
org.osgi.util.tracker;version="1.3.3", \
org.osgi.util.xml;version="1.0",\
javax.accessibility,\
javax.activity,\
javax.crypto,\
javax.crypto.interfaces,\
javax.crypto.spec,\
javax.imageio,\
javax.imageio.event,\
javax.imageio.metadata,\
javax.imageio.plugins.bmp,\
javax.imageio.plugins.jpeg,\
javax.imageio.spi,\
javax.imageio.stream,\
javax.management,\
javax.management.loading,\
javax.management.modelmbean,\
javax.management.monitor,\
javax.management.openmbean,\
javax.management.relation,\
javax.management.remote,\
javax.management.remote.rmi,\
javax.management.timer,\
javax.naming,\
javax.naming.directory,\
javax.naming.event,\
javax.naming.ldap,\
javax.naming.spi,\
javax.net,\
javax.net.ssl,\
javax.print,\
javax.print.attribute,\
javax.print.attribute.standard,\
javax.print.event,\
javax.rmi,\
javax.rmi.CORBA,\
javax.rmi.ssl,\
javax.security.auth,\
javax.security.auth.callback,\
javax.security.auth.kerberos,\
javax.security.auth.login,\
javax.security.auth.spi,\
javax.security.auth.x500,\
javax.security.cert,\
javax.security.sasl,\
javax.sound.midi,\
javax.sound.midi.spi,\
javax.sound.sampled,\
javax.sound.sampled.spi,\
javax.sql,\
javax.sql.rowset,\
javax.sql.rowset.serial,\
javax.sql.rowset.spi,\
javax.swing,\
javax.swing.border,\
javax.swing.colorchooser,\
javax.swing.event,\
javax.swing.filechooser,\
javax.swing.plaf,\
javax.swing.plaf.basic,\
javax.swing.plaf.metal,\
javax.swing.plaf.multi,\
javax.swing.plaf.synth,\
javax.swing.table,\
javax.swing.text,\
javax.swing.text.html,\
javax.swing.text.html.parser,\
javax.swing.text.rtf,\
javax.swing.tree,\
javax.swing.undo,\
javax.transaction,\
javax.transaction.xa,\
javax.xml,\
javax.xml.datatype,\
javax.xml.namespace,\
javax.xml.parsers,\
javax.xml.transform,\
javax.xml.transform.dom,\
javax.xml.transform.sax,\
javax.xml.transform.stream,\
javax.xml.validation,\
javax.xml.xpath,\
org.ietf.jgss,\
org.omg.CORBA,\
org.omg.CORBA_2_3,\
org.omg.CORBA_2_3.portable,\
org.omg.CORBA.DynAnyPackage,\
org.omg.CORBA.ORBPackage,\
org.omg.CORBA.portable,\
org.omg.CORBA.TypeCodePackage,\
org.omg.CosNaming,\
org.omg.CosNaming.NamingContextExtPackage,\
org.omg.CosNaming.NamingContextPackage,\
org.omg.Dynamic,\
org.omg.DynamicAny,\
org.omg.DynamicAny.DynAnyFactoryPackage,\
org.omg.DynamicAny.DynAnyPackage,\
org.omg.IOP,\
org.omg.IOP.CodecFactoryPackage,\
org.omg.IOP.CodecPackage,\
org.omg.Messaging,\
org.omg.PortableInterceptor,\
org.omg.PortableInterceptor.ORBInitInfoPackage,\
org.omg.PortableServer,\
org.omg.PortableServer.CurrentPackage,\
org.omg.PortableServer.POAManagerPackage,\
org.omg.PortableServer.POAPackage,\
org.omg.PortableServer.portable,\
org.omg.PortableServer.ServantLocatorPackage,\
org.omg.SendingContext,\
org.omg.stub.java.rmi,\
org.w3c.dom,\
org.w3c.dom.bootstrap,\
org.w3c.dom.css,\
org.w3c.dom.events,\
org.w3c.dom.html,\
org.w3c.dom.ls,\
org.w3c.dom.ranges,\
org.w3c.dom.stylesheets,\
org.w3c.dom.traversal,\
org.w3c.dom.views,\
org.xml.sax,\
org.xml.sax.ext,\
org.xml.sax.helpers,\
javax.servlet;javax.servlet.http;version=2.5,\
org.apache.felix.metatype.internal,\
org.osgi.service.metatype


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@...
For additional commands, e-mail: users-help@...