日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
簡(jiǎn)單解決復(fù)雜的OracleIAS問(wèn)題

筆者做了一個(gè)小的系統(tǒng)輔助功能,可以周期性訪問(wèn)某個(gè)URL、執(zhí)行某個(gè)SQL語(yǔ)句 or 執(zhí)行某個(gè)系統(tǒng)命令。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),永州企業(yè)網(wǎng)站建設(shè),永州品牌網(wǎng)站建設(shè),網(wǎng)站定制,永州網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,永州網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

執(zhí)行SQL語(yǔ)句和系統(tǒng)命令比較簡(jiǎn)單,這里不再詳述,主要說(shuō)一下訪問(wèn)某個(gè)URL。

實(shí)際上JDK自身已有工具類(lèi)用于創(chuàng)建HTTP請(qǐng)求,類(lèi)名是:java.net.HttpURLConnection,但考慮到基礎(chǔ)類(lèi)通常比較粗糙,很多情況要自己考慮和處理,就轉(zhuǎn)頭去Google了下,發(fā)現(xiàn)果然有開(kāi)源的工具包可以使用,幾個(gè)工具包中以HttpClient較為常用,而且是apache的東東,于是決定采用HttpClient。

從apache上down了包c(diǎn)ommons-httpclient-3.1.jar和commons-codec-1.3.jar兩個(gè)包,后者是HttpClient依賴的包。

幫助寫(xiě)的很好,即便是像我這樣英文很爛,也能很快上手。

    public boolean visitURL(String url) {
       
        // Commons HttpClient 3.1
        HttpClient client = new HttpClient();
        HttpMethod method = new GetMethod(url);

        // Provide custom retry handler is necessary
        method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, false));
       
        boolean rs = false;
       
        try {
           
            // Execute the method.
            int statusCode = client.executeMethod(method);

            if (statusCode != HttpStatus.SC_OK) {
                logger.error("Method failed: " + method.getStatusLine());
            }
            else {
                rs = true;   
            }

        } catch (HttpException e) {
            logger.error("Fatal protocol violation: " + e.getMessage());
        } catch (IOException e) {
            logger.error("Fatal transport error: " + e.getMessage());
        } finally {
            // Release the connection.
            method.releaseConnection();
        }
       
        return rs;
    }

本機(jī)Tomcat下run一下,工作正常,隨即丟到服務(wù)器(Oracle IAS環(huán)境)上測(cè)試,程序應(yīng)該出乎意料的報(bào)了個(gè)錯(cuò)。

09/03/16 19:03:43 java.lang.NoClassDefFoundError
09/03/16 19:03:43 at org.apache.commons.httpclient.HttpMethodBase.writeRequestLine(HttpMethodBase.java:2015)
09/03/16 19:03:43 at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:1864)
09/03/16 19:03:43 at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:975)
09/03/16 19:03:43 at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:368)
09/03/16 19:03:43 at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:164)
09/03/16 19:03:43 at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:437)
09/03/16 19:03:43 at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
09/03/16 19:03:43 at com.zbht.util.TimerTaskManager.runURLTask(TimerTaskManager.java:237)
09/03/16 19:03:43 at _system._timer__task._test._jspService(_test.java:182)
09/03/16 19:03:43 at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)
09/03/16 19:03:43 at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:462)
09/03/16 19:03:43 at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:594)
09/03/16 19:03:43 at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:518)
09/03/16 19:03:43 at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
09/03/16 19:03:43 at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:713)
09/03/16 19:03:43 at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370)
09/03/16 19:03:43 at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871)
09/03/16 19:03:43 at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453)
09/03/16 19:03:43 at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:302)
09/03/16 19:03:43 at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:190)
09/03/16 19:03:43 at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
09/03/16 19:03:43 at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
09/03/16 19:03:43 at java.lang.Thread.run(Thread.java:595)

錯(cuò)誤信息看上去比較低級(jí):NoClassDefFoundError,類(lèi)沒(méi)找到,迅速了檢查了一下本機(jī)和服務(wù)器上的jar包是否相同,“一模一樣”!這就奇怪了。

檢查本機(jī)的開(kāi)發(fā)環(huán)境,只添加了這兩個(gè)jar,其他的都沒(méi)有動(dòng)過(guò),又檢查服務(wù)器的運(yùn)行環(huán)境,一樣沒(méi)有變化。于是刪掉本機(jī)開(kāi)發(fā)環(huán)境下的這兩個(gè)jar,問(wèn)題浮出來(lái)了,類(lèi)中對(duì)httpclient的7、8個(gè)引用中只有1個(gè)提示未找到指定的類(lèi),看來(lái)Oracle自己的某個(gè)包中已經(jīng)包含某個(gè)較低版本的httpclient,jar包沖突的問(wèn)題是件讓人沮喪的事情,嘗試解決這種問(wèn)題會(huì)所耗費(fèi)的時(shí)間也許是其他方法的N倍,無(wú)心戀戰(zhàn)。

其實(shí)此處要進(jìn)行的操作很簡(jiǎn)單,就是訪問(wèn)指定的URL,根據(jù)返回的內(nèi)容檢查是否成功,HttpClient是完整模擬瀏覽器,考慮了很多種問(wèn)題,使用起來(lái)反倒是復(fù)雜了,決定轉(zhuǎn)用JDK的基礎(chǔ)類(lèi):java.net.HttpURLConnection

事情出奇的順利,空間里找到了之前寫(xiě)的一個(gè)方法,正好解決這個(gè)問(wèn)題,以下是代碼清單:

    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;
    }


分享標(biāo)題:簡(jiǎn)單解決復(fù)雜的OracleIAS問(wèn)題
本文鏈接:http://www.5511xx.com/article/cdphsse.html