IMHO trying to use Tomcat 7 Jasper/EL implementations with Jetty 6 is
not worth the effort, if it will ever work.

I mean, Jetty 6 implements Servlet 2.5/JSP 2.1/EL 2.1, which are the same 
specification versions implemented by Tomcat 6.
Tomcat 7, instead, implements Servlet 3.0/JSP 2.2/EL 2.2 specification 
versions, although it supports older versions, of course.
If the Tomcat 7 EL implementation requires an upgrade of the EL and Servlet API 
jars to properly work (as I experienced when I tried to just fix the symlinks), 
I'm really sceptical that this can be done without causing problems like 
multiple conflicting versions of the same JARs in classpath or other side 
effects on Jetty 6 standard operations. Maybe the new APIs and corresponding 
Tomcat implementations are perfectly backward-compatible, but setting this up 
properly could be not so easy (you're actually changing the core API JARs of 
the servlet container).

Going back to the original problem of the conflicting dependencies, I was 
wondering if it really is a "problem". I mean, just like you say that Tomcat 7 
in Ubuntu can't be installed together with Tomcat 6, why not say that even 
Jetty 6 can't be installed together with Tomcat 7? We're talking about a 
servlet container which is EOL since Nov 2010 (see: 
https://wiki.eclipse.org/Jetty/Starting/Jetty_Version_Comparison_Table), so you 
may either:
1) remove it from recent Ubuntu/Debian official repositories
2) or just keep the old dependency and force the user to alternatively have 
just Jetty 6 or any other library that depends on a newer Tomcat version

After all, I think that if one needs to use Jetty 6 on a recent Ubuntu
(like me), it's because he needs to set up a dedicated system to run a
very old application that is not worth to update to run on a newer
version of Jetty (or any other recent version of another servlet
container, like Tomcat). In such a scenario, having the ability to run
much newer packaged software on the same system is most probably
useless.

The third solution might be to change the dependency against
libtomcat6-java to optional: after all, Jetty can run even without JSP
and EL support. The user then may choose to either a) leave these
features disabled, or b) to install libtomcat6-java to enable them or c)
to manually provide the required Jasper/EL JARs by himself for the same
purpose, if he needs to keep the conflicting libtomcat7-java package
installed instead.

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to jetty in Ubuntu.
https://bugs.launchpad.net/bugs/1508562

Title:
  Broken symlinks for JSP support in libjetty-extra-java version
  6.1.26-1ubuntu1.1

Status in jetty package in Ubuntu:
  Confirmed
Status in jetty package in Debian:
  Unknown

Bug description:
  Version 6.1.26-1ubuntu1.1 of libjetty-extra-java has changed the
  dependency for Jasper (to enable JSP support) from libtomcat6-java
  package to libtomcat7-java.

  The Jasper JAR files provided by libtomcat7-java have different names:
  tomcat-jasper.jar instead of jasper.jar
  tomcat-jasper-el.jar instead of jasper-el.jar

  However the symlinks provided by the libjetty-extra-java in
  /usr/share/jetty/lib/jsp-2.1 folder have not been updated, as they
  still point to /usr/share/java/jasper.jar and /usr/share/java/jasper-
  el.jar: hence, the symlinks are broken and Jetty starts without JSP
  support (even if the libjetty-extra-java package is installed).

  Changing the symlinks to point to the updated file names bring to
  NoClassDefFoundExceptions, probably because of different dependencies
  of Tomcat 7 Jasper libraries:

  [main] WARN org.mortbay.log - failed ContextHandlerCollection@37403a09: 
java.lang.NoClassDefFoundError: org/apache/tomcat/PeriodicEventListener
  [main] INFO org.mortbay.log - Opened /var/log/jetty/2015_10_21.request.log
  [main] WARN org.mortbay.log - failed HandlerCollection@4c3db835: 
java.lang.NoClassDefFoundError: org/apache/tomcat/PeriodicEventListener
  [main] ERROR org.mortbay.log - Error starting handlers
  java.lang.NoClassDefFoundError: org/apache/tomcat/PeriodicEventListener
          at java.lang.ClassLoader.defineClass1(Native Method)
          at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
          at 
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
          at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
          at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
          at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
          at java.security.AccessController.doPrivileged(Native Method)
          at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
          at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
          at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
          at 
org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:401)
          at 
org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:363)
          at org.mortbay.util.Loader.loadClass(Loader.java:91)
          at org.mortbay.util.Loader.loadClass(Loader.java:71)
          at 
org.mortbay.jetty.webapp.WebXmlConfiguration.initServlet(WebXmlConfiguration.java:510)
          at 
org.mortbay.jetty.webapp.WebXmlConfiguration.initWebXmlElement(WebXmlConfiguration.java:335)
          at 
org.mortbay.jetty.webapp.WebXmlConfiguration.initialize(WebXmlConfiguration.java:289)
          at 
org.mortbay.jetty.webapp.WebXmlConfiguration.configure(WebXmlConfiguration.java:222)
          at 
org.mortbay.jetty.webapp.WebXmlConfiguration.configureDefaults(WebXmlConfiguration.java:162)
          at 
org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1262)
          at 
org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:519)
          at 
org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
          at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
          at 
org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
          at 
org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
          at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
          at 
org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
          at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
          at 
org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
          at org.mortbay.jetty.Server.doStart(Server.java:224)
          at 
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
          at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:985)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:622)
          at org.mortbay.start.Main.invokeMain(Main.java:194)
          at org.mortbay.start.Main.start(Main.java:534)
          at org.mortbay.jetty.start.daemon.Bootstrap.start(Bootstrap.java:30)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:622)
          at 
org.apache.commons.daemon.support.DaemonLoader.start(DaemonLoader.java:243)
  Caused by: java.lang.ClassNotFoundException: 
org.apache.tomcat.PeriodicEventListener
          at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
          at java.security.AccessController.doPrivileged(Native Method)
          at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
          at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
   
  Please note that WebXmlConfiguration.java:510 is exactly the line in which 
the class for JSP support is loaded.
  I'll try to see if I can make this work with Tomcat 7 Jasper, but I was 
wondering why the dependency has been upgraded from libtomcat6-java to 
libtomcat7-java.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/jetty/+bug/1508562/+subscriptions

-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : desktop-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to