做WebService有一段時間了,其實WebService還是挺簡單的,一個簡單的POJO就能發布成webservice.

寫一下遇到的問題:

首先搭建傳統的hibernate框架,遇到的jar包的問題,話說以前重來沒遇見過,當然以前我沒用過annotation~~
因為要用到的不同jar包里的同名類,如果不特定順序就會出現調用錯誤情況~~以下是需要用到jar包的順序:

 

然后遇到的問題是Timestamp這個問題~~
注意一定要引用正確的包,當時腦殘的引用了oracle下面的timestamp類型,以至于不能正確的插入
要引用java.sql.Timestamp
寫法如下
 @Temporal(TemporalType.TIMESTAMP)
 @Column(name="DATIME")
 public Timestamp getDatime() {
  return datime;
 }
 public void setDatime(Timestamp datime) {
  this.datime = datime;
 }

在單位發布webservice之后一切安好,但是回家用VPN連一下公司的網后,webservice說什么都不能調用了~~ 后來上網查了一下是因為域不同造成無法訪問。然后順藤摸瓜發現自動生成的service.xml有問題,在定義webservice時 沒寫scope的屬性~~添上scope='Application',一切恢復正常~~~當然在公司也正常~~其實我也很奇怪,為什么服務端和客戶端都在我本機上,卻報這種錯誤~~

然后就是寫SH1+BASE64壓縮, 調用時而報錯時而不報錯~~
后來發現DigestUtils.sha1這個需要commons-codec需要1.8以上的jar包,可axis2中lib里有1.3的包,所以調用webservice 時,系統抽風一會兒調用1.8的jar包,一會兒調用1.3的包~~不過,我覺得正常的電腦應該首先調用1.3的包~~解決方案可以直接替換axis2 lib里的1.3的包~~~當時我的電腦比較奇怪,替換后我的log不能在notepad++里實時更新,所以我不敢動,后來貌似是電腦太慢了,我采用的解決方式是拿到source代碼把包名org開頭的直接替換com,然后打包引用~~~呵呵,這下肯定不會再調用錯了~~喃自己的包~~~

有時候webservice頁面不能實時更新,害得我發布了無數次,就是不成功,后來發現一切都是假象~~~早就成功了,浪費了一個小時啊~~~坑死我了~~~

用soapui 模擬客戶端的訪問時候,不大會寫數組,自己搞了一上午,木有結果~~后來上網查查,越查越復雜啊,連wsdl文件都要改,后來喃的leader告訴我直接那個標簽寫N個就行,數組就是同名啊~~額~~xml不熟啊,話說java不是這么寫的~~~后來忽然想起來,在我懷寶寶的時候,他就告訴過我那么寫了~~撞墻撞墻~~~

最后就是遇到讀取資源文件的問題,本來測試都好好的,一打包后就都讀不出來了,后來查出來,打成jar包后應this.getClass().getResourceAsStream("/constant.properties");一定要用getResourceAsStream,話說我看log時候還不仔細,明明掉別的jar包里的同名資源文件,我都沒看到,還納悶怎么就得到資源文件中的一個變量呢~~哎,得有多腦殘,為嘛就不看一眼啊~~好了寫到這了,具體見我的博客文章~~~