與ODM組交互彙總(一)

   上個版本完成了與ODM的交互. 主要用的是web service. 

 

   需求:把用戶上傳的圖片傳到ODM系統.一段時間後(我們系統服務器保存用戶圖片爲62天),

            用戶如果想要查看圖片,我們通過web service從odm系統獲取 圖片進行展示。

 

    備註:分2次進行彙總,第一部分是從odm系統獲取圖片展示;第二部分是上傳圖片到odm系統.

   源碼及shell腳本存於網盤/java/project/odm.本文介紹第一部分.

 

一,  準備工作:

       1), wsdl文件

        2), 訪問時所需的 URL, username 和password

 

二, 開發過程

  1), 用jdk自帶工具wsimport生成客戶端代碼.

     wsimpost命令有幾個重要的參數, 如下:

    -keep:是否生成java源文件

    -d:指定輸出目錄

    -s:指定源代碼輸出目錄

    -p:以package的形式生成文件

    -verbose:在控制檯顯示輸出信息

 e.g. wsimport odmService.wsdl -s com.darren -p C:\11_Darren\java\wsimport\src

 

   2), 複製客戶端代碼到工程中,把所需訪問的URL地址配置到配置文件中,根據環境不用可隨意變更.

   3), coding 調用

  e.g.

 

ODMServiceService service = null;

                // 準備參數

GetDocumentRequestTO getDocumentRequest = new GetDocumentRequestTO();

getDocumentRequest.setDocumentId(odm_job_id);

getDocumentRequest.setLoginPassword(ApplicationConstant.IN_ODM_PWD);

getDocumentRequest.setLoginUser(ApplicationConstant.IN_ODM_USER);

 

try {

                      //服務鏈接, 連接失敗會拋出WebServiceException

service = new ODMServiceService();

//獲取圖片,獲取失敗拋出ODMServiceException_Exception

            GetDocumentResponseTO rto = service.getODMService().getDocument(

getDocumentRequest);

//把基於base64的圖片輸出到前臺

    OutputStream os = response.getOutputStream();

response.setContentType("image/jpeg");

byte[] b = rto.getData();

for(int i=0;i<b.length;++i)  

            {  

                if(b[i]<0)  

                {

                    b[i]+=256;  

                }  

            }  

os.write(b);  

os.flush();  

os.close(); 

} catch (WebServiceException e1) {

log.error("could not connect to ODM server. "+ e1.getMessage()));

log.error("args URL:"+ApplicationConstant.ODM_URL);

return  odm_err_msg;

}catch(ODMServiceException_Exception e2){

   log.error("get photo failed. details: "+ e1.getMessage()));

   return  odm_err_msg;

}catch (Exception e){

  log.error("get photo failed. details: "+ e.getMessage()));

  return  odm_err_msg;

}

 

  後記:

      1),開發時遇到wsdl文件種有重複定義節點導致無法生成客戶端代碼.

       2), 開發時遇到發送無效的圖片ID,導致odm返回tomcat異常界面,尷尬叫喊.

      3),權限問題.

 

 

 

  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章