ODE源碼導入Eclipse工程成功執行

ODE是一個開源的BPEL語言引擎(它的介紹可以看我的其他BPEL標籤下的文章),使用它的源碼進行修改來構造符合定製需求的一個新的業務流程執行引擎。由於我對Eclipse平臺相對較爲熟悉,所以想辦法將ODE的源碼通過Eclipse工程的方式重現出來,這樣便於二次開發。在導入Eclipse工程的過程中,出現了很多問題,下面將詳細的講述具體每一步如何進行操作,並對我所遇到的問題進行解決。

 

從ODE官方網站下載的源碼包(使用http方式下載,沒有使用svn),解壓之後只是純代碼,包括測試用代碼、一些配置文件。但沒有依賴的第三方包,也沒有相應的Eclipse工程文件,也就是說無法直接導入到Eclipse環境中進行開發的,首先使用ODE官網上的說法使用ruby工具進行構建,這裏可以參考下構建ODE編譯Eclipse工程。雖然都是英文,但還都是簡單易懂的。照上面的文章將會生成大概20多個工程,因爲ApacheODE的工程師們不是通過Eclipse開發的,他們使用Ruby的工具,buildr來構建項目,多個工程之間的依賴關係通過buildr來完成的。

這20多個Eclipse工程雖然可以通過import的方式導入到Eclipse環境下,但是還不能運行。首先,很多第三方Jar包沒有導入,這些jar文件是你在剛纔編譯的時候通過maven這個工具自動下載了,一般目錄在C:\Documents and Settings\Administrator\.m2\repository下,你需要在你的Eclipse種設置一個變量來指向這些jar(可以看我的另一篇文章Eclipse導入jar),從而很容易的導入。

接下來,ODE項目爲一個WEB工程,其最終的部署運行是放在Tomcat中進行的,故需要爲其創建一個WEB工程,導入源碼,調整好各個包之間的依賴關係。

 

注意:下載之後的源碼是分爲很多個工程的(剛纔已經說過),可以將其中的各個src包中的java源碼copy出來,組成一個工程(這個工作必須非常小心,各個工程中的所有源碼包都必須拷貝出來,並且正確的放在不同的包中,可以在Eclipse環境下作這個工作,相對較爲容易),這樣便於調試、和查看。還需要將剛纔提到的所有jar文件導入到工程中,在項目編譯的過程中,你還會看到很多的錯誤信息,大部分都是jar文件找不到,或者版本不對(這個問題大概纏繞了我3天時間),然後你需要一個一個的解決。很枯燥!

 

然後,再將ode-war包下的axis2-web文件夾拷貝到工程中的webcontent文件夾下,這樣是爲了便於從瀏覽器訪問部署的服務,該部分全部是jsp文件,主要負責了頁面顯示(其實主要還是Axis2的界面顯示),沒有太多的邏輯代碼。

接下來,將ode-war包下的/WEB-INF/web.xml文件拷貝到工程下的webcontent下的WEB-INF文件夾下。

 

接下來,配置一個服務器,一般使用Tomcat5.5 。接着將該工程部署到tomcat中的webapps文件夾下,這樣就部署成功了,根據web.xml文件可以得知整個工程的加載順序,其最先是從

org.apache.ode.axis2.hooks.ODEAxisServlet

該servlet開始,在其中的init方法中添加輸出語句,便可以在tomcat的控制檯下看到,這樣便可以修改源碼擴展ODE了。

 

以下是一些具體問題的解決,但是都很難發現的問題

 

然後刪除工程ode-jacob-ap中對於tools.jar的 依賴,再將ode-bpel-api工程中org.apache.apche.ode.bpel.evar

  改成org.apache.ode.bpel.evar。

 

  問題解決:

  1)報錯:javax.persistence.*** 無法找到persistence的provider

  這是由於在META-INF文件夾下沒有persistence.xml文件,該文件在

  源碼的ode-dao-jpa工程的resources文件夾下可以找到

 

  2)報錯:無法創建derby數據庫的物理連接

  這是由於derby的類庫文件的版本不一致造成,需要將derby 10.4版本

  老版本必須從classpath中刪除

 

  3)報錯:無法加載schematypesystem

  向工程導入ode-schema-RC1.jar

 

  4)流程部署報錯:setFeature or setParameter無法執行

  刪除工程導入的xercesImpl.jar的較低版本

 

  小結:由Ruby的buildr工具導出的ODE源碼工程還是有很多錯誤的地方,也許  ODE的開發團隊並不是採用Eclipse開發,所以纔會有這麼多的問題未解決。一  般的錯誤都是由於導入包的版本錯誤所導致,一般刪除較低版本便可以。現在導入的包數量太大,包括了很多的無用包,等到對ODE源碼有了更全面的瞭解之後可以對這些jar包進行一個整理,沒有引用到的便可以刪除。

 

 

接下來,我還會對ODE做更進一步的分析和學習,希望有相同需求的朋友能共同學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章