java.net.SocketException: Unexpected end of file from server 異常解決__.net

來源:互聯網
上載者:User

公司業務需要,需要另外一個相似版本的web應用,項目部署的時候工程檔案都是一樣的(只是配置不一樣),部署到新的地方時,比如tomcat伺服器的時候,報了如下錯誤:

java.net.SocketException: Unexpected end of file from serverat sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:806)at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:665)at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:803)at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:665)at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1230)................at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)at java.lang.Thread.run(Thread.java:761)

為瞭解決該問題,折騰了好幾個小時,總感覺是工程之間互訪出了問題,由於整個工程有六七個工程,工程之間存在互訪,查看後台日誌確實是互訪的問題。一開始還以為是工程代碼問題,六七個工程部署在同一台機器的3個tomcat中,項目互訪直接走內網即可。但是拋出上面錯誤,一下子懵了,外網訪問都可以,為啥內網之間互訪卻不行了呢。

為瞭解決這個問題,重新檢查了下配置,沒有錯,最終發現是因為tomcat環境配置的問題,之前部署走的是http協議,現在部署的tomcat是https協議,tomcat裡的http和https協議有不一樣的連接埠,

如下,我的tomcat https連接埠是8083

<Connector port="8083" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"      maxThreads="150" scheme="https" secure="true"      clientAuth="false" sslProtocol="TLS"      keystoreFile="/u01/ssl/server.jks" keystorePass="password"      truststoreFile="/u01/ssl/server.jks" truststorePass="password" />

http連接埠是8030

<Connector port="8030" protocol="HTTP/1.1"                connectionTimeout="20000"                redirectPort="8443" />

一定要注意這個問題,然後在工程的web.xml檔案中加入https的支援

<security-constraint>    <web-resource-collection>      <web-resource-name>SSL</web-resource-name>      <url-pattern>/*</url-pattern>    </web-resource-collection>    <user-data-constraint>      <transport-guarantee>CONFIDENTIAL</transport-guarantee>    </user-data-constraint>  </security-constraint>

如果存在通過擷取資料庫表中的地址來動態訪問工程的話,使用https://ip:port這種方式,在我測試的時候會報連線逾時的問題。

最終改用了https://localhost:port的訪問方式成功把工程代碼跑起來了。記錄下心得,方便遇到同樣問題的碼農,提供一種解決方案或思路。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.