java.net.SocketException: स्प्रिंग रेस्ट टेम्प्लेट में कनेक्शन रीसेट


9

मुझे यहां एक अजीब समस्या है।

नीचे दिया गया कोड तब तक ठीक काम कर रहा है जब तक कि मैं क्लाइंट साइड पर टॉमकैट सर्वर को पुनरारंभ नहीं करता। एक बार जब मैं एक ही कोड की नवीनतम युद्ध फ़ाइल के साथ टॉमकैट सर्वर (क्लाइंट प्रोग्राम वॉर फाइल में होता है) को पुनः आरंभ करता है, तो यह नीचे की त्रुटि को फेंकता है। मैं JDK 8 का उपयोग कर रहा हूं।

नीचे नमूना कोड है। ब्राउज़र से, मैं नीचे दिए गए प्रोग्राम में उपयोग किए गए URL से प्रतिक्रिया प्राप्त करने में सक्षम हूं। लेकिन जावा प्रोग्राम या पोस्टमैन का उपयोग करके डेटा प्राप्त करने में सक्षम नहीं है।

package com.example.demo;

import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

@Component
public class TestService implements CommandLineRunner{

    @Override
    public void run(String... args) throws Exception {
        download();
    }

    private void download() {
        System.out.println("Started download");
        try{
            RestTemplate restTemplate = new RestTemplate();
            String url = "https://www.nseindia.com/live_market/dynaContent/live_watch/stock_watch/niftyStockWatch.json";
            byte[] forObject = restTemplate.getForObject(url, byte [].class);
            System.out.println(forObject);
            System.out.println("Downloaded");
        }catch (Exception e) {
            System.out.println("Exception "+ e);
        }
    }

}

यहां उठाया गया अपवाद है:

org.springframework.web.client.ResourceAccessException: I/O error on GET request for "https://www.nseindia.com/live_market/dynaContent/live_watch/stock_watch/niftyStockWatch.json": Connection reset; nested exception is java.net.SocketException: Connection reset
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:751)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:677)
    at org.springframework.web.client.RestTemplate.getForEntity(RestTemplate.java:345)
    at com.sudhasoft.service.impl.StocksServiceImpl.getNiftyData(StocksServiceImpl.java:183)
    at com.sudhasoft.service.impl.StocksServiceImpl.getNifty500Data(StocksServiceImpl.java:154)
    at com.sudhasoft.service.impl.PatternServiceImpl.getDataBySignal(PatternServiceImpl.java:444)
    at com.sudhasoft.service.impl.PatternServiceImpl.loadDataOnInit(PatternServiceImpl.java:1090)
    at com.sudhasoft.service.CacheServiceImpl.initCache(CacheServiceImpl.java:29)
    at com.sudhasoft.scheduler.job.CacheJob.clearCache(CacheJob.java:41)
    at com.sudhasoft.scheduler.job.CacheJob.executeJob(CacheJob.java:25)
    at com.sudhasoft.scheduler.StockScheduler$1.run(StockScheduler.java:120)
Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(Unknown Source)
    at java.net.SocketInputStream.read(Unknown Source)
    at sun.security.ssl.InputRecord.readFully(Unknown Source)
    at sun.security.ssl.InputRecord.read(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
    at sun.security.ssl.AppInputStream.read(Unknown Source)
    at okio.Okio$2.read(Okio.java:139)
    at okio.AsyncTimeout$2.read(AsyncTimeout.java:237)
    at okio.RealBufferedSource.indexOf(RealBufferedSource.java:345)
    at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:217)
    at okhttp3.internal.http1.Http1Codec.readHeaderLine(Http1Codec.java:212)
    at okhttp3.internal.http1.Http1Codec.readResponseHeaders(Http1Codec.java:189)
    at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.java:88)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:45)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
    at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
    at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:125)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
    at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
    at okhttp3.RealCall.execute(RealCall.java:77)
    at org.springframework.http.client.OkHttp3ClientHttpRequest.executeInternal(OkHttp3ClientHttpRequest.java:73)
    at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48)
    at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:53)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:742)
    ... 10 common frames omitted

2
बशर्ते हम उपेक्षा कर सके कि यह समस्या उत्पन्न हुई ही सर्वर पुनरारंभ करने के बाद (या ग्राहक?), इस का डुप्लिकेट होगा stackoverflow.com/questions/5507878/ssl-connection-reset या इसी तरह stackoverflow.com/questions/37005352/... , यानी क्लाइंट और सर्वर असंगत SSL सेटअप का उपयोग करते हैं ...
पेट्र बोड्नार

लगता है कि आपका वास्तविक कोड यहां दिए गए नमूना कोड से अलग है। वास्तविक कोड को देखे बिना मूल कारण का पता लगाना संभव नहीं है।
दीनूशांट

क्या आपने SSL सत्यापन को
रोकने की

क्या आप अपनी POM.XML फ़ाइल
वरुण जैन

जवाबों:


0

यह एक फ़ायरवॉल समस्या के कारण लगता है ।

इस समस्या को हल करने के लिए, आपको प्रॉक्सी सर्वर का उपयोग करना होगा। आप कोड की 2 लाइनों का उपयोग करके प्रॉक्सी सर्वर और पोर्ट जोड़ सकते हैं:

System.setProperty("proxyHost", "proxyServer.proxy.com");
System.setProperty("proxyPort", "9801");

यह काम नहीं किया।
सुधाकर

-1

सबसे सरल उत्तर यह है कि जब आप टॉमकेट को पुनः आरंभ करते हैं तो बस आप सॉकेट बंद कर देते हैं और फिर आप बंद सॉकेट में अधिक डेटा भेजने का प्रयास करते हैं। यही कारण है कि आप IO अपवाद प्राप्त करते हैं क्योंकि आप डेटा नहीं लिख सकते

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.