wso2esb源码编译总结
最近花了两周的空闲时间帮朋友把wso2esb的4.0.3、4.6.0、4.7.0三个版本从源码编译出来了。以下是大概的一些体会。
wso2esb是基于carbon的。carbon是个基于eclipse equinox的基础整合OSGi框架容器。
所以,要编译wso2esb,需要先编译carbon,最后再编译esb。
wso2esb 4.0.3的源码是基于carbon2.3.3的,比如integration-test的jar,mvn中央库和wso2的maven库都找不到了,幸亏这个是用来做test的,不影响esb本身的编译。
carbon4.1.0 跟4.0.x比较:
1、像是原来放在orbit中的一些依赖,丢到kernel和dependence里去了
2、一些pom的配置也从上级挪到下级去了
3、加了hadoop的依赖
wso2esb4.7.0 和 4.6.0 实际用的很多组件还是4.0.0的,carbon-core的基准版本都是4.0.5 ,也就是说编译carbon4.1.0其实没用上。
用carbon4.0.5+esb4.6.0编译的时候,因为修改了carbon-core 4.0.5, 所以会影响到下次对esb4.7.0的编译。
在用户目录下的.m2\repository\org\wso2\carbon\wso2carbon-core 删掉4.0.5文件夹,这样下次编译时直接从maven库下载,而不是使用我们编译的版本。
kernel的core目录编译完的时候,其实carbon就编译好了。
kernel\distribution\product\modules\distribution\target 下有打包好的carbon zip文件。
carbon的大概源码结构是一个基线版本,比如4.0.0,
然后在上面打一些tag做分支版本,把tag版本号作为patch,添加到原来的项目pom依赖中去。
这样,carbon打包后的jar里,就会大部分是xxx-4.0.0.jar, 还有少量的xxxx-4.0.1.jar xxxxxx-4.0.5.jar 这些都是更新的版本。
打包的时候,根据pom里的依赖模块版本号,拿不同的源码来编译。 carbon依赖的第三方库,也基本都是以源码+自定义的版本号来这么管理的。
esb的打包是直接基于carbon core的zip文件的。
先从m2里拿到zip,解压了到platform\products\esb\4.7.0\modules\p2-profile\target下的tmpxxxx文件夹。
然后根据p2-profile下pom.xml中的描述,去拿各种需要的jar,包括各种依赖,合并到一起
然后打包成esb的最终文件结构,
再打包成zip放到distribution(同时也打包了docs),这个就是可以直接发布的版本。
打包过程会在C:\Users\kk\.m2\repository\org\eclipse\tycho\tycho-p2-runtime\0.13.0\eclipse下生成一个eclipse的内核,用来作为OSGi装配容器。
由于carbon和wso2esb都是插件机制,所有的东西都可以看做是一个小的插件模块,所以源码结构很零碎。而且carbon是所有的wso2产品的技术基础平台,对esb来说,很多东西都是多余的,但是wso2为了省事,没有去掉依赖关系,比如esb编译时需要编译hive和hadoop,这两个压根儿跟esb没关系,完全可以去掉依赖。
而且由于产品很多,近20个,导致carbon的每个模块的版本都很多,产品很少的哪些模块也都有各自的版本,这样交叉起来,依赖关系特别复杂,非常容易出错。所以,下载wso2esb源码后自己编译,主要就是理顺一些依赖关系。
前面分析的都是 wso2esb 的core和management console的源码。
developer studio的代码在:
http://svn.wso2.org/repos/wso2/tags/tools/ide/eclipse/developer-studio/3.2.0/esb/
这个就是一些eclipse的插件了。编译依赖于eclipse自身的一些东西。
wso2esb支持两种部署模式,独立启动模式,作为web应用启动模式。
4.0.0以后的版本,都建议使用独立启动模式。即直接作为容器运行。
想要嵌入到web server运行的话,比如tomcat或jboss,weblogic之类的话,可以参考编译出来的target\wso2esb-4.6.0-docs.zip,解压出来,看deployment_guide.html和webapp_deployment_guide.html两个文件的说明步骤。
其他的信息,可以参考官方文档:
http://docs.wso2.org/wiki/display/ESB460/Enterprise+Service+Bus+Documentation
wso2esb源码编译总结的更多相关文章
- Android 5.0源码编译问题
如果是自己通过repo和git直接从google官网上download的源码,请忽略这个问题,但是由于google在国内被限制登录,通过这一种方法不是每个人都能download下来源码,通常的做法就是 ...
- Android stdio Apktool源码编译
Android Apktool源码编译 标签(空格分隔): Android Apktool 源码编译 需求 习惯NetBeans调试smali需要用Apktool反编译apk,需要用-d的参数才能生成 ...
- SSH/SSL 源码编译安装简易操作说明
环境:CentOS 6.7 安全加固需求,由于某盟扫描系统主机有SSL系列漏洞,客户要求必须修复: 解决方案:将SSH/SSL升级到最新版本,删除SSL旧版本(实测不删除旧版本某盟扫描无法通过). 当 ...
- Hadoop源码编译过程
一. 为什么要编译Hadoop源码 Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries)的概念,通 ...
- World Wind .NET源码编译问题处理
World Wind .NET源码编译问题处理 下载了World_Wind_1.4.0_Source源码(http://worldwindcentral.com/wiki/NASA_World_W ...
- 源码编译安装 MySQL 5.5.x 实践
1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...
- Linux 安装node.js ---- 源码编译的方式
一 : 普通用户: 安装前准备环境: 1.检查Linux 版本 命令: cat /etc/redhat-release 2.检查 gcc.gcc-c++ 是否安装过 命令: rpm -q gcc rp ...
- 烂泥:mysql5.5数据库cmake源码编译安装
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 以前也写过一篇有关mysql5.0源码编译的文章,该文章为<烂泥:mysql5.0数据库源码编译安装>.但是MySQL自5.5版本以后,就开 ...
- Centos7.X 源码编译安装subversion svn1.8.x
说明:SVN(subversion)的运行方式有两种:一种是基于Apache的http.https网页访问形式:还有一种是基于svnserve的独立服务器模式.SVN的数据存储方式也有两种:一种是在B ...
随机推荐
- 创建UILabel
UILabelCreate.h #import <UIKit/UIKit.h> @interface UILabelCreate : UILabel /** * 创建UILabel 初始化 ...
- python学习之路-13
SQLAlchemy ORM框架 连表操作 一对多 创建表 指定约束 ForeignKey from sqlalchemy import create_engine from sqlalchemy.e ...
- mycat(4)
2016二月 24 置原 配置MyCat-eye 接下来在开始使用MyCat之前,我们先把监控平台部署好. 下载MyCat-eye项目,mvn打包. 之后得到类似于Mycat-web-1.0-SNAP ...
- RESTEasy 3.X Helloworld
最近呢,RESTEasy也升级了.升到了3.X. 官网:http://www.jboss.org/resteasy 集成使用也非常简单(相比SOAP而言) 第一步:下载jar包 resteasy是托管 ...
- 几个检查当前运行的LINUX是在VM还是在实体机中的方法
昨天提到了VM中的逃逸问题,要想逃逸,首先要检测当前操作系统是否为VM,下面提供几个LINUX下的检查方法: 第一,首推facter virtual ,权限为普通用户,约定,普通用户命令提示符用$表示 ...
- 仿桌面通知pnotify插件
在做网站的时候,alert弹出框是非常常见的情形.但是,有些情况下,弹框对用户来说是并不友好的.调研了几个其他的提示插件了,发现pnotify比较好用,可配置性也高. 使用示例: <!DOCTY ...
- 函数nvl,nvl2,nullif,coalesce
NVL: Converts a null value to an actual valueNVL2:If expr1 is not null, NVL2 returns expr2. If expr1 ...
- 关于.net 对.manifest清单文件查找缓存的猜想
问题背景: winform调用unity web player 插件. 按如下操作: ,编译后会生成.manifest清单文件: 通过清单内容可以看出程序在运行时是按照以上信息来查找ActiveX控件 ...
- border-radius讲解1
如今CSS3中的border-radius出现后,让我们没有那么多的烦恼了,首先制作圆角图片的时间是省了,而且其还有多个优点:其一减少网站的维护的工作量,少了对图片的更新制作,代码的替换等等;其二.提 ...
- Oracle/Mysql/SqlServer函数区别
mysql日期和时间格式转换 Linux scp 使用详解 Oracle/Mysql/SqlServer函数区别 2011-07-01 12:34:36| 分类: Mysql技术 | 标签:mys ...