Я получаю следующую ошибку в журналах Weblogic
ExecuteThread: '211' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1571480214205> <BEA-000337> <[STUCK] ExecuteThread: '98' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "60,042" seconds working on the request "Workmanager: default, Version: 0, Scheduled=false, Started=true, Started time: 60042310 ms
", which is more than the configured time (StuckThreadMaxTime) of "60,000" seconds in "server-failure-trigger". Stack trace:
sun.nio.ch.DevPollArrayWrapper.poll0(Native Method)
sun.nio.ch.DevPollArrayWrapper.poll(DevPollArrayWrapper.java:223)
sun.nio.ch.DevPollSelectorImpl.doSelect(DevPollSelectorImpl.java:84)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
weblogic.socket.NIOSocketMuxer$NIOInputStream.readInternal(NIOSocketMuxer.java:844)
weblogic.socket.NIOSocketMuxer$NIOInputStream.read(NIOSocketMuxer.java:788)
weblogic.socket.NIOSocketMuxer$NIOInputStream.read(NIOSocketMuxer.java:771)
java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
java.io.BufferedInputStream.read(BufferedInputStream.java:334)
weblogic.net.http.MessageHeader.isHTTP(MessageHeader.java:310)
weblogic.net.http.MessageHeader.parseHeader(MessageHeader.java:232)
weblogic.net.http.HttpClient.parseHTTP(HttpClient.java:549)
weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:639)
weblogic.net.http.SOAPHttpURLConnection.getInputStream(SOAPHttpURLConnection.java:37)
***com.infosys.ci.fioutbound.custom.SmsSenderDrc.sendSms(SmsSenderDrc.java:229)***
com.infosys.ci.fioutbound.custom.SmsSenderDrc.executeOutboundRequest(SmsSenderDrc.java:70)
com.infosys.ci.fiusb.app.AbstractOutboundServiceProvider.executeService(Unknown Source)
com.infosys.ci.fiusb.app.FIUsbServiceExecutor.executeService(Unknown Source)
Ошибка из файла JAR (SmsSenderDrc.sendSms), который отправляет запрос SOAP API в стороннюю систему. Этот файл jar вызывается из моего приложения каждую 1 минуту. Код в банке выглядит следующим образом -
public String sendSms(String reqXml, String messangerEngine)
{
String smsService = messangerEngine;
String outputString = "";
String responseString = "";
try
{
String soapAction = "http://www.testurl/SendSMS";
URL smsServiceUrl = new URL(smsService);
URLConnection conn = smsServiceUrl.openConnection();
HttpURLConnection httpconn = (HttpURLConnection)conn;
ByteArrayOutputStream bout = new ByteArrayOutputStream();
byte[] buffer = new byte[reqXml.length()];
buffer = reqXml.getBytes();
bout.write(buffer);
byte[] b = bout.toByteArray();
httpconn.setRequestProperty("Content-Length",
String.valueOf(b.length));
httpconn.setRequestProperty("Content-Type",
"text/xml;charset=utf-8");
httpconn.setRequestProperty(smsService, smsService);
httpconn.setRequestProperty("SOAPAction", soapAction);
httpconn.setRequestMethod("POST");
httpconn.setDoOutput(true);
httpconn.setDoOutput(true);
OutputStream out = httpconn.getOutputStream();
out.write(b);
InputStreamReader isr = new InputStreamReader( //line no 229
httpconn.getInputStream());
BufferedReader in = new BufferedReader(isr);
while ((responseString = in.readLine()) != null) {
outputString = outputString + responseString;
}
isr.close();
}
Как закрыть соединение или ввести тайм-аут, чтобы избежать зависания потоков.