http://www.javayou.com (收藏,设为首页)
当你不能再拥有时,你唯一能做的,就是让自己不要忘记 (手机请访问 http://3g.dlog.cn/javayou)

在同一台机器上运行多个Resin实例

2007年9月9日(Sunday) 08点25分 作者: 刘冬 天气: 心情: 一般
本文特指 Resin 3.1.x 版本,这个版本跟以前的有很大的不同,特别是在配置上。

昨晚经过一番苦思量以及认真阅读Resin的官方文档,通过实践终于在同一台电脑上运行了两个Resin实例,多于两个Resin同此理。尽管此方法不一定是Resin习惯的做法,但至少可以运行了。

通过在给Resin配置中的server节点指定一个id属性值,例如此值为s1,那么我们需要在启动Resin的命令行中增加参数 -server s1,这就是Resin的做法。假设在一台机器上启动了两个 Resin 实例,那么实际上系统会有三个Java进程,其中一个是Resin的监控、管理进程,另外两个当然是独立的两个不同Resin实例。看看我的一个简单配置 吧:

<resin xmlns="http://caucho.com/ns/resin"
       xmlns:resin="http://caucho.com/ns/resin/core">
 
  <log name="" level="info" path="stdout:"/>
  <resin:import path="${resin.home}/conf/app-default.xml"/>
 
  <cluster id="dlog">
    <server-default>
      <jvm-arg>-Xmx2048m</jvm-arg>
      <jvm-arg>-Xss1m</jvm-arg>
      <jvm-arg>-server</jvm-arg>
    </sever-default>
    
    <server id="s1" port="6801">
      <http id="" port="8081"/>
    </server>
    <server id="s2" port="6802">
      <http id="" port="8082"/>
    </server>
 
    <host id="" root-directory=".">
      <web-app id="/" root-directory="/opt/dlog" redeploy-mode='manual'/>
    </host>
  </cluster>
</resin>


上面这个配置中,我定义了两个server分别运行在 8081 和 8082 端口上,它们共享 server-default 中的配置,同时这两个server都配置了一个web应用是 /opt/dlog 这个目录。当然,如果你在一个机器上运行多个 Resin 是为了运行不同的应用,那你可以将 host 节点直接写在对应的 http 节点下,例如:

<server id="s1">
   <http id="" port="8082">
      <host id="" root-directory=".">
        <web-app id="/" root-directory="/opt/dlog" redeploy-mode='manual'/>
      </host>
   </http>
</server>


一旦我们定义好配置了,下面就要启动这两个 Resin 的实例了,在 Linux 下可以这样启动这两个 Resin 实例:

$/opt/resin1/bin/httpd.sh -server s1 start
$/opt/resin1/bin/httpd.sh -server s2 start


如果你想让Resin在系统启动的时候自动运行,那必须修改一下 httpd.sh 写死-server 的参数。

不知道你明白了没,Resin 就是这样一种架构,要跑多个 Resin 并不需要拷贝多份 Resin 的文件。全部通过配置和命令行来操作。
标签: Resin 
评论者: lizongbo 2007-9-9 20:52 (Sunday)

 

Tomcat也可以通过命令行指定配置文件的方式来启动多个,而不需要复制n份tomcat。

例如:

E:\Java\APACHE~1.14\bin>startup -config=E:\Java\apache-tomcat-6.0.14\conf\server
80.xml

E:\Java\APACHE~1.14\bin>catalina run -config=E:\Java\apache-tomcat-6.0.14\conf\s
erver80.xml

评论者: 刘冬 2007-9-10 20:04 (Monday)
问题来了!

当我制作两个脚本扔到 /etc/rc.d/init.d 目录下的时候,单独使用

service resin1 start
service resin2 start


时是可以同事启动两个Resin服务的,但是重启机器让服务自动加载的时候,第二个Resin就起不来,报的错误是:

java.net.BindException: Address already in use
 Can't bind to /127.0.0.1:6600.
 Check for another server listening to that port.


faint,这又是怎么回事呢?到底自动启动跟手工启动有何区别?
评论者: 2hei 2008-1-22 15:25 (Tuesday)
java.lang.IllegalStateException: Can't connect to ResinWatchdogManager.
java.net.ConnectException: http://127.0.0.1:6600/watchdog: Connection refused

我的resin3.1.x 经常报出这样的错误,貌似watchdog的问题。

姓名: 
邮箱:  {可选}
网址:  {可选} 此评论只有我和写日记的人查阅
校验码: ... <我看不清楚>
网记为您提供手机和互联网同步的个人主页,带给你不一样的体验