码头服务器9.1多个嵌入式端口和同一服务器实例中的应用程序 [英] jetty server 9.1 multiple embeded ports and application in same server instance

查看:84
本文介绍了码头服务器9.1多个嵌入式端口和同一服务器实例中的应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我应该使用一个Server对象,并且需要打开多个端口和多个应用程序(WAR文件). 例如,一个服务器对象, 8080除战 8081 subraction.war 等

I should use one Server object, and need to open multiple ports and multiple application(WAR files). Ex, one server object, 8080 addition.war 8081 subraction.war etc.

我正在使用Jetty服务器9.1.0 我该怎么办?

I'm using Jetty server 9.1.0 How can I do this?

推荐答案

要实现此目的,您需要:

To accomplish this, you need:

  1. 每个 ServerConnector 应具有通过ServerConnector.setName(String)
  2. 声明的唯一名称
  3. 定义 ,声明一组采用命名虚拟主机语法"@{name}"的虚拟主机,其中{name}与您为连接器选择的相同. (注意:没有"@"符号的虚拟主机是基于主机名的传统虚拟主机)
  1. Each ServerConnector should have a unique name declared via ServerConnector.setName(String)
  2. When you define your WebAppContext, declare a set of virtual hosts that take a named virtual host syntax "@{name}", where the {name} is the same one you chose for the connector. (Note: A virtualhost without the "@" sign is a traditional virtualhost based on hostnames)

喜欢这个...

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);
        }
    }
}

这篇关于码头服务器9.1多个嵌入式端口和同一服务器实例中的应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆