2

我想sbt> ~jetty听听由 Jetty 启动的版本my.name.local,我已经设置127.0.0.1/etc/hosts. 似乎可以从 sbt 中更改 Jetty 的设置。

这是我的项目:

import sbt._

class LiftProject(info: ProjectInfo) extends DefaultWebProject(info) {
  // ...

  val jetty = "org.eclipse.jetty" % "jetty-webapp" % "7.3.0.v20110203" % "test"

  override lazy val jettyInstance = new JettyRunner(customJettyConfiguration) 

  def customJettyConfiguration = { 
    val myLog = log 
    val myJettyClasspath = jettyClasspath 
    val myScanDirectories = scanDirectories
    val myScanInterval = scanInterval

    new CustomJettyConfiguration { 
      def classpath = jettyRunClasspath
      def jettyClasspath = myJettyClasspath
      def war = jettyWebappPath
      def contextPath = jettyContextPath
      def classpathName = "test"
      def parentLoader = buildScalaInstance.loader
      def scanDirectories = Path.getFiles(myScanDirectories).toSeq
      def scanInterval = myScanInterval
      def port = jettyPort
      def log = myLog      
      override def jettyConfigurationXML = 
        <Configure class="org.eclipse.jetty.webapp.WebAppContext">
          <Set name="virtualHosts">
            <Array type="java.lang.String">
              <Item>my.name.local</Item>
            </Array>
          </Set>
        </Configure>
    }
  }
}

虽然它似乎毫无怨言地启动了,my.name.local但据我所知,访问并没有击中 Jetty。

4

2 回答 2

3

我个人更喜欢在 Linux 上使用 iptables 将端口 80 重新路由到 8080,而不是以 root 身份运行 sbt(危险):

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

仅在下次重新启动之前有效。为了使设置在 Ubuntu 10.04 上保持不变,我使用:

sudo bash -c "iptables-save > /etc/iptables.rules"
echo "#!/bin/sh
iptables-restore < /etc/iptables.rules
exit 0
" > /etc/network/if-pre-up.d/iptablesload
echo "#!/bin/sh
iptables-save -c > /etc/iptables.rules
if [ -f /etc/iptables.downrules ]; then
   iptables-restore < /etc/iptables.downrules
fi
exit 0
" > /etc/network/if-post-down.d/iptablessave
chmod +x /etc/network/if-post-down.d/iptablessave
chmod +x /etc/network/if-pre-up.d/iptablesload

(参见这个 Ubuntu iptables wiki

于 2011-03-29T09:30:14.987 回答
1

我发的太早了。我需要做的就是覆盖jettyPort

override def jettyPort = 80

sbt通过sudo.

于 2011-03-01T11:47:40.373 回答