由于工作需要,了解esb方面的东西,经过多次比较,最后决定采用开源的wso2esb。经过多次实践终于编译过了源码,为了更全面深入的了解wso2esb,方便后续进行功能扩展好跟踪调试等,所以希望能在eclipse下运行wso2esb,以进行单步调试。wso2esb是基于wso2carbon平台构建的,又是基于OSGI架构的,所以只要在eclipse上成功运行carbon,那么也就能同样的运行wso2esb。经过一段时间的研究,终于在eclipse上运行起carbon了,步骤记录如下,以供需要的同仁参考:
1 拷贝必要的文件
新建carbon-repo文件夹:例如我的目录是 D:\Work\wso2\carbon-repo,后续文档中使用[carbon-repo]表示
从编译后的Carbon目录中将以下3个文件夹拷贝到carbon-repo文件夹中,后续文档中以[carbon]表示能直接运行的carbon的根目录(即编译后的目录)
bin、lib、repository
2 修改数据库配置
2.1 使用内嵌的h2数据库
修改数据源配置文件:
[carbon-repo]\repository\conf\datasources\master-datasources.xml
找到以下内容:
修改为使用绝对地址的路径,使用[carbon]/ repository/database/…
例如修改为:
2.2 使用外部mysql数据库
1、拷贝mysql的jsbc包到以下目录:
[carbon-repo]\repository\components\lib
2、修改数据源配置文件
[carbon-repo]\repository\conf\datasources\master-datasources.xml
将datasource标签内的内容修改为(根据实际情况修改数据库名、账户密码等,在wso2esb、carbon等项目文档中均有详细介绍):
3 入口函数
导入Carbon源码,找到入口函数
项目:org.wso2.carbon.bootstrap
入口类:org.wso2.carbon.bootstrap.Bootstrap
4 引入相关jar包
以下jar都能在编译后的源码中找到:
org.wso2.carbon.server-4.2.0.jar
tomcat-juli-7.0.34.jar
5 设置运行参数
程序参数:RUN
JVM参数:
-Xbootclasspath/a:${CARBON_XBOOTCLASSPATH}
-Xms256m -Xmx1024m -XX:MaxPermSize=256m
-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath="${CARBON_HOME}\repository\logs\heap-dump.hprof"
-Dcom.sun.management.jmxremote
-classpath ${CARBON_CLASSPATH} ${JAVA_OPTS}
-Djava.endorsed.dirs=${JAVA_ENDORSED}
-Dcarbon.registry.root=/
-Dcarbon.home=${CARBON_HOME}
-Dwso2.server.standalone=true
-Djava.command="${JAVA_HOME}\bin\java"
-Djava.opts="${JAVA_OPTS}"
-Djava.io.tmpdir="${CARBON_HOME}\tmp"
-Dcatalina.base="${CARBON_HOME}\lib\tomcat"
-Dwso2.carbon.xml=${CARBON_HOME}\repository\conf\carbon.xml
-Dwso2.registry.xml="${CARBON_HOME}\repository\conf\registry.xml"
-Dwso2.user.mgt.xml="${CARBON_HOME}\repository\conf\user-mgt.xml"
-Dwso2.transports.xml="${CARBON_HOME}\repository\conf\mgt-transports.xml"
-Djava.util.logging.config.file="${CARBON_HOME}\repository\conf\etc\logging-bridge.properties"
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Dcarbon.config.dir.path="${CARBON_HOME}\repository\conf"
-Dcarbon.logs.path="${CARBON_HOME}\repository\logs"
-Dcomponents.repo="${CARBON_HOME}\repository\components"
-Dconf.location="${CARBON_HOME}\repository\conf"
-Dcom.atomikos.icatch.file="${CARBON_HOME}\lib\transactions.properties"
-Dcom.atomikos.icatch.hide_init_file_path="true"
-Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true
-Dcom.sun.jndi.ldap.connect.pool.authentication=simple
-Dcom.sun.jndi.ldap.connect.pool.timeout=3000
-Dorg.terracotta.quartz.skipUpdateCheck=true
-Dcarbon.classpath=${CARBON_CLASSPATH}
-Dfile.encoding=UTF8
JVM参数中使用到的变量(根据实际情况修改变量的值):
CARBON_XBOOTCLASSPATH=
CARBON_HOME=D:\Work\wso2\app\wso2carbon-4.2.0-tomcat
CARBON_CLASSPATH="${CARBON_HOME}\lib;${JAVA_HOME}\lib\tools.jar;${CARBON_HOME}\bin\org.wso2.carbon.bootstrap-4.2.0.jar;${CARBON_HOME}\bin\tcpmon-1.0.jar;${CARBON_HOME}\bin\tomcat-juli-7.0.34.jar;${CARBON_HOME}\lib\commons-lang-2.6.0.wso2v1.jar"
JAVA_ENDORSED="${CARBON_HOME}\lib\endorsed;${JAVA_HOME}\jre\lib\endorsed;${JAVA_HOME}\lib\endorsed"
JAVA_OPTS=
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_43
6 运行
执行org.wso2.carbon.bootstrap.Bootstrap下的main方法,控制台打印出如下信息: