Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 我如何拥有sbt';s Jetty是否使用本地域名?_Scala_Jetty_Lift_Sbt - Fatal编程技术网

Scala 我如何拥有sbt';s Jetty是否使用本地域名?

Scala 我如何拥有sbt';s Jetty是否使用本地域名?,scala,jetty,lift,sbt,Scala,Jetty,Lift,Sbt,我想让sbt>~Jetty发布的Jetty版本收听my.name.local,我在/etc/hosts中将其设置为127.0.0.1。在sbt内更改Jetty的设置是必要的 以下是我为我的项目准备的: import sbt._ class LiftProject(info: ProjectInfo) extends DefaultWebProject(info) { // ... val jetty = "org.eclipse.jetty" % "jetty-webapp" % "

我想让
sbt>~Jetty
发布的Jetty版本收听
my.name.local
,我在
/etc/hosts
中将其设置为
127.0.0.1
。在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>
    }
  }
}
导入sbt_
类LiftProject(info:ProjectInfo)扩展了DefaultWebProject(info){
// ...
val jetty=“org.eclipse.jetty”%”jetty webapp“%”7.3.0.v20110203“%”测试
override lazy val jettyInstance=新JettyRunner(customJettyConfiguration)
def customJettyConfiguration={
val myLog=log
val myJettyClasspath=jettyClasspath
val myScanDirectories=scanDirectories
val myScanInterval=扫描间隔
新的CustomJettyConfiguration{
def classpath=jettyRunClasspath
def jettyClasspath=myJettyClasspath
def war=jettyWebappPath
def contextPath=jettyContextPath
def classpathName=“测试”
def parentLoader=buildScalaInstance.loader
def scanDirectories=Path.getFiles(myScanDirectories).toSeq
def scanInterval=myScanInterval
def端口=jettyPort
def log=myLog
覆盖def JettyConfiguration XML=
我的名字,本地人
}
}
}

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

我发布得太快了。我需要做的就是覆盖jettyPort:

override def jettyPort = 80

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

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
sudobash-c“iptables保存>/etc/iptables.rules”
回声“#!/bin/sh
iptables还原/etc/network/if-pre-up.d/iptablesload
回声“#!/bin/sh
iptables保存-c>/etc/iptables.rules
如果[-f/etc/iptables.downlaules];则
iptables还原/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

(请参阅)

很好,这比我的解决方案要好。因为我使用的是OS X,所以看起来这个程序名为
ipfw
。。我在这里找到了答案: