WEB开发网
开发学院数据库Oracle 简单解决复杂的Oracle IAS问题 阅读

简单解决复杂的Oracle IAS问题

 2009-03-19 13:10:35 来源:WEB开发网   
核心提示: 错误信息看上去比较低级:NoClassDefFoundError,类没找到,简单解决复杂的Oracle IAS问题(3),迅速了检查了一下本机和服务器上的jar包是否相同,“一模一样”!这就奇怪了,决定转用JDK的基础类:java.net.HttpURLConnec

错误信息看上去比较低级:NoClassDefFoundError,类没找到,迅速了检查了一下本机和服务器上的jar包是否相同,“一模一样”!这就奇怪了。

检查本机的开发环境,只添加了这两个jar,其他的都没有动过,又检查服务器的运行环境,一样没有变化。于是删掉本机开发环境下的这两个jar,问题浮出来了,类中对httpclient的7、8个引用中只有1个提示未找到指定的类,看来Oracle自己的某个包中已经包含某个较低版本的httpclient,jar包冲突的问题是件让人沮丧的事情,尝试解决这种问题会所耗费的时间也许是其他方法的N倍,无心恋战。

其实此处要进行的操作很简单,就是访问指定的URL,根据返回的内容检查是否成功,HttpClient是完整模拟浏览器,考虑了很多种问题,使用起来反倒是复杂了,决定转用JDK的基础类:java.net.HttpURLConnection

事情出奇的顺利,空间里找到了之前写的一个方法,正好解决这个问题,以下是代码清单:

private boolean visitURL(String strUrl, String successFlag) {

boolean rs = false;
HttpURLConnection jconn = null;
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

try {
URL url = new URL(strUrl);

jconn = (HttpURLConnection) url.openConnection();
jconn.setDoOutput(true);
jconn.setDoInput(true);
jconn.connect();

InputStream in = jconn.getInputStream();
byte[] buf = new byte[4096];

int bytesRead;
while ((bytesRead = in.read(buf)) != -1) {
byteArrayOutputStream.write(buf, 0, bytesRead);
}

String strRead = new String(byteArrayOutputStream.toByteArray());

logger.debug(strRead);

strRead = StringUtil.NVL(strRead);

if(strRead.indexOf(successFlag) != -1) {
logger.info("Visit URL < " + strUrl + " > success !");
rs = true;
}

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
jconn.disconnect();

try {
byteArrayOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}

return rs;
}

上一页  1 2 3 

Tags:简单 解决 复杂

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接