WSO2 ——(3)ESB 源码编译

2024-03-07 10:18
文章标签 编译 源码 esb wso2

本文主要是介绍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下列源代码:

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代理。

 

 

 

 


这篇关于WSO2 ——(3)ESB 源码编译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/783182

相关文章

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Android实现一键录屏功能(附源码)

《Android实现一键录屏功能(附源码)》在Android5.0及以上版本,系统提供了MediaProjectionAPI,允许应用在用户授权下录制屏幕内容并输出到视频文件,所以本文将基于此实现一个... 目录一、项目介绍二、相关技术与原理三、系统权限与用户授权四、项目架构与流程五、环境配置与依赖六、完整

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory