Great work. As per the discussion, can you attache the complete diff. Changes to the Kernel.
On Tue, Jun 3, 2014 at 2:58 PM, Nipuni Perera <[email protected]> wrote: > Hi, > > I have implemented the above solution as below. > > > 1. I created an interface Axis2DeployerProvider with a method > getDeployerConfigs inside org.wso2.carbon.utils.deployment. > 2. I then created a service inside package > org.wso2.carbon.webapp.deployer.internal implementing the above interface. > I also registered the service as an OSGi service inside its activate() > method. I implemented the logic to read virtualhosts and their appBase > values and list them as an array of DeployerConfig objects. > 3. Then I have modified getAxisConfiguration() method of > CarbonAxisConfigurator inside org.wso2.carbon.core to read the above array > via, > > > ServiceTracker > deployerServiceTracker =new ServiceTracker(bundleContext, > Axis2DeployerProvider.class.getName(),null); > deployerServiceTracker.open(); > Axis2DeployerProvider > axis2DeployerProvider = > (Axis2DeployerProvider)deployerServiceTracker.getService(); > 4. I have updated register() method in both Axis2DeployerRegistry > GhostDeployerRegistry to add the deployers to deployment engine. > > public void register(Bundle[] > bundles, DeployerConfig[] deployerConfigs) { > for (Bundle bundle : > bundles) { > > register(bundle); > } > for(DeployerConfig > deployerConfig : deployerConfigs){ > Deployer > deployer = getDeployer(deployerConfig.getClassStr()); > > addDeployer(deployerConfig, deployer); > } .... > } > > > > After the modifications webapps deploy before management console is up. > > Thanks, > Nipuni > > > On Tue, Jun 3, 2014 at 8:24 AM, Nipuni Perera <[email protected]> wrote: > >> I will implement and provide a patch. >> >> Thanks, >> Nipuni >> >> >> On Mon, Jun 2, 2014 at 6:14 PM, Sameera Jayasoma <[email protected]> >> wrote: >> >>> Looks like we have a solution this problem. We simply need to way to >>> register deployers which cannot be declared in component.xml, because users >>> should be able add or remove deployers. >>> >>> Axis2DeployerRegistry.register() method registers all the Deployers >>> declared in the component.xml files. These are static Deployers. Now we >>> need to improve the Axis2DeployerRegistry.register() method handle the >>> other type of deployers. e.g. Webapp deployers for registered virtual >>> hosts. >>> >>> In this solution Axis2DeployerRegistry asks the dynamic webapp deployer >>> list from the webapp-mgt component using an OSGi service registered by the >>> webapp-mgt component. In order to achieve this we can introduce a generic >>> interface. Say Axis2DeployerProvider. webapp-mgt component implements this >>> interface and register an OSGi service. Say >>> VirtualHostWebappDeployerProvider. >>> >>> Now Axis2DeployerRegistry.register() method can get all the OSGi >>> services which implement the Axis2DeployerProvider interface and get the >>> deployer list and register them. Easy.. >>> >>> I guess Nipuni can implement this and provide a patch to Carbon kernel >>> 4.3.0. >>> >>> Thanks, >>> Sameera. >>> >>> On Mon, Jun 2, 2014 at 5:28 PM, Sameera Jayasoma <[email protected]> >>> wrote: >>> >>>> We do no recommend to register deployers programmatically. The >>>> recommended approach is to declare them in the component.xml. This allows >>>> Carbon kernel to read and register deployers before initializing Apache >>>> Axis2 engine. If you register deployers programmatically, Carbon kernel >>>> does not have any control. Your artifacts may get deployed after server has >>>> been started. I.e. after the transports are started. >>>> >>>> The above approach perfectly fits if the deployers do not get added or >>>> removed dynamically. But in your case, we cannot predict the number of >>>> deployers. I.e. for every new virtual host, there will be a new webapp >>>> deployer. Therefore we cannot list all the deployers in the component.xml. >>>> Now we need to come up with a solution to support this requirement. >>>> >>>> Thanks, >>>> Sameera. >>>> >>>> >>>> >>>> On Mon, Jun 2, 2014 at 2:43 PM, Kasun Gajasinghe <[email protected]> >>>> wrote: >>>> >>>>> >>>>> >>>>> >>>>> On Mon, Jun 2, 2014 at 2:05 PM, Nipuni Perera <[email protected]> wrote: >>>>> >>>>>> I didn't change the default deployer. I only read appBase values of >>>>>> virtual hosts and added them to the deployment engine. But the webapp >>>>>> deployment take place just after management console is started. >>>>>> >>>>>> >>>>> This happens if the deployers got added after axis2 has started IIRC. >>>>> So, we need to make sure of the order. But unfortunately, we do not have a >>>>> proper way to force this order currently. >>>>> >>>>> @Sameera, any ideas? >>>>> >>>>> >>>>>> Thanks, >>>>>> Nipuni >>>>>> >>>>>> >>>>>> On Mon, Jun 2, 2014 at 12:28 PM, Kasun Gajasinghe <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> >>>>>>> I do not think that you should remove the default webapp deployer >>>>>>> from component.xml. Your should be in effect only for the additional >>>>>>> virtual hosts. >>>>>>> >>>>>>> >>>>>>> On Mon, Jun 2, 2014 at 9:25 AM, Nipuni Perera <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> This is working. This was due to an ip address conflict. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Nipuni >>>>>>>> >>>>>>>> >>>>>>>> On Sun, Jun 1, 2014 at 3:41 PM, Nipuni Perera <[email protected]> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> I am working on the $subject. According to the current >>>>>>>>> implementation users has to put webapps inside >>>>>>>>> repositro/depolment/server/webapss and access them via host name >>>>>>>>> "localhost" only. I have modified carbontomcat.java to deploy webapps >>>>>>>>> in a >>>>>>>>> location defined inside appBase of virtualhosts. But this needs to >>>>>>>>> add an >>>>>>>>> entry to component.xml to direct the name of webapps directory to the >>>>>>>>> relevent WebAppDeployer class. (Adding an entry to component.xml each >>>>>>>>> time >>>>>>>>> a new appBase is created is not preferred) >>>>>>>>> >>>>>>>>> I have tried following steps when adding deployers to deployment >>>>>>>>> engine without reading component.xml file. When reading component.xml >>>>>>>>> file, >>>>>>>>> the Axis2DeployerRegistry class adds the deployers and relevant >>>>>>>>> directory >>>>>>>>> names to a deploymentEngine. In order to skip reading component.xml, >>>>>>>>> deployment engine should be updated using the virtual host appBase >>>>>>>>> values >>>>>>>>> and deployer names. >>>>>>>>> >>>>>>>>> *Scenario 1* >>>>>>>>> >>>>>>>>> >>>>>>>>> 1. I created a new service component class inside >>>>>>>>> /org/wso2/carbon/webapp/deployer/internal/ and added following, >>>>>>>>> >>>>>>>>> CarbonTomcatService >>>>>>>>> carbonTomcatService = DataHolder.getCarbonTomcatService(); >>>>>>>>> DeploymentEngine deploymentEngine >>>>>>>>> = >>>>>>>>> (DeploymentEngine)(DataHolder.getServerConfigContext().getAxisConfiguration()).getConfigurator(); >>>>>>>>> >>>>>>>>> This gave null values to both variables. >>>>>>>>> ("serverConfigContext" and "carbonTomcatService" variables initialize >>>>>>>>> inside service components in /org/wso2/carbon/webapp/mgt/internal. So >>>>>>>>> it >>>>>>>>> seems the newly created service component classes executes first) >>>>>>>>> >>>>>>>>> *Scenario 2* >>>>>>>>> >>>>>>>>> 1. I have created a new OSGI bundle which tries to read above >>>>>>>>> two variables inside its Activator class and service component >>>>>>>>> class. I >>>>>>>>> could read proper values inside the service component class and >>>>>>>>> update >>>>>>>>> deployment engine. But according to logs, this executes after >>>>>>>>> starting the >>>>>>>>> wso2 carbon. But, the following statement does deploy the webapps >>>>>>>>> inside >>>>>>>>> the appBase. >>>>>>>>> >>>>>>>>> >>>>>>>>> deploymentEngine.addDeployer(deployer, directory, extension); >>>>>>>>> >>>>>>>>> But I am able to access webapps using host name "localhost" only, >>>>>>>>> What could be the issue here? >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> >>>>>>>>> Nipuni >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Nipuni Perera >>>>>>>>> Software Engineer; WSO2 Inc.; http://wso2.com >>>>>>>>> Email: [email protected] >>>>>>>>> Git hub profile: https://github.com/nipuni >>>>>>>>> Mobile: +94 (71) 5626680 >>>>>>>>> <http://wso2.com> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Nipuni Perera >>>>>>>> Software Engineer; WSO2 Inc.; http://wso2.com >>>>>>>> Email: [email protected] >>>>>>>> Git hub profile: https://github.com/nipuni >>>>>>>> Mobile: +94 (71) 5626680 >>>>>>>> <http://wso2.com> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> >>>>>>> *Kasun Gajasinghe*Senior Software Engineer, WSO2 Inc. >>>>>>> email: kasung AT spamfree wso2.com >>>>>>> linked-in: http://lk.linkedin.com/in/gajasinghe >>>>>>> blog: http://kasunbg.org >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Nipuni Perera >>>>>> Software Engineer; WSO2 Inc.; http://wso2.com >>>>>> Email: [email protected] >>>>>> Git hub profile: https://github.com/nipuni >>>>>> Mobile: +94 (71) 5626680 >>>>>> <http://wso2.com> >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> *Kasun Gajasinghe*Senior Software Engineer, WSO2 Inc. >>>>> email: kasung AT spamfree wso2.com >>>>> linked-in: http://lk.linkedin.com/in/gajasinghe >>>>> blog: http://kasunbg.org >>>>> >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> Sameera Jayasoma, >>>> Software Architect, >>>> >>>> WSO2, Inc. (http://wso2.com) >>>> email: [email protected] >>>> blog: http://sameera.adahas.org >>>> twitter: https://twitter.com/sameerajayasoma >>>> flickr: http://www.flickr.com/photos/sameera-jayasoma/collections >>>> Mobile: 0094776364456 >>>> >>>> Lean . Enterprise . Middleware >>>> >>>> >>> >>> >>> -- >>> Sameera Jayasoma, >>> Software Architect, >>> >>> WSO2, Inc. (http://wso2.com) >>> email: [email protected] >>> blog: http://sameera.adahas.org >>> twitter: https://twitter.com/sameerajayasoma >>> flickr: http://www.flickr.com/photos/sameera-jayasoma/collections >>> Mobile: 0094776364456 >>> >>> Lean . Enterprise . Middleware >>> >>> >> >> >> -- >> Nipuni Perera >> Software Engineer; WSO2 Inc.; http://wso2.com >> Email: [email protected] >> Git hub profile: https://github.com/nipuni >> Mobile: +94 (71) 5626680 >> <http://wso2.com> >> >> > > > -- > Nipuni Perera > Software Engineer; WSO2 Inc.; http://wso2.com > Email: [email protected] > Git hub profile: https://github.com/nipuni > Mobile: +94 (71) 5626680 > <http://wso2.com> > > -- Sameera Jayasoma, Software Architect, WSO2, Inc. (http://wso2.com) email: [email protected] blog: http://sameera.adahas.org twitter: https://twitter.com/sameerajayasoma flickr: http://www.flickr.com/photos/sameera-jayasoma/collections Mobile: 0094776364456 Lean . Enterprise . Middleware
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
