Hi Chetan

A common trick is to no instantiate the plugin ahead of time but register a 
ServiceFactory whose getService method creates the plugin to use.

In a few Web Console servlets we do DynamicImport-Package for the servlet API 
and thus can wire and use at the point where the service is used and the API is 
presumably available.

Regards
Felix

Am 06.03.2013 um 12:25 schrieb <[email protected]>:

> Author: chetanm
> Date: Wed Mar  6 11:25:01 2013
> New Revision: 1453296
> 
> URL: http://svn.apache.org/r1453296
> Log:
> FELIX-3956 - JAAS Support bundle should have optional dependency on Servlet 
> API
> 
> Marking the javax.servlet package as optional. And handling exception while 
> creating plugin instance in absence of servlet api
> 
> Modified:
>    felix/trunk/jaas/pom.xml
>    
> felix/trunk/jaas/src/main/java/org/apache/felix/jaas/internal/Activator.java
> 
> Modified: felix/trunk/jaas/pom.xml
> URL: 
> http://svn.apache.org/viewvc/felix/trunk/jaas/pom.xml?rev=1453296&r1=1453295&r2=1453296&view=diff
> ==============================================================================
> --- felix/trunk/jaas/pom.xml (original)
> +++ felix/trunk/jaas/pom.xml Wed Mar  6 11:25:01 2013
> @@ -87,6 +87,10 @@
>                         <Bundle-Activator>
>                             org.apache.felix.jaas.internal.Activator
>                         </Bundle-Activator>
> +                        <Import-Package>
> +                          javax.servlet.*;resolution:=optional,
> +                          *
> +                        </Import-Package>
>                         <_removeheaders>
>                             Embed-Dependency,Private-Package,Include-Resource
>                         </_removeheaders>
> 
> Modified: 
> felix/trunk/jaas/src/main/java/org/apache/felix/jaas/internal/Activator.java
> URL: 
> http://svn.apache.org/viewvc/felix/trunk/jaas/src/main/java/org/apache/felix/jaas/internal/Activator.java?rev=1453296&r1=1453295&r2=1453296&view=diff
> ==============================================================================
> --- 
> felix/trunk/jaas/src/main/java/org/apache/felix/jaas/internal/Activator.java 
> (original)
> +++ 
> felix/trunk/jaas/src/main/java/org/apache/felix/jaas/internal/Activator.java 
> Wed Mar  6 11:25:01 2013
> @@ -21,6 +21,7 @@ package org.apache.felix.jaas.internal;
> 
> import org.osgi.framework.BundleActivator;
> import org.osgi.framework.BundleContext;
> +import org.osgi.service.log.LogService;
> 
> public class Activator implements BundleActivator
> {
> @@ -38,7 +39,7 @@ public class Activator implements Bundle
>         loginModuleCreator = new BundleLoginModuleCreator(context, logger);
>         jaasConfigFactory = new JaasConfigFactory(context, 
> loginModuleCreator, logger);
>         configSpi = new ConfigSpiOsgi(context, logger);
> -        webConsolePlugin = new JaasWebConsolePlugin(context, 
> configSpi,loginModuleCreator);
> +        registerWebConsolePlugin(context);
> 
>         logger.open();
>         loginModuleCreator.open();
> @@ -63,4 +64,14 @@ public class Activator implements Bundle
>             logger.close();
>         }
>     }
> +
> +    private void registerWebConsolePlugin(BundleContext context){
> +        try{
> +            webConsolePlugin = new JaasWebConsolePlugin(context, 
> configSpi,loginModuleCreator);
> +        }catch(NoClassDefFoundError t){
> +            //Servlet API is not present. This is an optional requirement
> +            logger.log(LogService.LOG_INFO,"HTTP support not found. JAAS 
> WebConsole Plugin would not be registered");
> +        }
> +    }
> +
> }
> 
> 


--
Felix Meschberger | Principal Scientist | Adobe







Reply via email to