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

相关文章

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

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get