公司做大了服務必定會回退,這點我是深有體會,在一次項目實施中要用到華為的簡訊介面,我們是j2ee的項目,華為提供java的簡訊調用介面,文 檔也還可以,但問題出在了jar包上。api的調用其實不難理解,api只是提供一些開放的介面出來,真正的業務代碼還在應用平台那裡,可是華為提供的這 個api有23M,我的天,和一個項目整個大小差不多了,我當時就感覺有點不對勁,開啟jar包看了一下,亂七八糟什麼都有,servlet的源碼、 jdbc的源碼、xml的源碼.......build.xml等一些無用的東西都被打了進去,在項目中傳送簡訊頁面報錯,後台什麼也不顯示,無語
中......,怎麼也找不出問題,而且簡訊調用的方法斷點都跟不進去,真是奇怪......,後來無意間看到webserver啟動時報not loaded SMSendAPI.jar,我靠,這個問題煩了我三天時間,同樣是放在WEB-INF/lib下的jar,為什麼就只有華為的jar無法被 webserver載入呢?聯絡他們工程師後得到的回複是,把SMSend.jar放到webserver的公享lib下,我照著做了還是不行,而且 webserver這次無法啟動了,包有衝突,我很是無語。後來讓建個普通的java工程測試通過,很明顯是jar包裡的東西和webserver的類庫
有衝突,可是他們工程師卻說他們建立個web項目,只放他們的jar包是可以測試通過的,再次無語,我總不能把我項目下的jar包全刪了吧。 ,後來我就對他們提供的jar包進行研究,發現很多類在執行過程中根本沒有用到,我就一個個地刪,但不管刪哪個啟動都會報錯,後來一氣之下將除了com包以外的所有檔案都刪了,結果成功啟動,而且簡訊發送也沒問題了。
下面是我的簡訊調用代碼,具體參數說明我就不一一解釋了,如果你有用到他們會提供api文檔,裡面有解釋。此處主要是說明在web項目中無法使用的問題,歡迎大家交流。
SMAPIConfig.setConfigFilePath(path); // 設定smsendsql.xml所在路徑 try { SMEntry.init(dbName, name, pwd); SMEntry.logIn(userName, userPwd); java.util.Date atTime = new java.util.Date(); String sourceAddr = "xxxxx"; // 簡訊源地址 int needStateReport = 0; // 是否需要狀態報表 String serviceID = "API"; // 業務類型 String feeType = "01"; // 資費類型 String feeCode = "10"; int id = SMEntry.submitShortMessageState(atTime, sourceAddr, destNo, msg, needStateReport, serviceID, feeType, feeCode); System.out.println("message state id=" + id);} catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e);}finally{ try { SMEntry.cleanUp(); }catch (SMException e) { e.printStackTrace(); }}