[
https://issues.apache.org/jira/browse/FELIX-4282?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13818257#comment-13818257
]
Wolfgang Glas edited comment on FELIX-4282 at 11/9/13 8:03 PM:
---------------------------------------------------------------
OK, I think, I've found the smoking gun. I unpacked both,
org.apache.felix.http.bundle-2.2.1.jar and
org.apache.felix.http.jetty-2.2.1.jar and discovered,that the
QuotedStringTokenizer classes differ in both bundles.
So, this seems to be a packaging problem of org.apache.felix.http.bundle. In my
case, I really had the problem with org.apache.felix.http.bundle and not with
org.apache.felix.http.jetty.
-------------------- felix.http.jetty --------------------
wglas@wheezy-amd64:~/tmp/org.apache.felix.http.jetty-2.2.1/org/eclipse/jetty/util$
javap QuotedStringTokenizer.class
Compiled from "QuotedStringTokenizer.java"
public class org.eclipse.jetty.util.QuotedStringTokenizer extends
java.util.StringTokenizer {
public org.eclipse.jetty.util.QuotedStringTokenizer(java.lang.String,
java.lang.String, boolean, boolean);
public org.eclipse.jetty.util.QuotedStringTokenizer(java.lang.String,
java.lang.String, boolean);
public org.eclipse.jetty.util.QuotedStringTokenizer(java.lang.String,
java.lang.String);
public org.eclipse.jetty.util.QuotedStringTokenizer(java.lang.String);
public boolean hasMoreTokens();
public java.lang.String nextToken() throws java.util.NoSuchElementException;
public java.lang.String nextToken(java.lang.String) throws
java.util.NoSuchElementException;
public boolean hasMoreElements();
public java.lang.Object nextElement() throws java.util.NoSuchElementException;
public int countTokens();
public static java.lang.String quoteIfNeeded(java.lang.String,
java.lang.String);
public static java.lang.String quote(java.lang.String);
public static void quote(java.lang.Appendable, java.lang.String);
public static boolean quoteIfNeeded(java.lang.Appendable, java.lang.String,
java.lang.String);
public static java.lang.String unquoteOnly(java.lang.String);
public static java.lang.String unquoteOnly(java.lang.String, boolean);
public static java.lang.String unquote(java.lang.String);
public static java.lang.String unquote(java.lang.String, boolean);
public boolean getDouble();
public void setDouble(boolean);
public boolean getSingle();
public void setSingle(boolean);
static {};
}
wglas@wheezy-amd64:~/tmp/org.apache.felix.http.jetty-2.2.1/org/eclipse/jetty/util$
md5sum QuotedStringTokenizer.class
1e73fc8a419d8ad696a9710f61bf788a QuotedStringTokenizer.class
wglas@wheezy-amd64:~/tmp/org.apache.felix.http.jetty-2.2.1/org/eclipse/jetty/util$
-------------------- end of felix.http.jetty --------------------
-------------------- felix.http.bundle --------------------
wglas@wheezy-amd64:~/tmp/org.apache.felix.http.bundle-2.2.1/org/eclipse/jetty/util$
javap QuotedStringTokenizer.class
Compiled from "QuotedStringTokenizer.java"
public class org.eclipse.jetty.util.QuotedStringTokenizer extends
java.util.StringTokenizer {
public org.eclipse.jetty.util.QuotedStringTokenizer(java.lang.String,
java.lang.String, boolean, boolean);
public org.eclipse.jetty.util.QuotedStringTokenizer(java.lang.String,
java.lang.String, boolean);
public org.eclipse.jetty.util.QuotedStringTokenizer(java.lang.String,
java.lang.String);
public org.eclipse.jetty.util.QuotedStringTokenizer(java.lang.String);
public boolean hasMoreTokens();
public java.lang.String nextToken() throws java.util.NoSuchElementException;
public java.lang.String nextToken(java.lang.String) throws
java.util.NoSuchElementException;
public boolean hasMoreElements();
public java.lang.Object nextElement() throws java.util.NoSuchElementException;
public int countTokens();
public static java.lang.String quoteIfNeeded(java.lang.String,
java.lang.String);
public static java.lang.String quote(java.lang.String);
public static void quote(java.lang.Appendable, java.lang.String);
public static boolean quoteIfNeeded(java.lang.Appendable, java.lang.String,
java.lang.String);
public static java.lang.String unquote(java.lang.String);
public boolean getDouble();
public void setDouble(boolean);
public boolean getSingle();
public void setSingle(boolean);
static {};
}
wglas@wheezy-amd64:~/tmp/org.apache.felix.http.bundle-2.2.1/org/eclipse/jetty/util$
md5sum QuotedStringTokenizer.class
bb539da5cafc8648f1e33a083f3182e5 QuotedStringTokenizer.class
wglas@wheezy-amd64:~/tmp/org.apache.felix.http.bundle-2.2.1/org/eclipse/jetty/util$
-------------------- end of felix.http.bundle --------------------
was (Author: [email protected]):
OK, I think, I've found the smoking gun. I unpacked both,
org.apache.felix.http.bundle-2.2.1.jar and
org.apache.felix.http.jetty-2.2.1.jar and discovered,that the
QuotedStringTokenizer classes differ in both bundles.
So, this seems to be a packaging problem of org.apache.felix.http.bundle. In my
case, I really had the problem with org.apache.felix.http.bundle and not with
org.apache.felix.http.jetty.
***************** felix.http.jetty ******************
wglas@wheezy-amd64:~/tmp/org.apache.felix.http.jetty-2.2.1/org/eclipse/jetty/util$
javap QuotedStringTokenizer.class
Compiled from "QuotedStringTokenizer.java"
public class org.eclipse.jetty.util.QuotedStringTokenizer extends
java.util.StringTokenizer {
public org.eclipse.jetty.util.QuotedStringTokenizer(java.lang.String,
java.lang.String, boolean, boolean);
public org.eclipse.jetty.util.QuotedStringTokenizer(java.lang.String,
java.lang.String, boolean);
public org.eclipse.jetty.util.QuotedStringTokenizer(java.lang.String,
java.lang.String);
public org.eclipse.jetty.util.QuotedStringTokenizer(java.lang.String);
public boolean hasMoreTokens();
public java.lang.String nextToken() throws java.util.NoSuchElementException;
public java.lang.String nextToken(java.lang.String) throws
java.util.NoSuchElementException;
public boolean hasMoreElements();
public java.lang.Object nextElement() throws java.util.NoSuchElementException;
public int countTokens();
public static java.lang.String quoteIfNeeded(java.lang.String,
java.lang.String);
public static java.lang.String quote(java.lang.String);
public static void quote(java.lang.Appendable, java.lang.String);
public static boolean quoteIfNeeded(java.lang.Appendable, java.lang.String,
java.lang.String);
public static java.lang.String unquoteOnly(java.lang.String);
public static java.lang.String unquoteOnly(java.lang.String, boolean);
public static java.lang.String unquote(java.lang.String);
public static java.lang.String unquote(java.lang.String, boolean);
public boolean getDouble();
public void setDouble(boolean);
public boolean getSingle();
public void setSingle(boolean);
static {};
}
wglas@wheezy-amd64:~/tmp/org.apache.felix.http.jetty-2.2.1/org/eclipse/jetty/util$
md5sum QuotedStringTokenizer.class
1e73fc8a419d8ad696a9710f61bf788a QuotedStringTokenizer.class
wglas@wheezy-amd64:~/tmp/org.apache.felix.http.jetty-2.2.1/org/eclipse/jetty/util$
***************** end of felix.http.jetty ******************
***************** felix.http.bundle ******************
wglas@wheezy-amd64:~/tmp/org.apache.felix.http.bundle-2.2.1/org/eclipse/jetty/util$
javap QuotedStringTokenizer.class
Compiled from "QuotedStringTokenizer.java"
public class org.eclipse.jetty.util.QuotedStringTokenizer extends
java.util.StringTokenizer {
public org.eclipse.jetty.util.QuotedStringTokenizer(java.lang.String,
java.lang.String, boolean, boolean);
public org.eclipse.jetty.util.QuotedStringTokenizer(java.lang.String,
java.lang.String, boolean);
public org.eclipse.jetty.util.QuotedStringTokenizer(java.lang.String,
java.lang.String);
public org.eclipse.jetty.util.QuotedStringTokenizer(java.lang.String);
public boolean hasMoreTokens();
public java.lang.String nextToken() throws java.util.NoSuchElementException;
public java.lang.String nextToken(java.lang.String) throws
java.util.NoSuchElementException;
public boolean hasMoreElements();
public java.lang.Object nextElement() throws java.util.NoSuchElementException;
public int countTokens();
public static java.lang.String quoteIfNeeded(java.lang.String,
java.lang.String);
public static java.lang.String quote(java.lang.String);
public static void quote(java.lang.Appendable, java.lang.String);
public static boolean quoteIfNeeded(java.lang.Appendable, java.lang.String,
java.lang.String);
public static java.lang.String unquote(java.lang.String);
public boolean getDouble();
public void setDouble(boolean);
public boolean getSingle();
public void setSingle(boolean);
static {};
}
wglas@wheezy-amd64:~/tmp/org.apache.felix.http.bundle-2.2.1/org/eclipse/jetty/util$
md5sum QuotedStringTokenizer.class
bb539da5cafc8648f1e33a083f3182e5 QuotedStringTokenizer.class
wglas@wheezy-amd64:~/tmp/org.apache.felix.http.bundle-2.2.1/org/eclipse/jetty/util$
***************** end of felix.http.bundle ******************
> HTTP Bundle 2.2.1 has and incorrect embedded Jetty instance
> -----------------------------------------------------------
>
> Key: FELIX-4282
> URL: https://issues.apache.org/jira/browse/FELIX-4282
> Project: Felix
> Issue Type: Bug
> Components: HTTP Service
> Reporter: Bruce Jackson
>
> I've recently downloaded the latest version of the http bundle 2.2.1 which
> contains the update to Jetty 7. This seems to have a problem, perhaps
> because the Jetty version is a snapshot.
> java.lang.NoSuchMethodError:
> org.eclipse.jetty.util.QuotedStringTokenizer.unquoteOnly(Ljava/lang/String;
> )Ljava/lang/String;
> at
> org.eclipse.jetty.server.CookieCutter.parseFields(CookieCutter.java:284)
> at
> org.eclipse.jetty.server.CookieCutter.getCookies(CookieCutter.java:64)
> at org.eclipse.jetty.server.Request.getCookies(Request.java:499)
> at
> org.eclipse.jetty.server.session.SessionHandler.checkRequestedSessionId(Ses
> sionHandler.java:260)
> at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java
> :155)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java
> :978)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:13
> 5)
> at
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHan
> dlerCollection.java:255)
> at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:
> 116)
> at org.eclipse.jetty.server.Server.handle(Server.java:369)
> at
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpC
> onnection.java:486)
> at
> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttp
> Connection.java:933)
> at
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComple
> te(AbstractHttpConnection.java:995)
> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:630)
> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230)
> at
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.jav
> a:82)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint
> .java:606)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.
> java:46)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java
> :603)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:
> 538)
> at java.lang.Thread.run(Thread.java:724)
> If I build the bundle manually with the 7.4.16 Jetty-all, I don't see this
> problem.
> I'm using the released HTTP Bundle from the felix download site. If I
> manually remove the classes from the exploded jar and replace them with
> the contents of the latest release Jetty all build (which is
> jetty-all-server-7.6.13.v20130916) then I no longer see this problem.
> I suspect that the reason that we see this is that we are using Jetty 7
> continuations (looking at the stack trace, this seems to be an async
> operation) and so if you're not using them, you may never have encountered
> this problem.
--
This message was sent by Atlassian JIRA
(v6.1#6144)