Oracle java函数超时

Oracle java函数超时,java,Java,我的oracle数据库中有下一个java函数: public String SnConectividad(String pServidor, int pPuerto) { try{ Socket s = new Socket(); InetSocketAddress addr = new InetSocketAddress(pServidor,pPuerto); s.connect(ad

我的oracle数据库中有下一个java函数:

public String SnConectividad(String pServidor, int pPuerto)
{
        try{

            Socket s = new Socket();

                InetSocketAddress addr = new InetSocketAddress(pServidor,pPuerto);

                s.connect(addr, 7000);

            if (s.isConnected())

                    return "S";

        }catch(Exception e){}


        return "N";

    }
此功能在发送邮件之前验证internet连接。。。问题是指令超时(7000密耳)“s.connect(addr,7000);”不工作

因此,调用此函数需要很长时间才能响应

如果我在windows上的“netbeans”上执行相同的函数。。。暂停工作很好


有什么想法吗

线程
执行器服务
一起使用:

   String flag="S";
   Runnable thrd=new Thread(){ @Override
    public void run() {
        try{

            Socket s = new Socket();

                InetSocketAddress addr = new InetSocketAddress(pServidor,pPuerto);

                s.connect(addr);

            if (s.isConnected())

                    flag="S";
                    return;

        }catch(Exception e){}


        flag="N";
    }};
 ExecutorService executor = Executors.newSingleThreadExecutor();
 Future future = executor.submit(thrd);
 executor.shutdown();
 try { 
   future.get(700, TimeUnit.SECONDS); 
 }
 catch (Exception e) { 
   // Handle the exceptions 
 }
 if (!executor.isTerminated())
    executor.shutdownNow();

你能解释一下它以什么方式不起作用吗?是否忽略7000参数,即解释为默认超时?还是有例外?还是编译错误?还是别的什么?它不起作用,因为当我在Java中运行调用此函数的数据库过程时,该过程会被卡住很长时间,而不考虑Java过程的超时。请您解释一下为什么原始代码不起作用,以及为什么此代码在相同的情况下起作用?