Today,webservice,axis,jbuilder2006
今天做了兩個基于Tomcat的webservice,Tomcat本身不支持webservice,需要有一個axis的插件,說白了就是jar包來支持,webservice利用xml基于soap協(xié)議傳輸來調(diào)用遠(yuǎn)程方法,在客戶端和服務(wù)器端都有業(yè)務(wù)提供類的一個接口,他們通過wsdl語言來定義提供的哪些服務(wù),客戶端解析服務(wù)器端提供的wsdl生成業(yè)務(wù)類的接口,這樣客戶端就可以遠(yuǎn)程調(diào)用了。
利用jbuilder2006構(gòu)建webservice是很簡單的,所有復(fù)雜的都自動生成了,但其中還是有些一些bug,比如今天遇到的,建立了一個web應(yīng)用程序用來提供服務(wù),在通過向?qū)砑?/span>webservice服務(wù)器端的時候,就是不出現(xiàn)先前建好的web應(yīng)用,最后在網(wǎng)上查原來是:在JBuilder 2006中建立WebService的服務(wù)器端程序的時候,不管怎么試都是卡在建立WEB MODULE這個地方了。主要是JB2006自帶的TOMCAT的問題--------把建立WEB MODULE時的 SERVLET版本改成SERVLET 2.3,JSP版本改成JSP1.2就不會卡住了。暈。
昨天看effective java,第一條,試著用靜態(tài)工廠方法替代構(gòu)造函數(shù),原因有:
1、靜態(tài)工廠方法有名字,可以讓人知道這個對象構(gòu)造出來是什么,比如一個類需要提供幾個構(gòu)造函數(shù),它們有不同的函數(shù)原形(函數(shù)原型包括函數(shù)名和函數(shù)的參數(shù)但不包括函數(shù)的返回類型),這樣很可能讓用戶不能清楚地知道每個構(gòu)造函數(shù)是做什么用的,除非去看文檔,而將其中幾個構(gòu)造函數(shù)用靜態(tài)工廠方法代替,解決了這個問題。
2、靜態(tài)工廠方法可以返回不同的對象,這特別適用于面向接口編程,按照提供的參數(shù)可以返回接口的不同的實現(xiàn)。
3、靜態(tài)工廠方法可以不象構(gòu)造函數(shù)那樣每次都創(chuàng)建新的對象,可以是單立的,也可以不創(chuàng)建重復(fù)的對象,也就是如果兩個對象的屬性值相等就不創(chuàng)建新的返回已經(jīng)存在的。
另外,還提到了靜態(tài)工廠方法的缺點,1、如果一個類將構(gòu)造函數(shù)設(shè)成了private的,用靜態(tài)工廠方法來創(chuàng)建對象,那么這個類將不能被繼承,因為子類不能調(diào)用父類的構(gòu)造方法(已設(shè)成私有)。2、靜態(tài)工廠方法跟其它靜態(tài)方法沒有任何區(qū)別,所以必須給它們起一個合適的名字,比如getInstance().,這種說法破壞了已有的規(guī)則,但規(guī)則,對象都是由構(gòu)造函數(shù)創(chuàng)建的,但使用靜態(tài)工廠方法又有它的獨到的好處。所以在取舍上,作者這樣說,在實際開發(fā)中,如果沒有足夠的理由,還是老老實實的使用構(gòu)造方法來創(chuàng)建對象,畢竟這是已有的規(guī)則。