1. 程式人生 > >WSO2 ——(3)ESB 原始碼編譯

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-SecurityWS-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 ReasonPhraseForbiddenThe ISA Server denied the specified Uniform Resource Location

公司網路原因,遮蔽了某些網站或埠,使用ForeFront TMG代理。