Oracle java函数超时
我的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
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过程的超时。请您解释一下为什么原始代码不起作用,以及为什么此代码在相同的情况下起作用?