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.

Другие вопросы по тегам