gpt4 book ai didi

java - jetty 服务器 9.1 同一服务器实例中的多个嵌入端口和应用程序

转载 作者:行者123 更新时间:2023-12-01 18:39:36 25 4
gpt4 key购买 nike

我应该使用一个服务器对象,并且需要打开多个端口和多个应用程序(WAR 文件)。例如,一个服务器对象,8080 加法.war8081 减法.war等等

我使用的是 Jetty 服务器 9.1.0我怎样才能做到这一点?

最佳答案

要实现此目的,您需要:

  1. 每个 ServerConnector应该有一个通过 ServerConnector.setName(String)
  2. 声明的唯一名称
  3. 当您定义 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);
}
}
}

关于java - jetty 服务器 9.1 同一服务器实例中的多个嵌入端口和应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20490845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com