Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jetty、DefaultServlet、BlockingCallback和TimeoutException问题_Java_Jetty_Servlet 3.0_Continuation - Fatal编程技术网

Java Jetty、DefaultServlet、BlockingCallback和TimeoutException问题

Java Jetty、DefaultServlet、BlockingCallback和TimeoutException问题,java,jetty,servlet-3.0,continuation,Java,Jetty,Servlet 3.0,Continuation,我正在运行一个由Jetty 9.1.0.RC1(独立发行版)支持的在线应用程序 在提供静态内容(.js、.css、.png文件等)时,我的日志文件被以下随机出现的问题填满: 这同样适用于以下资源: 2013-11-26 15:09:01.219:WARN:oejs.ServletHandler:qtp1207851091-629: /Resources/Audio/IncomingMessage.wav 2013-11-25 03:02:44.904:WARN:oejs.ServletHand

我正在运行一个由Jetty 9.1.0.RC1(独立发行版)支持的在线应用程序

在提供静态内容(.js、.css、.png文件等)时,我的日志文件被以下随机出现的问题填满:

这同样适用于以下资源:

2013-11-26 15:09:01.219:WARN:oejs.ServletHandler:qtp1207851091-629: /Resources/Audio/IncomingMessage.wav

2013-11-25 03:02:44.904:WARN:oejs.ServletHandler:qtp1207851091-408: /Resources/Website/Users/f3c68328-d739-4680-8144-a0db598dff6b/1384157586003.png
我正在使用Servlet3.0。有两个DefaultServlet实例,一个来自webdefault.xml,另一个来自web.xml,用于提供用户图像(未与.war文件捆绑)

前一个DefaultServlet的配置没有修改,后一个如下:

<servlet>
    <servlet-name>DefaultImagesServlet</servlet-name>
    <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>
    <init-param>
        <param-name>resourceBase</param-name>
        <param-value>/echat/static/</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>DefaultImagesServlet</servlet-name>
    <url-pattern>/Resources/*</url-pattern>
</servlet-mapping>

DefaultImagesServlet
org.eclipse.jetty.servlet.DefaultServlet
资源库
/echat/静态/
DefaultImagesServlet
/资源/*
我已经花了三天的时间想弄明白这件事,但我还是被卡住了。我没有在应用程序的任何地方明确使用Continuation

该问题仅在码头(重新)启动后几天发生

有什么线索可以找到答案吗?看来我已经用尽了所有可能的选择

亲切问候,


Michael Zyskowski

第二个DefaultServlet应该还有一个init参数


DefaultImagesServlet
org.eclipse.jetty.servlet.DefaultServlet
资源库
/echat/静态/
仅路径信息
真的
DefaultImagesServlet
/资源/*
您看到的空闲超时来自活动(未关闭)连接,其中在一段时间内没有任何事情发生

此外,您还应该捕获HTTP流量,与返回的内容相比,发出的请求可能有问题。了解请求/响应头是
HTTP/1.0
keep-alive
状态,还是
HTTP/1.1
和坏
连接
状态尤为重要

另一件事是在测试时在调试级别启用以下日志记录(如果在Jetty本身中使用回退StdErrLog日志记录)

这将显示所请求的资源与试图在磁盘上找到的资源

示例:假设问题中的DefaultImagesServlet的原始配置

/Resources/scripts/main.js
的请求将在文件系统中查找文件
/echat/static/Resources/scripts/main.js
。此行为与映射到路径规范
“/”
的servlet规范
“default”
(命名)servlet行为的特殊要求一致

使用
pathInfoOnly
设置,对
/Resources/scripts/main.js
的请求将从文件系统
/echat/static/scripts/main.js
中提取,这与普通servlet的行为更为一致

<servlet>
    <servlet-name>DefaultImagesServlet</servlet-name>
    <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>
    <init-param>
        <param-name>resourceBase</param-name>
        <param-value>/echat/static/</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>DefaultImagesServlet</servlet-name>
    <url-pattern>/Resources/*</url-pattern>
</servlet-mapping>
System.setProperty("org.eclipse.jetty.servlet.LEVEL","DEBUG");