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