You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by Ivan <xh...@gmail.com> on 2010/01/04 02:53:39 UTC

Re: About deploying web applications to Tomcat 7.0

Open a JIRA GERONIMO-5009 to track it.

2009/12/31 Ivan <xh...@gmail.com>

>
>
> 2009/12/31 David Jencks <da...@yahoo.com>
>
>
>> On Dec 31, 2009, at 12:33 AM, Ivan wrote:
>>
>>
>> After updating some deplyment codes, currently, I could deploy a simple
>> web application to geronimo-tomcat server. As discussed in the past, a
>> packed car file will installed in the repository folder finally, not an
>> exploded one. Currently, a temp folder is created for each
>> DeploymentContext, and the application files would be extracted there for
>> analysis, then it will be packed as a single jar file. However, there are
>> still some detailed things need to be discussed, e.g. for the efficiency
>> consideration, I write the plugin meta data eariler, in the
>> DeploymentContext.getConfigurationData, while it was in the
>> RepositoryConfigurationStore.install in the past, as I found that it is not
>> easy to modify an existed jar file.
>>
>>
>> I don't understand what you are proposing here, could you be more
>> explicit?
>>
>
>  Just list the issues while enabling the war deployment, have you also
> begun the code changes for it ? If not, I would like to open a JIRA, and try
> to work on it.
>
>
>> Anyway, at least, it means that it is feasible to keep a packed file in
>> the repository.
>> Later, I will try to deploy an EAR package contains more than one WARs.
>>
>>
>> This works fine now for me in the base console with the limitation that
>> all modules in the ear get into the same single bundle.
>>
>> I will try the solution about dividing the ear as multiple bundles, the
>> ear itself is one, all the modules it contains are the others, and it is
>> possible to use require-bundle to connect the module bundle to the ear
>> bundle.
>>
>>
>> I'd prefer to avoid require-bundle.  I was thinking of modifying the pax
>> url handler so that we could continue to repackage the ear as we do now, but
>> have the car file contain several bundles corresponding to the different
>> modules inside.  We could perhaps imitate jar urls and append !<moduleName>
>> to point to an "internal" bundle.  If we did this the car would still be a
>> single artifact in maven but would supply all the bundles at once.
>>
>
>     Yes, require-bundle did not have a good reputation in the OSGI world,
> but in this scenario, I think we could use it to reduce the complexity.
>     Keeping the same package way is a good choice, for currently, the
> repository directory is a really 'repository', Geronimo never loads any
> class from it, ^_^.  But if in that way, the file is not a standard bundle,
> and it only works for the special url handler.
>
>>
>> One thing I am thinking is that how to generate the exports for the ear
>> bundle, maybe the deployer might need use something like asm to scan all the
>> library files.
>>
>>
>> I think we should look into using BND for this.
>>
>
>     Yes, BND should help us.
>
>>
>> thanks
>> david jencks
>>
>>
>> Any comment ?
>>
>> 2009/12/29 Ivan <xh...@gmail.com>
>>
>>>
>>>
>>> 2009/12/29 David Jencks <da...@yahoo.com>
>>>
>>>
>>>> On Dec 28, 2009, at 6:51 AM, Ivan wrote:
>>>>
>>>>  Hi,
>>>>>    With the latest welcome-tomcat-server assembly, I could run the
>>>>> pre-shipped welcome plugins, and everything seems well, with pre-compiled
>>>>> and non-pre-compiled jsps.
>>>>>    Later, I tried to deploy a simple web application via deploy
>>>>> command, it failed as expected ;-)
>>>>>    The current problem I think we need to solve first is that we should
>>>>> have a decision about how to store the package in the repository. From the
>>>>> usual work style in OSGI, it is better to keep a packed file there. About
>>>>> the inplace way, so far I could not see any way to deploy a folder to the
>>>>> OSGI runtime. Currently, all the copying work is done by the implementations
>>>>> of ResourceContext, each modulebuilder would be resposible for copying the
>>>>> module files to the folder in the repository. An intuitive way is to provide
>>>>> a new implementation for the ResourceContext, it would support to update the
>>>>> packed file.
>>>>>    Any comment before I try it ? I did not go through all the
>>>>> deployment codes, something might be missed. ^_^
>>>>>
>>>>
>>>> I don't think we can support in-place deployment until after we figure
>>>> out how to support direct use of bundles in our maven-like repo without
>>>> copying them into the osgi structure.  I think about this sometimes but
>>>> don't regard it as a high priority.
>>>>
>>>
>>>  I agree, for supporting in-place deployment, I guess that we might need
>>> to extend mvn protocol handler or even Felix runtime.
>>> Actually, I also checked the Karaf, as it said that it supports to deploy
>>> a folder to the OSGI runtime. But it just packed the folder to a jar file,
>>> then process the deployment, which it is not acceptable in my opinion.
>>>
>>>
>>>
>>>> Can you be more specific about what doesn't work, and how you tried to
>>>> deploy?  I didn't know any of the deploy commands worked enough to even
>>>> start deployment.  If they do, It's not obvious to me what might be broken.
>>>>  Does a packed bundle get created?  Does geroimo know how to tell osgi about
>>>> it?
>>>>
>>>>  The command that I use is : deploy deploy sample.war. The exception
>>> that I got is that
>>> --->
>>> Unable to cache bundle: mvn:default/TestWeb2/1.0/car
>>> error in opening zip file
>>>
>>> at
>>> org.apache.geronimo.deployment.cli.CommandDistribute.executeOnline(CommandDistribute.java:168)
>>> at
>>> org.apache.geronimo.deployment.cli.CommandDistribute.execute(CommandDistribute.java:124)
>>> at
>>> org.apache.geronimo.deployment.cli.DeployTool.execute(DeployTool.java:166)
>>> at org.apache.geronimo.system.main.MainBridge.execute(MainBridge.java:64)
>>> at org.apache.geronimo.main.Bootstrapper.execute(Bootstrapper.java:109)
>>> at org.apache.geronimo.cli.AbstractCLI.executeMain(AbstractCLI.java:65)
>>> at org.apache.geronimo.cli.deployer.DeployerCLI.main(DeployerCLI.java:31)
>>> <---
>>>
>>> This exception was thrown by Felix while starting the deployed bundle in
>>> ConfigurationManager, which means TomcatBuilder had successfully configure
>>> the web application. Although I am not sure the ConfigurationBuilder
>>> behaviored correctly, the deployment process passed.
>>>
>>> As I said in the last email, from the current trend I saw, we kept a
>>> packed car file in the repository while building the server, so in the
>>> deployment process, we might need to keep consistent, which means for each
>>> modulebuilder, it does not need to copy those files in the module
>>> installation, the only thing they need to do is just to update some files in
>>> the packed file if required.
>>>
>>>
>>>> thanks
>>>> david jencks
>>>>
>>>>
>>>>  --
>>>>> Ivan
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> thanks
>>> Ivan
>>>
>>
>>
>>
>> --
>> Ivan
>>
>>
>>
>
>
> --
> Ivan
>



-- 
Ivan

Re: About deploying web applications to Tomcat 7.0

Posted by Ivan <xh...@gmail.com>.
By the way, is there any introduction for the Aries application bundle ? I
did not find too much things on their wiki.

2010/1/4 Ivan <xh...@gmail.com>

> Yes, I am also sure that it should be easy to make the mvn protocol handler
> to support the nested bundle function.  The reason for saying "not a
> standard bundle" is for the no-copying OSGI bundle deployment, I guess that
> it might be more difficult if the source file is a nested bundle file.
> However, it is just a guess ;-)
>
> 2010/1/4 David Jencks <da...@yahoo.com>
>
>
>> On Jan 3, 2010, at 5:53 PM, Ivan wrote:
>> <snip>
>>
>>  I will try the solution about dividing the ear as multiple bundles, the
>>>> ear itself is one, all the modules it contains are the others, and it is
>>>> possible to use require-bundle to connect the module bundle to the ear
>>>> bundle.
>>>>
>>>
>>> I'd prefer to avoid require-bundle.  I was thinking of modifying the pax
>>> url handler so that we could continue to repackage the ear as we do now, but
>>> have the car file contain several bundles corresponding to the different
>>> modules inside.  We could perhaps imitate jar urls and append !<moduleName>
>>> to point to an "internal" bundle.  If we did this the car would still be a
>>> single artifact in maven but would supply all the bundles at once.
>>>
>>>    Yes, require-bundle did not have a good reputation in the OSGI world,
>>> but in this scenario, I think we could use it to reduce the complexity.
>>>    Keeping the same package way is a good choice, for currently, the
>>> repository directory is a really 'repository', Geronimo never loads any
>>> class from it, ^_^.  But if in that way, the file is not a standard bundle,
>>> and it only works for the special url handler.
>>>
>>
>> Well, after the bundle gets extracted by the url handler it's a plain
>> ordinary bundle.  The car-with bundles-inside is really just a delivery
>> mechanism.  I'm pretty sure it would be easy to implement, but might not be
>> a great idea long term.  It might be convenient until we find something
>> better.  On the other hand it might get popular in other contexts.
>>
>> I forgot to mention that the other approach that seems promising to me is
>> to use the application bundle idea from the aries project.
>>
>> thanks
>> david jencks
>>
>>
>>>  One thing I am thinking is that how to generate the exports for the ear
>>>> bundle, maybe the deployer might need use something like asm to scan all the
>>>> library files.
>>>>
>>>
>>> I think we should look into using BND for this.
>>>
>>>    Yes, BND should help us.
>>>
>>> thanks
>>> david jencks
>>>
>> <snip>
>>
>
>
>
> --
> Ivan
>



-- 
Ivan

Re: About deploying web applications to Tomcat 7.0

Posted by Ivan <xh...@gmail.com>.
Yes, I am also sure that it should be easy to make the mvn protocol handler
to support the nested bundle function.  The reason for saying "not a
standard bundle" is for the no-copying OSGI bundle deployment, I guess that
it might be more difficult if the source file is a nested bundle file.
However, it is just a guess ;-)

2010/1/4 David Jencks <da...@yahoo.com>

>
> On Jan 3, 2010, at 5:53 PM, Ivan wrote:
> <snip>
>
>  I will try the solution about dividing the ear as multiple bundles, the
>>> ear itself is one, all the modules it contains are the others, and it is
>>> possible to use require-bundle to connect the module bundle to the ear
>>> bundle.
>>>
>>
>> I'd prefer to avoid require-bundle.  I was thinking of modifying the pax
>> url handler so that we could continue to repackage the ear as we do now, but
>> have the car file contain several bundles corresponding to the different
>> modules inside.  We could perhaps imitate jar urls and append !<moduleName>
>> to point to an "internal" bundle.  If we did this the car would still be a
>> single artifact in maven but would supply all the bundles at once.
>>
>>    Yes, require-bundle did not have a good reputation in the OSGI world,
>> but in this scenario, I think we could use it to reduce the complexity.
>>    Keeping the same package way is a good choice, for currently, the
>> repository directory is a really 'repository', Geronimo never loads any
>> class from it, ^_^.  But if in that way, the file is not a standard bundle,
>> and it only works for the special url handler.
>>
>
> Well, after the bundle gets extracted by the url handler it's a plain
> ordinary bundle.  The car-with bundles-inside is really just a delivery
> mechanism.  I'm pretty sure it would be easy to implement, but might not be
> a great idea long term.  It might be convenient until we find something
> better.  On the other hand it might get popular in other contexts.
>
> I forgot to mention that the other approach that seems promising to me is
> to use the application bundle idea from the aries project.
>
> thanks
> david jencks
>
>
>>  One thing I am thinking is that how to generate the exports for the ear
>>> bundle, maybe the deployer might need use something like asm to scan all the
>>> library files.
>>>
>>
>> I think we should look into using BND for this.
>>
>>    Yes, BND should help us.
>>
>> thanks
>> david jencks
>>
> <snip>
>



-- 
Ivan

Re: About deploying web applications to Tomcat 7.0

Posted by David Jencks <da...@yahoo.com>.
On Jan 3, 2010, at 5:53 PM, Ivan wrote:
<snip>
>> I will try the solution about dividing the ear as multiple bundles,  
>> the ear itself is one, all the modules it contains are the others,  
>> and it is possible to use require-bundle to connect the module  
>> bundle to the ear bundle.
>
> I'd prefer to avoid require-bundle.  I was thinking of modifying the  
> pax url handler so that we could continue to repackage the ear as we  
> do now, but have the car file contain several bundles corresponding  
> to the different modules inside.  We could perhaps imitate jar urls  
> and append !<moduleName> to point to an "internal" bundle.  If we  
> did this the car would still be a single artifact in maven but would  
> supply all the bundles at once.
>
>     Yes, require-bundle did not have a good reputation in the OSGI  
> world, but in this scenario, I think we could use it to reduce the  
> complexity.
>     Keeping the same package way is a good choice, for currently,  
> the repository directory is a really 'repository', Geronimo never  
> loads any class from it, ^_^.  But if in that way, the file is not a  
> standard bundle, and it only works for the special url handler.

Well, after the bundle gets extracted by the url handler it's a plain  
ordinary bundle.  The car-with bundles-inside is really just a  
delivery mechanism.  I'm pretty sure it would be easy to implement,  
but might not be a great idea long term.  It might be convenient until  
we find something better.  On the other hand it might get popular in  
other contexts.

I forgot to mention that the other approach that seems promising to me  
is to use the application bundle idea from the aries project.

thanks
david jencks
>
>> One thing I am thinking is that how to generate the exports for the  
>> ear bundle, maybe the deployer might need use something like asm to  
>> scan all the library files.
>
> I think we should look into using BND for this.
>
>     Yes, BND should help us.
>
> thanks
> david jencks
<snip>