2009年8月20日 星期四

用Java 寫 Web Service(2)

佈署 Web Service 除了在 SE、 Web Container 的環境底下外還有直接佈署在 EJB Container 中。佈署在 EJB Container 也有兩種型式:1.POJO、2.Session Bean 兩種方式



POJO 方式



撰寫一個寫單的 Java Bean



Java Code 的部份很單,但佈署方 EJB Container 的方式則各家不同


Jboss AS


在 Jboss 的境底下須包成 War 檔,並以 Servlet 的式來提供 Web service



佈署完畢!雖然是純 Java Bean 但還是可以當成 Servlet 來佈署。雖然有點奇怪,但在 Jboss 上行得通。


Glass Fish


在 Glass Fish 佈署 Web Service 是最方便的,包裝成 War 檔後直接佈置到 Server 上即完成。完全不須額外的設定是取方便的佈署方式。但這樣的佈置方式也僅限 Glass Fish



EJB Session Bean


必須撰寫 Session Bean, 其實也不難,僅要在 Java Bean 上增加一些 EJB 有關的 Annotations




包成 Jar 檔即可。EJB Session Bean 的佈置方式是 EJB 3.0 的標準,適用於不同 EJB Server 是最理想的佈署方式



2009年8月18日 星期二

用 Java 寫 WebService (1)

既然是用Java 寫 Web Service 就不是 Top-Down(Contract first) 的寫法,主要是透過 jax-ws api 來寫,當然 jax-ws 也可用於 contract first 方式寫。


雖然以 jax-ws api 來寫 web service 但還是產生方式



最簡單的 Web service



在 Java SE 6 的環境下即可寫一個簡單的 pojo 即可產生 Web Service


一個 pojo Web Service



Web Service 發佈程式



一個用 Java 寫的簡單 Web Service 即完成



佈署在 Web Container 上



可否將 Web Service 也佈署在 Web Container 上呢?可以的(非標準規範),但必須加上額外的 jar 檔,在 maven 的 pom 檔上須加上



另外在 還須在 Web.xml 檔中加上額外的 Listener 和 servlet 設定



WSServlet 用來處理所有的 Web Service, 至於實際處理 Web Service 部份則定義在另一張設定檔 sun-jaxws.xml 中





該設定檔中定義了兩個 Web Service 分別對應到兩個 Web Service 實作


比較可惜的是,在 Web Container 的環境中目前尚未有標準的規範。目前還需額外設定。



2009年8月3日 星期一

XML API 比較測試

比較幾個常用的XML API 的寫法與實做,並測試較能


我們以一份 Google map 的 kml 檔來做我們 parse 的對象




StAX




DOM API




XPath API




JDOM API




DOM4J API






幾種 API 測試下來的結果 StAX 的較能的最好的約 1/5~1/7 的時間內可完成;
dom、 jdom、 dom4j、 XPath 較能差異不大,個人的偏好以xpath方式來編寫,但也是幾個 API 中效能最差的一個