如何解决java.net.SocketException:软件导致连接中止:连接?

时间:2018-12-05 05:33:41

标签: java spring-mvc tomcat jsch sms-gateway

我正在Spring MVC中创建一个系统,其中需要使用两个不同的网络。

网络一-192.168.13。*这是数据库的加载位置

第二个网络-192.168.16。*,这是连接SMS GATEWAY(Yeastar TG00)的位置。

要将程序连接到SMS GATEWAY,并不断获取存储在其中的消息,我正在使用SSH。下面是执行此操作的代码。

private String getSmsDump() {

    StringBuilder sb = new StringBuilder();

    try {

        String command = "sqlite3 /persistent/var/lib/asterisk/db/MyPBX.sqlite \".read /persistent/script/cwms/smsrecv_html.sqlc\"";
        String host = this.sshHost;
        String user = this.sshUser;
        String password = this.sshPassword;
        int port = this.sshPort;

        JSch jsch = new JSch();
        Session session = jsch.getSession(user, host, port);
        Properties config = new Properties();
        config.put("StrictHostKeyChecking", "no");
        session.setConfig(config);
        session.setPassword(password);
        session.connect();

        LOGGER.debug("Session Connected? : " + session.isConnected());

        Channel channel = session.openChannel("exec");
        ((ChannelExec) channel).setCommand(command);
        channel.setInputStream(null);
        ((ChannelExec) channel).setErrStream(System.err);

        InputStream input = channel.getInputStream();
        channel.connect();

        LOGGER.debug("Channel Connected to machine " + host + " server with command: " + command);

        try {
            LOGGER.debug("Input: " + input);
            InputStreamReader inputReader = new InputStreamReader(input);
            BufferedReader bufferedReader = new BufferedReader(inputReader);
            String line = null;
            LOGGER.debug("Buffered Reader Readline: " + bufferedReader.readLine());

            while ((line = bufferedReader.readLine()) != null) {

                sb.append(line);
            }

            //LOGGER.debug("Message Dump: " + sb.toString());
            bufferedReader.close();
            inputReader.close();

        } catch (IOException ex) {
            LOGGER.error(ex.getMessage());
        }

        channel.disconnect();
        session.disconnect();

    } catch (JSchException | IOException ex) {

        LOGGER.error(ex.getMessage());
    }

    return sb.toString();

} // end getSmsHtmlDump()

这正在tomcat 8.0.27中运行

我检查了连接,并说我已连接。

  

getSmsDump-会话已连接? :正确

我得到的错误是:

  

getSmsDump-Session.connect:java.net.SocketException:软件导致连接中止:recv失败

另一个人也遇到此错误,但我认为发生此错误是因为程序试图插入不可用的内容。

    bad SQL grammar  nested exception is java.sql.SQLException ORA-06550 line 4, column 9 PLS-00103 Encountered the symbol END when expecting one of the following

我尝试在server.xml中更改请求超时的时间,但没有任何改变。

这是我serverl.xml中的连接器

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="600000"
           redirectPort="8443" />

我还尝试删除所有防火墙,尝试使用另一台计算机。 我被困住了,自上周以来我一直在研究这个问题,我似乎找不到解决它的方法。请帮助我。

我可以提供其他资源。我只是不知道我需要在这里放置的所有东西,以便你们有效地帮助我。

谢谢!

0 个答案:

没有答案