run-Jetty-run Eclipse插件:仅允许环回连接

时间:2013-01-28 05:26:19

标签: java eclipse security eclipse-plugin jetty

我已为Eclipse安装了Run Jetty Run插件。

关注Getting StartedUser Guide我能够创建新的Java项目,创建web文件夹,然后在其中创建WEB-INFWEB-INF是一个空文件夹,webindex.html

现在我想仅通过环回接口启用连接。我的猜测是可通过WEB-INF\web.xml文件进行配置,但我无法找到有关Run Jetty Run使用的文件格式的任何文档。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

没有简单的方法可以做到这一点!

In the runjettyrun's source code (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)

答案 1 :(得分:0)

我使用额外的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>

在这种方法中,插件配置屏幕(eclipse运行配置)中的“端口”,“SSL端口”,“密钥库”,“密码”和“密钥密码”不会产生任何影响,因为这些配置将是在附加的jetty.xml文件上定义。