2014-09-11 2 views
3

나는 다음과 같은 간단한 내장 부두 9 서버가 : 모두 https://foo.bar.com/https://baz.bar.com/부두 : 프로그래밍 방식으로 여러 가상 호스트를 구성하는 방법은 무엇입니까?

final Server server = new Server(); 
    final ServerConnector connector = new ServerConnector(server); 
    connector.setPort(443); 
    server.setConnectors(new Connector[] { connector }); 
    server.setHandler(new FooBarHandler()); 
    server.start(); 
    server.join(); 

요청이 코드에 의해 처리됩니다. foo.bar.com에

  • 요청이
  • 요청 baz.bar.com에 FooBarHandler로 이동
  • 이 설정의 모든 프로그래밍 할 필요가 BazBarHandler하지 않는 이동 : 나는되도록 변경하려면 구성 파일.

나는 "running multiple java jetty instances with same port (80)"와 http://wiki.eclipse.org/Jetty/Howto/Configure_Virtual_Hosts#Configuring_Virtual_Hosts 을 잘 알고있어하지만 지금 프로그래밍 방식으로 얻을 수없는 것.

답변

2

먼저 xml 기반 구성 에서처럼 virtualHost 속성은 org.eclipse.jetty.server.handler.ContextHandler.setVirtualHosts(String[] vhosts)입니다. 그래서 내 손님은 직접적인 방법은 다음과 같습니다.

ContextHandler fooContextHandler = new ContextHandler("/"); 
fooContextHandler.setVirtualHosts(new String[]{"foo"}); 
fooContextHandler.setHandler(new FooBarHandler()); 

ContextHandler bazContextHandler = new ContextHandler("/"); 
bazContextHandler.setVirtualHosts(new String[]{"baz"}); 
bazContextHandler.setHandler(new BazBarHandler()); 

HandlerCollection handler = new HandlerCollection(); 
handler.addHandler(fooContextHandler); 
handler.addHandler(bazContextHandler); 

server.setHandler(handler);