最近一段时间在使用JBoss ESB,如果将其部署在JBoss上,先下载jbossesb-4.4.GA.zip文件,将install/deployment.properties-example文件复制更名成deployment.properties,再将其中的属性org.jboss.esb.server.home指向JBoss服务器的路径,如:org.jboss.esb.server.home=D:/jboss-4.2.3.GA,最后在install目录下运行ANT即可,还是很简单的。如果要将其部署在Tomcat上就要破费一番周折。
系统环境:
Java:v1.5.0.12
Tomcat:v5.5.27
JBoss ESB:v4.4GA (jbossesb-4.4.GA.zip,不必下载server版本)
1. 解压jbossesb-4.4.GA.zip文件
2. 将install/deployment.properties-example文件复制更名成deployment.properties
3. 将其中的属性org.jboss.esb.tomcat.home指向Tomcat服务器的路径
例:org.jboss.esb.tomcat.home=D:/apache-tomcat-5.5.27
注意:请不要使用\,要用/表示路径
4. 此时理论上可以执行ANT部署,但是执行ANT时发生编译错误,所以需要修改install/build.xml
原文
<!-- Tomcat war deployment --> <path id="classpath"> <fileset dir="${org.jboss.esb.dist.lib}" includes="**/*jar"/> <fileset dir="${org.jboss.esb.tomcat.lib}" includes="**/*jar"/> </path> <target name="tomcat.compile"> <mkdir dir="build"/> <javac srcdir="./tomcat/src" debug="true" destdir="tomcat/war/WEB-INF/classes/"> <classpath refid="classpath"/> </javac> </target>
修改后
<!-- Tomcat war deployment --> <path id="classpath"> <fileset dir="${org.jboss.esb.dist.lib}" includes="**/*jar"/> <fileset dir="${org.jboss.esb.tomcat.lib}" includes="**/*jar"/> </path> <target name="tomcat.compile"> <mkdir dir="build"/> <javac srcdir="./tomcat/src" debug="true" destdir="tomcat/war/WEB-INF/classes/"> <fileset dir="${org.jboss.esb.dist.lib}" includes="**/*jar"/> <fileset dir="${org.jboss.esb.tomcat.lib}" includes="**/*jar"/> </javac> </target>
我没有看出原文有什么语法问题,但是就是编译报错,如果有人知道原因,请指点。
修改\install\tomcat\src\org\jboss\soa\esb\servlet\ConfigListener.java文件,这是JBoss的一个Bug。
在方法contextInitialized的第一句之前加上
System.setProperty("javax.xml.registry.ConnectionFactoryClass", "org.apache.ws.scout.registry.ConnectionFactoryImpl");
修改后如下
public void contextInitialized(final ServletContextEvent servletContextEvent) { System.setProperty("javax.xml.registry.ConnectionFactoryClass", "org.apache.ws.scout.registry.ConnectionFactoryImpl"); final ServletContext servletContext = servletContextEvent.getServletContext() ; servletContext.log("Initialising ESB Configuration Controller") ; final String catalinaHome = System.getProperty("catalina.home") ;
如果不加这句,tomcat启动会报错。
5. 在install目录下执行命令行 ant tomcat
注意:在此步骤之前要先设置好ANT_HOME以及将ANT_HOME/bin添加到PATH中
6. 发布完成,检查tomcat服务器webapps目录下,出现jbossesb的目录,说明部署成功
7. 创建一个数据库实例,oracle或者是MySql都可以,其他的也行。
8. 找到/webapps/jbossesb/WEB-INF/lib/juddi-2.0rc5.jar,解压后找到/juddi-sql/{database}/create_database.sql,将文件中的所有${prefix}删除,然后在数据库中执行,创建所有表。然后在原先jboss esb的下载包中找到 lib\jbossesb.sar\juddi-sql\{database}\import.sql,将文件中的所有${prefix}删除,然后在数据库中执行
9. 修改/webapps/jbossesb/META-INF/context.xml文件中的数据库连接参数,只修改名为jdbc/juddiDB的Resource,另一个jdbc/JBossesbDS直接注释掉
修改后文件
<Resource name="jdbc/juddiDB" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="esb" password="esb" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@192.168.101.148:1521:orcl" />
10. 最后一步,添加jar包,但是有很多要添加,在jboss esb的下载包中都能找到,列表如下
commons-codec-1.3.jar
commons-httpclient-3.1.jar
commons-io-1.3.jar
commons-lang-2.1.jar
commons-logging-1.1.jar
commons-net-2.0.0-652071.jar
commons-ssl-0.3.4.jar
javassist-3.6.0.GA.jar
jboss-aop-jdk50-1.5.6.GA.jar
jboss-cache-1.2.4.SP2.jar
jbossall-client-4.2.2.GA.jar
jbossesb-config-model-1.0.1.jar
jbossesb-rosetta.jar
jbossts-common.jar
jgroups-all.jar
jsr173_1.0_ri.jar
juddi-2.0rc5.jar
juddi-client-2.0rc5.jar
log4j-1.2.14.jar
quartz-1.5.2.jar
scout-1.0rc1.jar
stax-api-1.0.1.jar
trove.jar
wstx-asl-3.2.0.jar
xbean-2.2.0.jar
xercesImpl-2.8.0.jar
xmlpublic-2.2.0.jar
xstream-1.2.2.jar
注意:将数据库的jdbc包放到tomcat的common/lib下
11. 启动Tomcat