2013-12-10 83 views

回答

4

要做到这一点,你需要:

  1. 每个ServerConnector应该有一个唯一的名称申报通过ServerConnector.setName(String)
  2. 当你定义WebAppContext,声明一组采取命名的虚拟主机语法虚拟主机"@{name}" ,其中{name}与您为连接器选择的相同。 (注:没有 “@” 符号一个虚拟主机是基于主机名传统的虚拟主机)

就像这个...

package jetty.demo; 

import org.eclipse.jetty.server.Server; 
import org.eclipse.jetty.server.ServerConnector; 
import org.eclipse.jetty.server.handler.HandlerCollection; 
import org.eclipse.jetty.webapp.WebAppContext; 

public class ConnectorSpecificContexts 
{ 
    public static void main(String[] args) 
    { 
     Server server = new Server(); 

     ServerConnector connectorA = new ServerConnector(server); 
     connectorA.setPort(8080); 
     connectorA.setName("connA"); // connector name A 
     ServerConnector connectorB = new ServerConnector(server); 
     connectorB.setPort(9090); 
     connectorB.setName("connB"); // connector name B 

     server.addConnector(connectorA); 
     server.addConnector(connectorB); 

     // Basic handler collection 
     HandlerCollection contexts = new HandlerCollection(); 
     server.setHandler(contexts); 

     // WebApp A 
     WebAppContext appA = new WebAppContext(); 
     appA.setContextPath("/a"); 
     appA.setWar("./webapps/webapp-a.war"); 
     appA.setVirtualHosts(new String[]{"@connA"}); // connector name A 
     contexts.addHandler(appA); 

     // WebApp B 
     WebAppContext appB = new WebAppContext(); 
     appB.setContextPath("/b"); 
     appB.setWar("./webapps/webapp-b.war"); 
     appB.setVirtualHosts(new String[]{"@connB"}); // connector name B 
     contexts.addHandler(appB); 

     try 
     { 
      server.start(); // start server thread 
      server.join(); // wait for server thread to end 
     } 
     catch (Throwable t) 
     { 
      t.printStackTrace(System.err); 
     } 
    } 
} 
+0

你只是大雅。解决了我的问题。 :) –

+0

我还有一个问题,我有最多500个应用程序每个应用程序可能共享相同的端口或创建新的端口,当我尝试使用50个应用程序时显示异常,如ThreadPool中的最大线程数不足:max = 200

+0

I修正了上面的问题,但得到新问题, java.lang.OutOfMemoryError:PermGen空间 对于第38个war文件,我应该怎么做才能解决这个问题?请帮帮我。 –

相关问题