如何在java11中使用jetty驱动程序解决HTTP:503服务不可用错误?

如何在java11中使用jetty驱动程序解决HTTP:503服务不可用错误?,jetty,java-11,maven-jetty-plugin,Jetty,Java 11,Maven Jetty Plugin,我需要使用java 11的jetty驱动程序启动本地服务器。 我可以启动服务器并使用Java8访问它,但是使用Java11,当我使用curl命令检查服务器是否可访问时,它返回以下结果: $ curl http://localhost:8080//sample/site/URL/info <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <ti

我需要使用java 11的jetty驱动程序启动本地服务器。 我可以启动服务器并使用Java8访问它,但是使用Java11,当我使用curl命令检查服务器是否可访问时,它返回以下结果:

$ curl http://localhost:8080//sample/site/URL/info
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 503 Service Unavailable</title>
</head>
<body><h2>HTTP ERROR 503</h2>
<p>Problem accessing /sample/site/URL/info. Reason:
<pre>    Service Unavailable</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.20.v20190813</a><hr/>

</body>
</html>
如您所见,我使用的是Jetty 9.4.20.v20190813版本jars。
除了jetty,你知道我还应该研究什么吗?

jetty版本

如您所见,我使用的是Jetty
9.4.20.v20190813
版本jars。除了jetty,你知道我还应该做些什么吗

事实上,你的stacktrace不是这么说的

java.io.IOException: Server returned HTTP response code: 503 for URL: http://localhost:8080/idp/idpservice/register
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894) ~[na:1.8.0_192]
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492) ~[na:1.8.0_192]
码头9.2.x为EOL(寿命终止)

见:

对Java11的支持直到Jetty9.4.8才开始

503根据您的Stacktrace确定的原因

stacktrace中的状态代码503来自
HttpURLConnection
,而不是Jetty

http://localhost:8080//sample/site/URL/info
URL不匹配

stacktrace和原始问题使用不同的URL

原始问题

堆栈跟踪

码头如何响应503

只有少数几个地方Jetty本身会以状态代码503(服务不可用)进行响应。(所有其他状态代码503响应来自应用程序及其自己的库,而不是Jetty)

  • 部署失败-如果您的webapp未能部署,它将在服务器端、服务器启动期间或webapp部署期间生成日志,说明部署失败的原因。这些失败的Web应用程序由503响应
  • 服务器正常关闭-当服务器被告知关闭时,在正常关闭启动和实际关闭服务器之间的狭窄时间窗口内到达的所有请求都会得到503的响应
  • DoSFilter-如果使用拒绝服务预防筛选器,超过配置的MaxRequestsMs的请求将以状态代码503响应
  • 扩展
    org.eclipse.jetty.servlets.DataRateLimitedServlet
    的应用程序servlet将以状态代码503响应目录请求(以
    /
    结尾的请求)。(Jetty本身没有Servlet或过滤器使用此Servlet)
  • 如果应用程序在处理请求时抛出
    javax.servlet.UnavailableException
  • 这就是码头本身的503个起源


    503最常见的原因是webapp部署错误,只有服务器端的日志(在部署webapp期间)有助于发现此状态及其原因。

    使用正确的URL<代码>http://localhost:8080/sample/site/URL/info(修复双
    /
    )我们需要更多信息。服务器启动日志?503通常是一个提示,表示有东西存在,但没有开始。Jetty 9.4.x适用于从8.0到Java14的所有Java版本。每个提交都是跨Java8、Java11和Java13构建和测试的。我发现服务器没有正确启动。我看到以下错误,关于其中一个文件,
    无法解析字符串值“file:${tss.data}/idp/resources/conf/internal.xml”中的占位符“tss.data”
    知道是什么导致了这个错误吗?知道了。项目试图在加载值之前访问
    tss.data
    的值。然而,我仍然面临同样的HTTP:503错误问题。在将代码从java 8迁移到java 11平台时,我已经用java 11兼容的版本更新了所有包。
    java.io.IOException: Server returned HTTP response code: 503 for URL: http://localhost:8080/idp/idpservice/register
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894) ~[na:1.8.0_192]
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492) ~[na:1.8.0_192]
    
    http://localhost:8080//sample/site/URL/info
    
    http://localhost:8080/idp/idpservice/register