做WebService有一段時(shí)間了,其實(shí)WebService還是挺簡(jiǎn)單的,一個(gè)簡(jiǎn)單的POJO就能發(fā)布成webservice.

寫(xiě)一下遇到的問(wèn)題:

首先搭建傳統(tǒng)的hibernate框架,遇到的jar包的問(wèn)題,話說(shuō)以前重來(lái)沒(méi)遇見(jiàn)過(guò),當(dāng)然以前我沒(méi)用過(guò)annotation~~
因?yàn)橐玫降牟煌琷ar包里的同名類,如果不特定順序就會(huì)出現(xiàn)調(diào)用錯(cuò)誤情況~~以下是需要用到j(luò)ar包的順序:

 

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

在單位發(fā)布webservice之后一切安好,但是回家用VPN連一下公司的網(wǎng)后,webservice說(shuō)什么都不能調(diào)用了~~ 后來(lái)上網(wǎng)查了一下是因?yàn)橛虿煌斐蔁o(wú)法訪問(wèn)。然后順藤摸瓜發(fā)現(xiàn)自動(dòng)生成的service.xml有問(wèn)題,在定義webservice時(shí) 沒(méi)寫(xiě)scope的屬性~~添上scope='Application',一切恢復(fù)正常~~~當(dāng)然在公司也正常~~其實(shí)我也很奇怪,為什么服務(wù)端和客戶端都在我本機(jī)上,卻報(bào)這種錯(cuò)誤~~

然后就是寫(xiě)SH1+BASE64壓縮, 調(diào)用時(shí)而報(bào)錯(cuò)時(shí)而不報(bào)錯(cuò)~~
后來(lái)發(fā)現(xiàn)DigestUtils.sha1這個(gè)需要commons-codec需要1.8以上的jar包,可axis2中l(wèi)ib里有1.3的包,所以調(diào)用webservice 時(shí),系統(tǒng)抽風(fēng)一會(huì)兒調(diào)用1.8的jar包,一會(huì)兒調(diào)用1.3的包~~不過(guò),我覺(jué)得正常的電腦應(yīng)該首先調(diào)用1.3的包~~解決方案可以直接替換axis2 lib里的1.3的包~~~當(dāng)時(shí)我的電腦比較奇怪,替換后我的log不能在notepad++里實(shí)時(shí)更新,所以我不敢動(dòng),后來(lái)貌似是電腦太慢了,我采用的解決方式是拿到source代碼把包名org開(kāi)頭的直接替換com,然后打包引用~~~呵呵,這下肯定不會(huì)再調(diào)用錯(cuò)了~~喃自己的包~~~

有時(shí)候webservice頁(yè)面不能實(shí)時(shí)更新,害得我發(fā)布了無(wú)數(shù)次,就是不成功,后來(lái)發(fā)現(xiàn)一切都是假象~~~早就成功了,浪費(fèi)了一個(gè)小時(shí)啊~~~坑死我了~~~

用soapui 模擬客戶端的訪問(wèn)時(shí)候,不大會(huì)寫(xiě)數(shù)組,自己搞了一上午,木有結(jié)果~~后來(lái)上網(wǎng)查查,越查越復(fù)雜啊,連wsdl文件都要改,后來(lái)喃的leader告訴我直接那個(gè)標(biāo)簽寫(xiě)N個(gè)就行,數(shù)組就是同名啊~~額~~xml不熟啊,話說(shuō)java不是這么寫(xiě)的~~~后來(lái)忽然想起來(lái),在我懷寶寶的時(shí)候,他就告訴過(guò)我那么寫(xiě)了~~撞墻撞墻~~~

最后就是遇到讀取資源文件的問(wèn)題,本來(lái)測(cè)試都好好的,一打包后就都讀不出來(lái)了,后來(lái)查出來(lái),打成jar包后應(yīng)this.getClass().getResourceAsStream("/constant.properties");一定要用getResourceAsStream,話說(shuō)我看log時(shí)候還不仔細(xì),明明掉別的jar包里的同名資源文件,我都沒(méi)看到,還納悶怎么就得到資源文件中的一個(gè)變量呢~~哎,得有多腦殘,為嘛就不看一眼啊~~好了寫(xiě)到這了,具體見(jiàn)我的博客文章~~~