2016-04-20 81 views
1

我的代碼是從服務器jsp訪問另一個客戶端計算機上的jsp,這是客戶端計算機和服務器之間的完美通信,在我的辦公網絡中沒有任何問題。但是,當我的服務器jsp在外部辦公室(另一個網絡)和客戶端網關中的同一代碼時,服務器日誌中出現連接超時異常。 當我通過ajax調用連接到客戶端機器時,我能夠得到響應表單客戶端。我的代碼如下。可以澄清一些問題?在服務器JSP訪問使用URLConnection時連接超時

Java代碼:在服務器JSP

URL jspUrl = new URL("...../Test.jsp"); 
    URLConnection servletConnection = jspUrl.openConnection(); 
    servletConnection.setDoOutput(true); 
    servletConnection.setDoInput(true); 
    servletConnection.setUseCaches(true); 
    servletConnection.setDefaultUseCaches(true); 
    servletConnection.setRequestProperty("Content-Type", "application/x-java-serialized-object"); 
    OutputStream outputStream = servletConnection.getOutputStream(); 
    ObjectOutputStream outputToServlet = new ObjectOutputStream(outputStream); 
    outputToServlet.writeObject(object); 
    outputToServlet.flush(); 

    InputStream inputStream = servletConnection.getInputStream(); 
    ObjectInputStream outputFromServlet = new ObjectInputStream(inputStream); 
    readObject = outputFromServlet.readObject(); 
    outputFromServlet.close(); 
    outputToServlet.close(); 

AJAX代碼工作:

所有的
 function callAjax 
     { 
      if(window.XMLHttpRequest) 
      { 
       reqObj=new XMLHttpRequest(); 
      } 
      else 
      { 
       reqObj=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      reqObj.onreadystatechange=processfunction; 
      reqObj.open("POST","./jspName.jsp?"+Id,false); 
      reqObj.send(null); 
     } 
    function processfunction() 
    { 
     try 
     { 
      if(reqObj.readyState==4) 
      { 
       if(reqObj.status == 200) 
       { 
        var responseString = reqObj.responseText; 

       } 
      } 
     } 
     catch(e) 
     { 
      //alert(e); 
     } 

    } 
+0

的可能的複製[連接超時而訪問使用的URLConnection JSP(https://stackoverflow.com/questions/36723057/connection-time-out-while-accessing -jsp-使用-的URLConnection) – devpuh

回答

0

首先,請確保您連接到互聯網。然後改變連接時間爲零,即infinte:

servletConnection.setConnectTimeout(0); 

//Set read time out to zero if required 
servletConnection.setReadTimeout(0);