As in the implementation, I have hard-coded the webapp deployer class as, ....
deployerConfig.setClassStr("org.wso2.carbon.webapp.deployer.WebappDeployer"); ..... So that webapps inside appBase locations of virtual hosts will be deployed using the given deployer class. Is there a proper way to set deployer class? Thanks, Nipuni On Wed, Jun 4, 2014 at 9:07 AM, Nipuni Perera <nip...@wso2.com> wrote: > Hi, > > I have attached the patches here. After applying changes to both > carbon4-kernal and carbon-deployment, you can access webapps via virtual > hosts as follows, > > 1. Modify the /repository/conf/tomcat/catalina-server.xml to insert > new host entries, > > <Host name="localhost" unpackWARs="true" > deployOnStartup="false" autoDeploy="false" > appBase="${carbon.home}/repository/deployment/server/lh"> > ...... > </Host> > <Host name="www.vhost1.com" unpackWARs="true" > deployOnStartup="false" autoDeploy="false" > appBase="${carbon.home}/repository/deployment/server/webapps/"> > ...... > </Host> > <Host name="www.vhost2.com" unpackWARs="true" > deployOnStartup="false" autoDeploy="false" > appBase="${carbon.home}/repository/deployment/server/vhost/"> > ...... > </Host> > 2. Add webapps to above appBase locations (eg; put "STRATOS_ROOT" > inside lh, put "example.war" to webapps and "jaxrs_basic.war" to vhost) > 3. Start WSO2 AS and you should be able to access the webapps via > following addresses, (I haven't updated the UI yet, so that these webapps > can not be accessed via "Action" column of the application list in > Management console) > > http://localhost:9763/STRATOS_ROOT > http://www.vhost1.com:9763/example > > http://www.vhost2.com:9763/jaxrs_basic/services/services > > Note: You should add following entries to /etc/hosts initially to access > virtual hosts, > > <your-ip-address> <virtual-host-name> > > according to the above configuration, the entries are, > > <your-ip-address> www.vhost1.com > <your-ip-address> www.vhost2.com > > Thanks, > Nipuni > > > On Tue, Jun 3, 2014 at 3:14 PM, Sameera Jayasoma <same...@wso2.com> wrote: > >> 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 <nip...@wso2.com> 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 <nip...@wso2.com> wrote: >>> >>>> I will implement and provide a patch. >>>> >>>> Thanks, >>>> Nipuni >>>> >>>> >>>> On Mon, Jun 2, 2014 at 6:14 PM, Sameera Jayasoma <same...@wso2.com> >>>> 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 <same...@wso2.com> >>>>> 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 <kas...@wso2.com> >>>>>> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Mon, Jun 2, 2014 at 2:05 PM, Nipuni Perera <nip...@wso2.com> >>>>>>> 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 <kas...@wso2.com> >>>>>>>> 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 <nip...@wso2.com> >>>>>>>>> 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 <nip...@wso2.com> >>>>>>>>>> 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: nip...@wso2.com >>>>>>>>>>> Git hub profile: https://github.com/nipuni >>>>>>>>>>> Mobile: +94 (71) 5626680 >>>>>>>>>>> <http://wso2.com> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Nipuni Perera >>>>>>>>>> Software Engineer; WSO2 Inc.; http://wso2.com >>>>>>>>>> Email: nip...@wso2.com >>>>>>>>>> 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: nip...@wso2.com >>>>>>>> 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: same...@wso2.com >>>>>> 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: same...@wso2.com >>>>> 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: nip...@wso2.com >>>> Git hub profile: https://github.com/nipuni >>>> Mobile: +94 (71) 5626680 >>>> <http://wso2.com> >>>> >>>> >>> >>> >>> -- >>> Nipuni Perera >>> Software Engineer; WSO2 Inc.; http://wso2.com >>> Email: nip...@wso2.com >>> Git hub profile: https://github.com/nipuni >>> Mobile: +94 (71) 5626680 >>> <http://wso2.com> >>> >>> >> >> >> -- >> Sameera Jayasoma, >> Software Architect, >> >> WSO2, Inc. (http://wso2.com) >> email: same...@wso2.com >> 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: nip...@wso2.com > Git hub profile: https://github.com/nipuni > Mobile: +94 (71) 5626680 > <http://wso2.com> > > -- Nipuni Perera Software Engineer; WSO2 Inc.; http://wso2.com Email: nip...@wso2.com Git hub profile: https://github.com/nipuni Mobile: +94 (71) 5626680 <http://wso2.com>
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev