2011-06-04 26 views
2

我正在使用一個servlet,它將字符串參數傳遞給另一個遠程系統中的另一個Servlet,以從該遠程servlet獲取xml響應。java.net.SocketException:來自服務器的文件意外結束

這工作正常,當我試圖從我的本地PC連接到遠程Servlet。

但是,當我從另一臺服務器執行相同的操作時,出現錯誤java.net.SocketException: Unexpected end of file from server

錯誤:

2011-06-04 11:27:24,305 INFO [STDOUT] strURL in Inventry --> http://1**.1**.**.27:7777/GatewayServlet 
/Status?Str=Inventory&PARTNUM=200A104%27%2C%27200A112%27%2C%27200A114%27%2C%27200A113%27%2C%27200A117%27%2C%27200A120%27%2C%27240A503%27%2C%27200A132%27%2C%27200A128%27%2C%27200A124 
2011-06-04 11:28:06,243 ERROR [STDERR] java.net.SocketException: Unexpected end of file from server 
2011-06-04 11:28:06,243 ERROR [STDERR] at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source) 
2011-06-04 11:28:06,243 ERROR [STDERR] at sun.net.www.http.HttpClient.parseHTTP(Unknown Source) 
2011-06-04 11:28:06,243 ERROR [STDERR] at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source) 
2011-06-04 11:28:06,243 ERROR [STDERR] at sun.net.www.http.HttpClient.parseHTTP(Unknown Source) 
2011-06-04 11:28:06,243 ERROR [STDERR] at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) 
2011-06-04 11:28:06,243 ERROR [STDERR] at com.cim.web.servlet.DBGatewayServiceServlet.processRequest(DBGatewayServiceServlet.java:52) 
2011-06-04 11:28:06,243 ERROR [STDERR] at com.cim.web.servlet.DBGatewayServiceServlet.doGet(DBGatewayServiceServlet.java:113) 
2011-06-04 11:28:06,243 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 
2011-06-04 11:28:06,243 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
2011-06-04 11:28:06,243 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
2011-06-04 11:28:06,243 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
2011-06-04 11:28:06,243 ERROR [STDERR] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
2011-06-04 11:28:06,243 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
2011-06-04 11:28:06,243 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
2 011-06-04 11:28:06,243 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 
2011-06-04 11:28:06,243 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
2011-06-04 11:28:06,243 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) 
2011-06-04 11:28:06,243 ERROR [STDERR] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
2011-06-04 11:28:06,243 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
2011-06-04 11:28:06,243 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
2011-06-04 11:28:06,243 ERROR [STDERR] at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
2011-06-04 11:28:06,243 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
2011-06-04 11:28:06,243 ERROR [STDERR] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 
2011-06-04 11:28:06,243 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
2011-06-04 11:28:06,243 ERROR [STDERR] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
2011-06-04 11:28:06,243 ERROR [STDERR] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 
2011-06-04 11:28:06,243 ERROR [STDERR] at java.lang.Thread.run(Unknown Source) 

代碼在我的servlet(客戶端):

if(queryString.equals("Inventory")) { 

    String partNum = (String)session.getAttribute("PARTNUM"); 
    String locId = (String)session.getAttribute("locids"); 

    strURL = strURL+"/InventoryStatus?queryStr=Inventory&PARTNUM="+partNum; 

    URLConnection dbGatewayURL = new URL(strURL).openConnection(); 

    BufferedReader in = new BufferedReader(new InputStreamReader(dbGatewayURL.getInputStream()));//--This is line 52 Mentioned in Error above 

    StringBuffer responseData = new StringBuffer(); 
    String line=""; 

    while((line = in.readLine()) != null) { 
     responseData.append(line); 
    } 

    String result =responseData.toString(); 
    request.setAttribute("inventryStock",result); 

    RequestDispatcher rd=request.getRequestDispatcher ("inventryStatus.jsp?resp=Yes"); 
    rd.forward(request, response); 
} 

回答

1

代碼沒什麼問題,但事情是遠程服務器沒有聽我的服務器連接,因此我嘗試了相同的代碼,但在另一臺遠程服務器上,這次它的工作正常... 。!任何機構知道原因............?

+0

謝謝,需要將我的服務器添加到受信任的主機。雖然它是基於SOAP的調用,但由於我的服務器不在受信任的主機中,因此我得到了類似的跟蹤 – cpandey05 2016-12-14 11:24:20

1

嘗試等待()後立即 的URLConnection dbGatewayURL =新的URL(strURL).openConnection();

有可能程序移動到下一行之前,它能夠使連接

+0

好,沒有運氣..做出下面的變化,並得到了另一個例外: – Warrior 2011-06-04 09:55:25

2

嘗試遠程登錄到您的服務器的遠程servlet和看它是否連接正常。如果不是,那麼這是一個連接問題。

如果有,請嘗試使用TCP監視器來查看從您的服務器到具有該servlet的遠程服務器的HTTP流量。 http://ws.apache.org/commons/tcpmon/