本文主要是介绍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下列源代码:
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 ReasonPhrase:Forbidden(The ISA Server denied the specified Uniform Resource Location)
公司网络原因,屏蔽了某些网站或端口,使用ForeFront TMG代理。
这篇关于WSO2 ——(3)ESB 源码编译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!