dev@glassfish.java.net

Re: Jerome, Sahoo: please review Jersey 1.1.0-ea integration patch

From: Jakub Podlesak <Jakub.Podlesak_at_Sun.COM>
Date: Tue, 05 May 2009 10:04:52 +0200

Hi Snjezana,

please see inline...

On Mon, May 04, 2009 at 04:10:54PM -0700, Snjezana Sevo-Zenzerovic wrote:
> Please see inline...
>
> Thanks,
>
> Snjezana
>
> Jakub Podlesak wrote:
>
>> On Mon, May 04, 2009 at 01:20:58PM -0700, Snjezana Sevo-Zenzerovic wrote:
>>
>>> Jakub,
>>>
>>> one note/question - I see that you changed IPS package dependencies to
>>> include both glassfish-nucleus and metro packages. Do you still require
>>> only jaxb from metro? If that's the case, you should define dependency on
>>> glassfish-common package since jaxb is there now, and you don't need
>>> separate dependency on glassfish-nucleus since glassfish-common depends
>>> on it.
>>>
>>
>> Does it apply from now on? Is it any different for gfv3 prelude?
>> I mean, do we need different dependencies for GFv3 Prelude/GFv3 Preview?
>>
> OK, I see your point now - so, you wanted to use the same package as an
> update in Prelude repository, right?

Yes.

>
> That will be somewhat tricky...One option would be to resort to the

That is what i was afraid of :-(

> overkill of specifying both glassfish-common and metro packages as
> dependencies, so you would be sure to get jaxb in both cases. Downside of
> this is that in the case of GF trunk/preview release you would always be
> pulling in Metro package which you do not really need anymore.

I do not want to go this way.

>
> My personal recommendation would be to create two separate instances of the
> jersey package, one for trunk/preview and another one for Prelude update,
> each one having proper IPS dependency for its own branch.

It is something i wanted to avoid.

>
>> Thanks,
>>
>> ~Jakub
>>
>> P.S. Forgive me, please, but i can not help myself: do not we want to have
>> jaxb module provided in a separate jaxb ips package (and similarly all
>> other modules
>> in corresponding ips packages), so that things are simple and transparent?
>>
> You really don't have to apologize, I have seen you asking this in other

OK.

> jaxb related thread and it is perfectly valid question although I don't
> have the answer you want to hear... IPS tooling is not particularly well
> equipped to handle something that is fine grained on that level and even

I am afraid i do not understand this. IPS was originally designed as a packaging
system for OS packages, right? If i count packages currently installed in my system,
i get:

% pkginfo | wc -l
    1682

I.e. many more than a thousand of packages. What is the number of GFv3 IPS packages?

> with the current state of things we are trying to cut down on the number of
> IPS packages (and even number of individual jars) used for GlassFish
> distributions.

Then if the limitation factor is limited number of GFv3 jars, is it just
GlassFish limitation, or a limitation of the underlying OSGI container?
Do we have any hard numbers telling us, what the limit is?
Is there any plan to fix this?


> With each additional IPS package we introduce overhead when it comes to
> build time and additional distribution download size related to package
> metadata. From end-user perspective, it would also be pretty hard to use

I was really surprised, when i saw, that in GFv2 UC, the very same content
of Jersey module takes only ~2.5MB, while in GFv3 UC it takes ~10MB
to be downloaded. Is this an improvement? I think it is a regression,
which shoud be fixed.

> client tools such as updatetool and update section of Admin GUI since even
> out of the box they would have to deal with the list of literally hundreds
> of IPS packages.

There is software capable of handling that big number of packages available
in every linux distro. I believe this is not a principle limitation, even
for a web based interface (if you are referring to the admin GUI).
With list paging and search feature, you should be able to handle this all right.

We are heavily depending on the IPS subsystem in GlassFish.
It should really pay off to fix it and spend the time there only for once
instead of keep spending time on workarounding things
and shuffle jars. Especially, if we want external contributors
to be involved in providing GFv3 packages.

Thoughts?

~Jakub

>
>>
>>
>>> Thanks,
>>>
>>> Snjezana
>>>
>>> Jakub Podlesak wrote:
>>>
>>>
>>>> Hi Jerome, Sahoo,
>>>>
>>>> Could you please review the attached patch,
>>>> which should integrate Jersey version 1.1.0-ea into the 3.0-Preview
>>>> branch and the main trunk.
>>>>
>>>> Thanks,
>>>>
>>>> ~Jakub
>>>>
>>>> ------------------------------------------------------------------------
>>>>
>>>> Index: pom.xml
>>>> ===================================================================
>>>> --- pom.xml (revision 26906)
>>>> +++ pom.xml (working copy)
>>>> @@ -155,7 +155,7 @@
>>>> <antlr.version>2.7.6</antlr.version>
>>>> <mq.version>4.4-005</mq.version>
>>>> <webbeans.version>1.0.0.PREVIEW1</webbeans.version>
>>>> - <jersey.version>1.0.1</jersey.version>
>>>> + <jersey.version>1.1.0-ea</jersey.version>
>>>> <jbi.version>1.0</jbi.version>
>>>> <wsdl4j.version>1.6.2</wsdl4j.version>
>>>> <gfprobe-provider-client.version>3.0.0-b001</gfprobe-provider-client.version>
>>>> Index: packager/jersey/src/main/resources/pkg_proto.py
>>>> ===================================================================
>>>> --- packager/jersey/src/main/resources/pkg_proto.py (revision 26906)
>>>> +++ packager/jersey/src/main/resources/pkg_proto.py (working copy)
>>>> @@ -35,21 +35,30 @@
>>>> # only if the new code is made subject to such option by the copyright
>>>> # holder.
>>>> #
>>>> +
>>>> import imp
>>>>
>>>> conf = imp.load_source("pkg_conf", "../pkg_conf.py")
>>>>
>>>> pkg = {
>>>> "name" : "jersey",
>>>> - "version" : "1.0.1,0-0.1",
>>>> - "attributes" : {
>>>> - "pkg.summary" : "Jersey RESTful Web services for GlassFish",
>>>> - "pkg.description" : "Jersey is the open source (under dual CDDL+GPL license) JAX-RS (JSR 311) Reference Implementation for building RESTful Web services. But, it is also more than the Reference Implementation. Jersey provides additional APIs and extension points (SPIs) so that developers may extend Jersey to suite their needs.",
>>>> - "info.classification" : "Web Services",
>>>> - },
>>>> - "dirtrees" : [ "jersey", "glassfish" ],
>>>> - "depends" : { "pkg:/metro_at_1.4" : {"type" : "require" }},
>>>> - "licenses" : {
>>>> - "../../../../CDDL+GPL.txt" : {"license" : "CDDL and GPL v2 with classpath exception"},
>>>> - },
>>>> + "version" : "1.1.0,0-1.0",
>>>> + "attributes" : { "pkg.summary" : "Jersey Core, RESTful Web services for GlassFish",
>>>> + "pkg.description" : +"Jersey core runtime
>>>> libraries including some 3rd party dependencies. \
>>>> + Documentation and examples of Jersey were moved to a separate package, Jersey Examples And Documentation. \
>>>> + If you are about to upgrade Jersey, you might want to install that new package as well, otherwise Jersey examples and javadocs will get deleted. \
>>>> + Also please note, that from 1.0.3 version on, Jersey docs and examples get installed into <as_home>/glassfish/jersey directory instead of just <as_home>/jersey. \
>>>> + Jersey is the open source (under dual CDDL+GPL license)\
>>>> + JAX-RS (JSR 311) Reference Implementation for building RESTful Web services. \
>>>> + But, it is also more than the Reference Implementation. \
>>>> + Jersey provides additional APIs and extension points (SPIs) \
>>>> + so that developers may extend Jersey to suite their needs.",
>>>> + "info.classification" : "Web Services" },
>>>> + "dirtrees" : [ "glassfish"],
>>>> + "depends" : { + "pkg:/glassfish-nucleus_at_3.0" :
>>>> {"type" : "require" }
>>>> + ,"pkg:/metro_at_1.4" : {"type" : "require" }
>>>> + },
>>>> + "licenses" : { "../../../../CDDL+GPL.txt" : {"license" : "CDDL and GPL v2 with classpath exception"}}
>>>> }
>>>> Index: packager/jersey/pom.xml
>>>> ===================================================================
>>>> --- packager/jersey/pom.xml (revision 26906)
>>>> +++ packager/jersey/pom.xml (working copy)
>>>> @@ -88,15 +88,12 @@
>>>>
>>>>
>>>> <dependencies>
>>>> - <!--
>>>> - modules to be included in this bundle - temporary solution
>>>> -until we sort out 1.0.2 non-snapshot dependencies
>>>> - --> <dependency> -
>>>> <groupId>org.glassfish.packager.temp</groupId>
>>>> - <artifactId>jersey</artifactId>
>>>> + <groupId>com.sun.jersey.glassfish.v3</groupId>
>>>> + <artifactId>jersey-gfv3-core</artifactId>
>>>> <version>${jersey.version}</version>
>>>> <type>zip</type>
>>>> + <classifier>project</classifier>
>>>> </dependency>
>>>> </dependencies>
>>>>
>>>> @@ -134,9 +131,17 @@
>>>> </profile>
>>>> </profiles> + <repositories>
>>>> + <repository>
>>>> + <id>maven2-repository.dev.java.net</id>
>>>> + <name>Java.net Repository for Maven</name>
>>>> + <url>http://download.java.net/maven/2/</url>
>>>> + </repository>
>>>> + </repositories>
>>>> +
>>>> <pluginRepositories>
>>>> <pluginRepository>
>>>> - <id>maven2-repository.dev.java.net</id>
>>>> + <id>maven2-plugin-repository.dev.java.net</id>
>>>> <name>Java.net Repository for Maven</name>
>>>> <url>http://download.java.net/maven/2/</url>
>>>> </pluginRepository>
>>>> Index: packager/jersey/build.xml
>>>> ===================================================================
>>>> --- packager/jersey/build.xml (revision 26906)
>>>> +++ packager/jersey/build.xml (working copy)
>>>> @@ -25,7 +25,7 @@
>>>> <target name="create.package">
>>>> <echo message="Staging files"/>
>>>>
>>>> - <unzip src="target/tmp/jersey.zip"
>>>> + <unzip src="target/tmp/jersey-gfv3-core-project.zip"
>>>> dest="target/stage/${install.dir.name}">
>>>> </unzip>
>>>>
>>>> @@ -34,7 +34,7 @@
>>>> <antcall target="pack.compression" />
>>>> </if>
>>>> - <zip file="target/jersey.zip"
>>>> basedir="target/stage">
>>>> + <zip file="target/jersey.zip" basedir="target/stage" excludes="**/jersey-core_proto.py, **/LICENSE.txt">
>>>> </zip>
>>>>
>>>> <attachArtifact file="target/jersey.zip"/>
>>>> ------------------------------------------------------------------------
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>>
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
>> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: dev-help_at_glassfish.dev.java.net
>