简单解决复杂的Oracle IAS问题
2009-03-19 13:10:35 来源:WEB开发网错误信息看上去比较低级: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;
}
更多精彩
赞助商链接