当前位置: 首页 > 工具软件 > WSO2 Carbon > 使用案例 >

WSO2 ——(3)ESB 源码编译

张溪叠
2023-12-01

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下列源代码:

Orbit:https://svn.wso2.org/repos/wso2/carbon/orbit/tags/4.1.0/

Kernel:https://svn.wso2.org/repos/wso2/carbon/kernel/tags/4.1.0/

Platform:https://svn.wso2.org/repos/wso2/carbon/platform/tags/4.1.5/

3.2 编译orbit4.1.0

Orbit:G:\wso2\4.7.0srcsoftware\orbit4.1.0> mvn clean install

3.3 编译kernel4.1.0

Kernel:G:\wso2\4.7.0srcsoftware\kernel4.1.0> mvn clean install

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出现同样错误。

G:\wso2\4,8.0srcsoftware\turing-chunk04\dependencies\synapse\2.1.2-wso2v2\modules\securevault 修改pom.xml配置文件,或者改compile版本号2.3.2,上述错误变成警告,编译通过。

                 <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 ……

编译期间经常会出现类似上述错误,可以从网站手动下载jar包并安装。如http://maven.wso2.org/nexus/content/groups/wso2-public下载hive 的所有jar包,手工安装,重新运行。

然后报错缺少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代理。

 

 

 

 


 类似资料: