WSO2 ——(3)ESB 原始碼編譯
WSO2 ESB編譯真是費勁,編譯得花費四五個小時。先是編譯4.8.0版本,缺少各種jar包轉戰到4.7.0版本,最後發現原來是公司網路原因,崩潰。4.7.0版本網上有人已經編譯成功,又花了幾天時間終於編譯完成了。
1 幾個概念
1.1 WSO2 ESB
wso2的一個產品,所有的wso2產品都是基於carbon的。Wso2esb是基於Apache Synapse專案的,Apache Synapse是Apache Axis2 專案的一個分支。
A WSO2 Product = Carbon Kernel + Set of features。
1.2 Carbon
Carbon是個基於eclipse equinox的基礎整合OSGi框架容器,是一個整合的元件化的平臺,在上面可以很方便地開發部署你需要的服務元件,不用擔心服務管理,安全和擴充套件性問題,基於OSGi(java開放服務閘道器標準)提供更好的模組化和元件化,是一種OSGi相容的中介軟體。
1.3 Apache Axis2
Axis框架來自 Apache 開放原始碼組織,它是基於JAVA語言的最新的 SOAP 規範的開放原始碼實現。有很多流行的開發工具都使用AXIS作為其實現支援Web服務的功能,例如JBuilder以及著名的Eclipse J2EE外掛Lomboz。
Web Service是現在最適合實現SOAP的技術,而Axis2是實現Web Service的一種技術框架,是一個全功能的Web服務實現框架,比Axis 1.x 模組化更強、靈活性更高、更有效,這種體系結構可以很容易地插入到其他相關 Web 服務標準和協議(如 WS-Security、WS-Reliable Messaging 等)的實現中。
1.4 OSGi
OSGi(Open Service Gateway Initiative)技術是面向Java的動態模型系統。OSGi服務平臺向Java提供服務,這些服務使Java成為軟體整合和軟體開發的首選環境。OSGi技術提供一種面向服務的架構,能使元件動態地發現對方。OSGi聯盟已經開發了像HTTP伺服器、配置、日誌、安全、使用者管理、XML等很多公共功能標準組件介面。
1.5 eclipse equinox
Equinox其實就是OSGi核心標準的完整實現,並且還在這個基礎上增加了一些額外的功能(比如為框架增加了命令列和程式執行的入口)。我們能夠利用Equinox專案的程式碼來執行一個實實在在的OSGi框架,框架啟動後,可以將開發好的元件放到裡面執行。
2 WSO2 目錄
2.1 Carbon 目錄
Carbon/Orbit
Kernel
platform
l Orbit繫結第三方依賴。wso2不包含的,但一些產品需要的。
l kernel包含產品執行的carbon平臺的核心程式碼。
l platform包含carbon平臺的所有產品。
編譯原始碼時,需先編譯orbit,然後kernel,然後platform。
2.2 WSO2 ESB目錄
一般WSO2 platform結構如下:
Turning/Build
Components
Dependencies
Features
Parent
platform-integration
patch-releases
Products
Samples
service-stubs
l build:雲層stratos2配置用到的。
l components:實際元件原始碼所在地。
l dependencies:產品所用的依賴。
l features:產品功能,每個功能可能包含多個元件。
l parent:父依賴。
l platform-integration:
l patch-releases:釋出的各個版本產品的依賴。
l products:包含esb4.7.0產品。
l samples:提供的示例。
l Service-stubs:wsdl2 java程式碼生成的元件,客戶端。
3 編譯步驟
WSO2 ESB是基於carbon的。carbon是個基於eclipse equinox的基礎整合OSGi框架容器。所以,要編譯wso2esb,需要先編譯carbon,最後再編譯esb。
Carbon目錄下包含orbit,kernel,platform,需先編譯orbit,然後kernel,然後platform。WSO2 ESB4.7.0的原始碼基於Carbon4.1.0。orbit4.1.0,kernel4.1.0,platform4.1.5。
3.1 svn checkout下列原始碼:
3.2 編譯orbit4.1.0
Orbit:G:\wso2\4.7.0srcsoftware\orbit4.1.0> mvn clean install
3.3 編譯kernel4.1.0
3.4 編譯platform4.1.5
Platform:G:\wso2\4.7.0srcsoftware\4.1.0> mvn clean install
4 典型問題
4.1 PermGen Space
首次編譯kernel和platform都會出現這個問題,如圖所示:
修改mvn.bat 設定set MAVEN_OPTS=-Xms768m -Xmx3072m -XX:MaxPermSize=1200m
mvn clean install 重新執行
4.2 Sun的專用API,可能會在未來版本中刪除
G:\wso2\4,8.0srcsoftware\turing-chunk04\product-releases\chunk-04>mvn clean install出現下列錯誤,4.7.0出現同樣錯誤。
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-javac</artifactId>
<version>1.8.1</version>
</dependency>
4.3 編碼UTF-8的不可對映字元
上述報錯檔案中涉及中文,4.7.0同樣錯誤
G:\wso2\4,8.0srcsoftware\turing-chunk04\dependencies\staxon\1.2.0-wso2v2
修改pom.xml檔案,新增<encoding>GBK</encoding>
4.4 Failed to execute goal on project ……
然後報錯缺少hive-cassandra jar包,上面網址沒有該jar包。因為hive jar包目前我們用不上,所以在G:\wso2\4.7.0srcsoftware\4.1.5\components\analytics\org.wso2.carbon.hive.data.source.access\4.1.0 路徑下修改pom,去掉所有hive依賴,重新編譯即可。
4.5 ReasonPhrase:Forbidden(The ISA Server denied the specified Uniform Resource Location)
公司網路原因,遮蔽了某些網站或埠,使用ForeFront TMG代理。