Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 362724

Summary: Build Equinox against Servlet 3.0
Product: [Eclipse Project] Platform Reporter: Simon Archer <sja.eclipse>
Component: RelengAssignee: Kim Moir <kim.moir>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: daniel_megert, david_williams, hmalphettes, jesse.mcconnell, john.arthorne, kim.moir, luj_ghost83, pwebster, tjwatson
Version: 3.8   
Target Milestone: 3.8 M4   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Bug Depends on: 362217    
Bug Blocks:    
Attachments:
Description Flags
patch for features still in cvs
none
patch for sdk features
none
patch for equinox.serverside.sdk
none
patch to fix equinox build page none

Description Simon Archer CLA 2011-11-02 17:03:13 EDT
For Equinox 3.8 we are moving from Servlet 2.x to Servlet 3.0; see bug 341643 and bug 309529. It is therefore necessary for us to ensure that the changes are built and tested correctly. This is a high level bug report to gather the requirements for this work.

- The following two plug-ins have been changed to enable support for Servlet 3.0:
org.eclipse.equinox.http.servlet
org.eclipse.equinox.jsp.jasper

- It is important to note that while these plug-ins now work under Servlet 3.0, they must continue to execute under Servlet 2.x.

- We need to stop building the bundle org.eclipse.equinox.http.servlet, since it is no longer required now that we have Jetty in Equinox.

- We need to stop building the old org.mortbay.* plug-ins, since they are no longer necessary now that Jetty is in Equinox.

- We need to stop building older versions of Jetty (org.eclipse.equinox.http.jetty5 and org.eclipse.equinox.http.jetty6.), since we now have Jetty 8 (org.eclipse.equinox.http.jetty8) in Equinox.

- We need to assess the Eclipse Platform and Equinox dependencies on Servlet 2.x and consider each use and any adoptions that moving to Servlet 3.0 will cause.
Comment 1 Thomas Watson CLA 2011-11-02 17:16:51 EDT
(In reply to comment #0)
> - We need to stop building the bundle org.eclipse.equinox.http.servlet, since
> it is no longer required now that we have Jetty in Equinox.

What ever you do, don't stop building org.eclipse.equinox.http.servlet, that is required by the org.eclipse.equinox.http.jetty bundles.  I think you meant bundle org.eclipse.equinox.http.  I had opened bug 362217 for that.

> 
> - We need to stop building the old org.mortbay.* plug-ins, since they are no
> longer necessary now that Jetty is in Equinox.

Clarification: we need to stop including/shipping the org.mortbay.* bundles.  These come from orbit, we don't build them.

> 
> - We need to stop building older versions of Jetty
> (org.eclipse.equinox.http.jetty5 and org.eclipse.equinox.http.jetty6.), since
> we now have Jetty 8 (org.eclipse.equinox.http.jetty8) in Equinox.

I mentioned this in bug 362217, but should probably open a separate bug about this.
Comment 2 Kim Moir CLA 2011-11-08 10:55:43 EST
Okay, to summarize this is what I think we need to do

equinox.http bundle removed from the following features
org.eclipse.equinox.server.simple
master-equinox (buildtime feature I own)
org.eclipse.equinox.sdk
org.eclipse.equinox.serverside.sdk

mortbay.jetty, mortbay.jetty.server, mortbay.jetty.util bundles removed from the following features
master-equinox (buildtime feature I own)
org.eclipse.equinox.jmx.server
org.eclipse.equinox.server.jetty
org.eclipse.equinox.serverside.sdk
org.eclipse.help

I'm a bit confused by
>> We need to stop building older versions of Jetty
(org.eclipse.equinox.http.jetty5 and org.eclipse.equinox.http.jetty6.), since
we now have Jetty 8 (org.eclipse.equinox.http.jetty8) in Equinox.

Where is the new version of jetty, I don't see it in the build yet
-bash-3.00$ ls -d *equinox.http.jetty*
org.eclipse.equinox.http.jetty_1.1.100  
org.eclipse.equinox.http.jetty_2.0.0  org.eclipse.equinox.http.jetty.source_2.0.100.N20111107-2000
Comment 3 Thomas Watson CLA 2011-11-08 11:33:54 EST
(In reply to comment #2)
> Where is the new version of jetty, I don't see it in the build yet
> -bash-3.00$ ls -d *equinox.http.jetty*
> org.eclipse.equinox.http.jetty_1.1.100  
> org.eclipse.equinox.http.jetty_2.0.0 
> org.eclipse.equinox.http.jetty.source_2.0.100.N20111107-2000

These two equinox jetty bundles refer to the following entries in the core.map:

plugin@org.eclipse.equinox.http.jetty,2.0.0=GIT,tag=v20111010-1614,repo=git://git.eclipse.org/gitroot/equinox/rt.equinox.bundles.git,path=bundles/org.eclipse.equinox.http.jetty6
plugin@org.eclipse.equinox.http.jetty,1.1.100=GIT,tag=v20111010-1614,repo=git://git.eclipse.org/gitroot/equinox/rt.equinox.bundles.git,path=bundles/org.eclipse.equinox.http.jetty5

I have just added a third entry for jetty8 to the core.map and released the change to master:

plugin@org.eclipse.equinox.http.jetty,3.0.0=GIT,tag=v20111107-1631,repo=git://git.eclipse.org/gitroot/equinox/rt.equinox.bundles.git,path=bundles/org.eclipse.equinox.http.jetty8

The org.eclipse.equinox.http.jetty bundle that depends on jetty 8 will now be version 3.0:

Here is a mapping between the equinox.http.jetty bundles and their jetty version dependencies:

org.eclipse.equinox.http.jetty v=1.x ---> Jetty 5
org.eclipse.equinox.http.jetty v=2.x ---> Jetty 6
org.eclipse.equinox.http.jetty v=3.x ---> Jetty 8

We want to stop building the org.eclipse.equinox.http.jetty versions 1.x and 2.x versions since they depend on the old mortbay jetty versions.  We want to start building the org.eclipse.equinox.http.jetty version 3.0.0 which depends on the new eclipse jetty 8 version.  Sorry for the confusion.
Comment 4 Thomas Watson CLA 2011-11-08 11:42:25 EST
(In reply to comment #2)
> mortbay.jetty, mortbay.jetty.server, mortbay.jetty.util bundles removed from
> the following features
> master-equinox (buildtime feature I own)
> org.eclipse.equinox.jmx.server
> org.eclipse.equinox.server.jetty
> org.eclipse.equinox.serverside.sdk
> org.eclipse.help

Note that you will need to add the following jetty 8 bundles to these features then.

org.eclipse.jetty.continuation_8.0.1.v20110908
org.eclipse.jetty.http_8.0.1.v20110908
org.eclipse.jetty.io_8.0.1.v20110908
org.eclipse.jetty.security_8.0.1.v20110908
org.eclipse.jetty.server_8.0.1.v20110908
org.eclipse.jetty.servlet_8.0.1.v20110908
org.eclipse.jetty.util_8.0.1.v20110908

The exact versions are not important, but they must be 8.x versions.  The latest release of jetty 8 is 8.0.4 I suggest we start with that p2 repository:

http://download.eclipse.org/jetty/updates/jetty-bundles-8.x/8.0.4.v20111024/

Hugues how long do you retain the p2 repos for the releases?  I imagine it is indefinitely but want to confirm.  We will also need to lock down what version of jetty we want to ultimately be consumed into Juno so that we can ramp down properly some time in May.
Comment 5 Hugues Malphettes CLA 2011-11-08 16:01:24 EST
(In reply to comment #4)
> 
> http://download.eclipse.org/jetty/updates/jetty-bundles-8.x/8.0.4.v20111024/
> 
> Hugues how long do you retain the p2 repos for the releases?  I imagine it is
> indefinitely but want to confirm.
I added Jesse to the cc list.
Yes we will keep the p2repo we end-up using indefinitely.

> We will also need to lock down what version
> of jetty we want to ultimately be consumed into Juno so that we can ramp down
> properly some time in May.
Yes thanks for reminding us about it.
Comment 6 Kim Moir CLA 2011-11-09 10:53:01 EST
Created attachment 206706 [details]
patch for features still in cvs
Comment 7 Simon Archer CLA 2011-11-09 14:04:13 EST
Thanks Tom for catching my mistakes... a case for wanting to edit the description!  Sorry about that.

Kim, I have a test project called org.eclipse.equinox.http.servlet.tests that exercises org.eclipse.equinox.http.servlet. It's currently in my github repository since I am not an Equinox committer. I'm sufficiently green at git that I'm having some trouble getting it pushed to another git repository that Tom has recommended I use.
Comment 8 Thomas Watson CLA 2011-11-09 14:25:29 EST
Since we are not going to build org.eclipse.equinox.http the feature org.eclipse.equinox.server.simple is pretty useless.  It only contains a single bundle which is the javax.servlet bundle.  I think we should stop building this feature.
Comment 9 Thomas Watson CLA 2011-11-09 17:00:31 EST
We also need the new servlet 3.0 API bundles!!

<unit id="javax.el" version="2.2.0.v201108011116"/>
<unit id="javax.el.source" version="2.2.0.v201108011116"/>
<unit id="javax.servlet.jsp" version="2.2.0.v201103241009"/>
<unit id="javax.servlet.jsp.source" version="2.2.0.v201103241009"/>
<unit id="javax.servlet" version="3.0.0.v201108011116"/>
<unit id="javax.servlet.source" version="3.0.0.v201108011116"/>

And the new jasper glassfish bundle

<unit id="org.apache.jasper.glassfish" version="2.2.2.v201108011116"/>
<unit id="org.apache.jasper.glassfish.source" version="2.2.2.v201108011116"/>

The glassfish bundle needs to replace the current org.apache.jasper bundle we include.
Comment 10 Kim Moir CLA 2011-11-09 19:17:06 EST
The test build is still failing.  The help feature requires org.apache.commons.el which requires an old version of javax.servlet.  Not sure how to fix this.  

/builds/N201111091737/org.eclipse.releng.basebuilder/plugins/org.eclipse.pde.build_3.8.0.v20110728/scripts/genericTargets.xml:111: Processing inclusion from feature org.eclipse.help: Bundle org.apache.commons.el_1.0.0.v201101211617 failed to resolve.:
		 Unsatisfied import package javax.servlet_[2.4.0,3.0.0).
		 Unsatisfied import package javax.servlet.http_[2.4.0,3.0.0).
		 Unsatisfied import package javax.servlet.jsp_[2.0.0,2.1.0).
		 Unsatisfied import package javax.servlet.jsp.el_[2.0.0,2.1.0).
		 Unsatisfied import package javax.servlet.jsp.resources_[2.0.0,2.1.0).
		 Unsatisfied import package javax.servlet.jsp.tagext_[2.0.0,2.1.0).
		 Unsatisfied import package javax.servlet.resources_[2.4.0,3.0.0).

Anyways, I'll comment out the nightly build and we can look at it tomorrow.
Comment 11 Thomas Watson CLA 2011-11-09 21:50:52 EST
(In reply to comment #10)
> The test build is still failing.  The help feature requires
> org.apache.commons.el which requires an old version of javax.servlet.  Not sure
> how to fix this.  
> 
> /builds/N201111091737/org.eclipse.releng.basebuilder/plugins/org.eclipse.pde.build_3.8.0.v20110728/scripts/genericTargets.xml:111:
> Processing inclusion from feature org.eclipse.help: Bundle
> org.apache.commons.el_1.0.0.v201101211617 failed to resolve.:
>          Unsatisfied import package javax.servlet_[2.4.0,3.0.0).
>          Unsatisfied import package javax.servlet.http_[2.4.0,3.0.0).
>          Unsatisfied import package javax.servlet.jsp_[2.0.0,2.1.0).
>          Unsatisfied import package javax.servlet.jsp.el_[2.0.0,2.1.0).
>          Unsatisfied import package javax.servlet.jsp.resources_[2.0.0,2.1.0).
>          Unsatisfied import package javax.servlet.jsp.tagext_[2.0.0,2.1.0).
>          Unsatisfied import package javax.servlet.resources_[2.4.0,3.0.0).
> 
> Anyways, I'll comment out the nightly build and we can look at it tomorrow.

Sorry, I did not realize help used an el implementation.  There is a new el implementation in orbit at.  In my testing help seemed to function fine without one.  Anyway we are going to have to drop the org.apache.commons.el bundle for the following from orbit:

plugin@com.sun.el,2.2.0=p2IU,id=com.sun.el,version=2.2.0.v201108011116,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20111018035124/repository

plugin@com.sun.el.source,2.2.0=p2IU,id=com.sun.el.source,version=2.2.0.v201108011116,repository=http://download.eclipse.org/tools/orbit/downloads/drops/S20111018035124/repository
Comment 12 Kim Moir CLA 2011-11-10 08:06:55 EST
Thanks Tom, I've fixed this and started another test build.
Comment 13 Thomas Watson CLA 2011-11-10 09:37:34 EST
FYI, I opened bug 363473 because I am not convinced we support el properly.
Comment 14 Kim Moir CLA 2011-11-10 19:59:43 EST
This is released for the N20111110-2000 build.  There are compile errors in the ua tests.

Will verify that all the new source bundles are being generated, may have missed some with all the changes required.
Comment 15 Thomas Watson CLA 2011-11-10 22:28:33 EST
(In reply to comment #14)
> This is released for the N20111110-2000 build.  There are compile errors in the
> ua tests.

Simon A. Please pull in the UA tests from https://git.eclipse.org/c/platform/eclipse.platform.ua.git/ and see if you can figure out why they have compile errors.

> 
> Will verify that all the new source bundles are being generated, may have
> missed some with all the changes required.

Kudos to Kim for turning this rather difficult build task around this week.  Thanks!
Comment 16 Thomas Watson CLA 2011-11-10 22:35:21 EST
It looks like the ua tests have MockServletRequest and MockServletResponse classes that implement servlet container interfaces.  I suggest the tests be modified to use something like eazyMock instead of directly implementing such interfaces for mocking.
Comment 17 John Arthorne CLA 2011-11-11 08:56:00 EST
(In reply to comment #16)
> It looks like the ua tests have MockServletRequest and MockServletResponse
> classes that implement servlet container interfaces.  I suggest the tests be
> modified to use something like eazyMock instead of directly implementing such
> interfaces for mocking.

I have entered bug 363584 for these compile errors. Unfortunately we don't currently have active UA committers but we'll have to track someone down.
Comment 18 Kim Moir CLA 2011-11-11 10:39:08 EST
Created attachment 206856 [details]
patch for sdk features
Comment 19 Kim Moir CLA 2011-11-11 13:49:16 EST
I also updated the javadoc to reference the updated jars.
Comment 20 Kim Moir CLA 2011-11-11 17:05:54 EST
Tom, I'd like to run a test integration build on Monday to ensure we have tagged the many features this change entailed and don't break the Tuesday build.  If you could tag the Equinox features, that would be great, I have tagged the Eclipse SDK features.
Comment 21 Thomas Watson CLA 2011-11-11 17:22:14 EST
(In reply to comment #20)
> Tom, I'd like to run a test integration build on Monday to ensure we have
> tagged the many features this change entailed and don't break the Tuesday
> build.  If you could tag the Equinox features, that would be great, I have
> tagged the Eclipse SDK features.

Done, you may do a test integration build now.  FYI, I am traveling Sunday/Monday and will not be available.
Comment 22 Kim Moir CLA 2011-11-14 10:55:47 EST
Created attachment 206957 [details]
patch for equinox.serverside.sdk

Can someone from the Equinox team please apply this patch to fix the source generation for the equinox.serverside.sdk feature?  My Equinox commit rights are still broken.
Comment 23 Thomas Watson CLA 2011-11-14 14:12:06 EST
(In reply to comment #22)
> Created attachment 206957 [details]
> patch for equinox.serverside.sdk
> 
> Can someone from the Equinox team please apply this patch to fix the source
> generation for the equinox.serverside.sdk feature?  My Equinox commit rights
> are still broken.

Done in commit:

http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/commit/?id=4ee59e0cc3fd8cd0850ac767c14cbbee065ce304

I will also tag it for the build
Comment 24 Thomas Watson CLA 2011-11-15 05:19:05 EST
I think my commit broke the nightly build and Kim fixed for the I-Build.
Comment 25 Kim Moir CLA 2011-11-15 09:31:32 EST
Actually, it was my commit that broke the build :-)  I reverted it for the nightly and integration build.
Comment 26 Dani Megert CLA 2011-11-15 10:24:38 EST
We have broken Javadoc generation:

../org.eclipse.equinox.http.jetty_3.0.0/src/org/eclipse/equinox/http/jetty/internal/HttpServerManager.java:21: cannot access org.eclipse.jetty.server.Connector
bad class file: ../org.eclipse.jetty.server_8.0.4.v20111024.jar(org/eclipse/jetty/server/Connector.class)
class file has wrong version 50.0, should be 49.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
import org.eclipse.jetty.server.Connector;
                                ^
1 error


And CHKPII failures:

eclipse/plugins/com.sun.el.source_2.2.0.v201108011116_jar/com/sun/el/
  Messages.properties                        JAVA2-PRB   918   Found 1 single quote in text handled by Java MessageFormat class. Double this quote.  Line: 55
                                                         929   (W) Duplicate string ID found: error.property.notfound.  Lines: 68, 85          
                                                         918   Found 1 single quote in text handled by Java MessageFormat class. Double this quote.  Line: 87
                                                         918   Found 1 single quote in text handled by Java MessageFormat class. Double this quote.  Line: 88

eclipse/plugins/org.apache.jasper.glassfish.source_2.2.2.v201108011116_jar/org/apache/jasper/resources/
  messages.properties                        JAVA2-PRB   929   (W) Duplicate string ID found: jsp.error.page.invalid.buffer.  Lines: 97, 103   
                                                         929   (W) Duplicate string ID found: jsp.error.xml.invalidHighSurrogate.  Lines: 415, 429
                                                         914   Separator between string ID and text should be '='.  May be invalid text continuation.  Line: 469
                                                         914   Separator between string ID and text should be '='.  May be invalid text continuation.  Line: 470

eclipse/plugins/org.apache.jasper.glassfish_2.2.2.v201108011116_jar/org/apache/jasper/resources/
  messages.properties                                 JAVA2-PRB   929   (W) Duplicate string ID found: jsp.error.page.invalid.buffer.  Lines: 97, 103   
                                                                  929   (W) Duplicate string ID found: jsp.error.xml.invalidHighSurrogate.  Lines: 415, 429
                                                                  914   Separator between string ID and text should be '='.  May be invalid text continuation.  Line: 469
                                                                  914   Separator between string ID and text should be '='.  May be invalid text continuation.  Line: 470

eclipse/plugins/com.sun.el_2.2.0.v201108011116_jar/com/sun/el/
  Messages.properties                                 JAVA2-PRB   918   Found 1 single quote in text handled by Java MessageFormat class. Double this quote.  Line: 55
                                                                  929   (W) Duplicate string ID found: error.property.notfound.  Lines: 68, 85          
                                                                  918   Found 1 single quote in text handled by Java MessageFormat class. Double this quote.  Line: 87
                                                                  918   Found 1 single quote in text handled by Java MessageFormat class. Double this quote.  Line: 88



Are they related?
Comment 27 Kim Moir CLA 2011-11-15 10:28:24 EST
I just fixed the chkpii errors.  

Not sure how to fix the javadoc generation.
Comment 28 Thomas Watson CLA 2011-11-16 11:11:56 EST
(In reply to comment #26)
> We have broken Javadoc generation:
> 
> ../org.eclipse.equinox.http.jetty_3.0.0/src/org/eclipse/equinox/http/jetty/internal/HttpServerManager.java:21:
> cannot access org.eclipse.jetty.server.Connector
> bad class file:
> ../org.eclipse.jetty.server_8.0.4.v20111024.jar(org/eclipse/jetty/server/Connector.class)
> class file has wrong version 50.0, should be 49.0
> Please remove or make sure it appears in the correct subdirectory of the
> classpath.
> import org.eclipse.jetty.server.Connector;
>                                 ^
> 1 error
> 

I think this is because the jetty bundles are compiled for Java 6 and require Java 6.
Comment 29 John Arthorne CLA 2011-11-17 16:16:11 EST
*** Bug 363917 has been marked as a duplicate of this bug. ***
Comment 30 Kim Moir CLA 2011-11-17 16:16:34 EST
Thanks, Tom, I fixed this and ran a successful test build this morning to verify that the javadoc is fixed.
Comment 31 David Williams CLA 2011-11-17 17:41:43 EST
This is probably well understood and obvious to others ... but, since I am just now connecting the dots, thought I'd ask to be sure. It sounds like Java 6 then will be the "minimum JRE" to run the IDE ... at least, that is, to have Help work? Anything else effected? I guess "infocenters" such as at eclipse.org will need to use Java 6 (if they use 3.8 or 4.2 based distributions). (I am pretty sure eclipse.org already does use 1.6 ... just asking, so I'll know for sure). If this is a "new requirement" (effectively raising minimum JRE from 1.5 to 1.6) I guess should be widely announced (but, I can't imagine anyone would care ... as long only effects "help server functions"). Thanks in advance for clarifying.
Comment 32 Dani Megert CLA 2011-11-18 03:34:02 EST
(In reply to comment #31)
> This is probably well understood and obvious to others ... but, since I am just
> now connecting the dots, thought I'd ask to be sure. It sounds like Java 6 then
> will be the "minimum JRE" to run the IDE ... at least, that is, to have Help
> work? Anything else effected? I guess "infocenters" such as at eclipse.org will
> need to use Java 6 (if they use 3.8 or 4.2 based distributions). (I am pretty
> sure eclipse.org already does use 1.6 ... just asking, so I'll know for sure).
> If this is a "new requirement" (effectively raising minimum JRE from 1.5 to
> 1.6) I guess should be widely announced (but, I can't imagine anyone would care
> ... as long only effects "help server functions"). Thanks in advance for
> clarifying.

Good catch! Actually, we currently claim that 'help' runs on 1.4:
http://www.eclipse.org/projects/project-plan.php?projectid=eclipse#appendix
Comment 33 John Arthorne CLA 2011-11-18 08:45:32 EST
(In reply to comment #31)
> This is probably well understood and obvious to others ... but, since I am just
> now connecting the dots, thought I'd ask to be sure. It sounds like Java 6 then
> will be the "minimum JRE" to run the IDE ...

Yes. RCP is not affected, but the jetty we are including in the platform requires Java 6. This doesn't necessarily mean you need Java 6 to run a help infocenter though. Our help web application itself can still be run on an older jetty version (like the one it ran last milestone), and there are potentially other ways to run the help system on different jetty versions. See bug 361022 for more discussion.

It's also worth noting, our reference platforms have been purely Java 6 and above since Indigo, so there is no official change there. I will re-run my tool during the next plan update to ensure the plan appendix is updated with the latest EE information.
Comment 34 Kim Moir CLA 2011-11-25 17:35:11 EST
I think the remaining issue on this bug is that the serverside.sdk is missing some of it's source bundles.  We tried this here but it broke the build.  Investigating.

http://git.eclipse.org/c/equinox/rt.equinox.bundles.git/commit/?id=4ee59e0cc3fd8cd0850ac767c14cbbee065ce304
Comment 35 Kim Moir CLA 2011-12-02 16:43:23 EST
Closing bug.  Opened bug 365492 for remaining source bundle issues.
Comment 36 Kim Moir CLA 2011-12-06 14:16:05 EST
Created attachment 208017 [details]
patch to fix equinox build page
Comment 37 Holger Voormann CLA 2019-11-01 03:41:34 EDT
*** Bug 356887 has been marked as a duplicate of this bug. ***