在不同端口上的Jetty中分离Web应用程序

时间:2010-01-25 12:12:10

标签: java jetty

我需要以下设置。

  • Jetty必须收听端口 8080 9090
  • 每个端口必须有自己独立的应用程序(即 webapp1 8080 上运行, webapp2 9090 上运行) 。网络应用程序只能在指定的端口上访问(即 webapp2 不得在端口 8080 上提供。)

我已成功将额外的连接器添加到etc / jetty.xml,因此它现在使用端口8080和9090.我还添加了额外的处理程序,所以它现在选择了webaps来自多个目录(dir1 / webapp1和dir2 / webapp2)。

我的问题是:jetty将每个处理程序找到的所有webapps部署到每个连接器(即每个端口),因此 webapp1 webapp2 都可以在端口 8080 和 9090

我需要一种方法来确保 handler1 (处理dir1 / webapp1)仅指定为 connector1 (侦听端口8080)以及 connector2 < / strong>仅在端口 9090 上选择 handler2 (处理dir2 / webapp2)。

有没有办法实现这个目标?

3 个答案:

答案 0 :(得分:11)

Jetty documentation shows two methods.

第一个配置两个独立的服务器实例,并通过在命令行上提供两个配置文件名来启动它们。

第二种方法使用两个连接器的名称,每个应用程序上下文命名它将使用的连接器。

答案 1 :(得分:2)

您基本上将在同一个JVM中创建两个实例。

创建两个.xml文件,并在每个.xml文件中指定:

...
<Set name="port">XXXX</Set>
...
<New id="webAppX"  class="org.mortbay.jetty.webapp.WebAppContext">      
  <Arg><Ref id="Contexts"/></Arg>
  <Arg><SystemProperty name="jetty.home"/>/webapps/X</Arg>
  <Arg>/webappX</Arg>
  ...
</New>
...

[确保替换相应xml文件中的X值。]

在同一个JVM中使用两个实例启动Jetty,如下所示:

java -jar start.jar webapp1.xml webapp2.xml

答案 2 :(得分:0)

如果要分离应用程序,为什么不使用两个Jetty安装?