JBoss部署同一应用到不同虚拟主机发生class冲突(ouo2)

06-03-20 ouo

由于开发的需要,我在Jboss把我们的mis系统部署了两次,基本的步骤如下
1。SQLServer建立两个相同的数据库mis,mis01
2。在\server\default\deploy下建立两个数据源文件mssql-ds.xml,mis01_mssql-ds.xml
里面配制了不同的jndi-name。启动的时候窗口提示2个数据源都加载了。
3。修改xp下的hosts文件,把mis,和mis01指向107.0.0.1
4。\server\default\deploy部署了2个应用的目录mis,mis01
5。修改每个应用里面的jboss-web.xml
<jboss-web>
<context-root>/</context-root>
<virtual-host>mis</virtual-host>
</jboss-web>
另外一个
<jboss-web>
<context-root>/</context-root>
<virtual-host>mis01</virtual-host>
</jboss-web>
6。修改数据库连接的类DBConnection.class,指向不同的jndi数据源

结果通过http://mis:8080和http://mis01:8080可以访问2个不同的应用

但是似乎JBoss Load的都是一个应用里面的DBConnection.class,结果2个应用都使用了同一个数据源,修改也都在一个数据库里面发生了,这个问题是怎么回事呢?如何解决呢?

谢谢各位

ouo
2006-03-20 09:03

不好意思,中间的代码没有弄好
5。修改每个应用里面的jboss-web.xml

  <jboss-web>
          <context-root>/</context-root>
        <virtual-host>mis</virtual-host> 
  </jboss-web>
另外一个
  <jboss-web>
          <context-root>/</context-root>
        <virtual-host>mis01</virtual-host> 
  </jboss-web>

ouo
2006-03-20 11:07

经过javaeye的BirdGu的帮助,问题解决了

是 ClassLoader的问题。JBoss 缺省是所有的 web application共用一个Class loader的。需要改tomcat的 配置。
以jboss 4.0为例,修改jbossweb-tomcat55.war/meta-inf/jboss-service.xml文件:
把Java2ClassLoadingCompliance设为false,原为true。
把UseJBossWebLoader设为false,原为true。

还是要多看看jboss的设置

banq
2006-03-23 09:49

这个解决方案只是修改Web的classLoader,而不是JBoss本身的classloader,虽然能够解决问题,但是不是根本解决,提供一个JBoss classloader设置参考:

http://wiki.jboss.org/wiki/Wiki.jsp?page=ClassLoadingConfiguration

xuanhai
2006-04-30 11:08

我使用的是jboss2.25,为什么修改了jboss-service.xml的两个参数以后,应用都启动不起来了?

xuanhai
2006-04-30 11:39

错了,是jboss3.25