更新时间:2023-11-22 18:37:16
要实现此目的,您需要:
To accomplish this, you need:
ServerConnector
应具有通过ServerConnector.setName(String)
"@{name}"
的虚拟主机,其中{name}
与您为连接器选择的相同. (注意:没有"@"符号的虚拟主机是基于主机名的传统虚拟主机) ServerConnector
should have a unique name declared via ServerConnector.setName(String)
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);
}
}
}