run-Jetty-run Eclipse plugin: разрешить только петлевые соединения
Я установил Run Jetty Run
Плагин для Eclipse.
После Приступая к работе и Руководства пользователя я смог выполнить работу по созданию нового проекта Java, создав web
папка, а затем WEB-INF
внутри него. WEB-INF
это пустая папка и web
имеет index.html
,
Теперь я хочу разрешить подключения только через петлевой интерфейс. Я думаю, что это настраивается через WEB-INF\web.xml
файл, но я не могу найти документацию об этом формате файла, используемого Run Jetty Run
,
Как я могу это сделать?
2 ответа
Нет простого способа сделать это!
В исходном коде runjettyrun (runjettyrun.Bootstrap.java):
private static void initConnnector(Server server, Configs configObj) {
SelectChannelConnector connector = new SelectChannelConnector();
//Don't set any host , or the port detection will failed. -_-#
//connector.setHost("127.0.0.1");
connector.setPort(configObj.getPort());
if (configObj.getEnablessl() && configObj.getSslport() != null)
connector.setConfidentialPort(configObj.getSslport());
server.addConnector(connector);
if (configObj.getEnablessl() && configObj.getSslport() != null)
initSSL(server, configObj.getSslport(), configObj.getKeystore(),
configObj.getPassword(), configObj.getKeyPassword(),
configObj.getNeedClientAuth());
}
Плагину нужно проверять используемый порт или нет.
Код 'setHost' был прокомментирован автором плагина (возможно, вы можете взломать это).
Также нет способа установить хост в интерфейсе "Соединитель":
org.eclipse.jetty.server.Connector.setHost(String)
Я получил взломать это с помощью дополнительного jetty.xml. В этом файле jetty.xml я заменил оригинальные соединители (созданные плагином) на два "новых" соединителя, настроенных в соответствии с моими потребностями:
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Call name="setConnectors">
<Arg>
<Array type="org.eclipse.jetty.server.Connector">
<!-- HTTP Connector -->
<Item>
<New class="org.eclipse.jetty.server.ServerConnector">
<Arg name="server"><Ref id="Server" /></Arg>
<Set name="host">127.0.0.1</Set>
<Set name="port">80</Set>
</New>
</Item>
<!-- HTTPS Connector (Optional) -->
<Item>
<New class="org.eclipse.jetty.server.ServerConnector">
<Arg name="server"><Ref id="Server" /></Arg>
<Arg name="sslContextFactory">
<New class="org.eclipse.jetty.util.ssl.SslContextFactory">
<Set name="keyStorePath">C:/jdk1.7.0_51/jre/lib/security/cacerts</Set>
<Set name="keyStorePassword">changeit</Set>
<Set name="keyManagerPassword">changeit</Set>
</New>
</Arg>
<Set name="host">127.0.0.1</Set>
<Set name="port">8444</Set>
</New>
</Item>
</Array>
</Arg>
</Call>
</Configure>
При таком подходе "Порт", "Порт SSL", "Хранилище ключей", "Пароль" и "Пароль ключа" из экрана конфигурации плагина (конфигурации запуска затмения) не будут действовать, так как эти настройки будут определены в дополнительных файл jetty.xml.