6

vaadin アプリケーションを jetty にデプロイしようとしています。

しかし、を使用してjettyを実行start.jarすると、のサブフォルダーから始まります

C:\Users\USERNAME\AppData\Local\Temp\jetty-0.0.0.0-8080-Application.war-....

に入れましたがC:\Program Files\MyApp、保存するファイルを含め、常にそこで実行されます。

jetty が存在する場所から開始し、すべてのファイルをこのベースに対して相対的に持つようにするにはどうすればよいですか?

私は Windows 7 を使用しています。最新のスタンドアロンの jetty パッケージについて話しているのです。

どんなアイデアでも大歓迎です。

4

1 に答える 1

12

Jetty には作業ディレクトリが必要です。

作業ディレクトリを見つけるための検索順序は次のとおりです。

  1. WebAppContext に一時ディレクトリが指定されている場合は、それを使用します。
  2. ServletContext にjavax.servlet.context.tempdir属性が設定されていて、ディレクトリが存在する場合はそれを使用します。
  3. ${jetty.base}/workディレクトリが存在する場合は、それを使用します(Jetty 9.1+ でのみ有効)
  4. ${jetty.home}/workディレクトリが存在する 場合は、それを使用します。
    • 注: Jetty 9.1 以降、このテストは現在${jetty.base}/work
  5. ServletContext にorg.eclipse.jetty.webapp.basetempdir属性が設定されていて、ディレクトリが存在する場合は、それを使用します。
  6. 使っSystem.getProperty("java.io.tmpdir")て使ってください。

最も簡単なのは#3または#4のいずれかです。またはのwork下にディレクトリを作成し、Jetty を再起動します。${jetty.home}${jetty.base}

次に簡単なのは#6java.io.tmpdirで、 Jetty の JVM を起動するときに独自に指定します。

[jetty-distribution]$ java -Djava.io.tmpdir=/var/web/work -jar start.jar

残りは、デプロイされた webapp のコンテキストを構成する必要があります。

Jetty 7 または Jetty 8 の例:

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
                           "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath"><Property name="foo"/></Set>
  <Set name="war">/var/web/webapps/foo.war</Set>
  <Set name="tempDirectory">/var/web/work/foo</Set>
</Configure>

Jetty 9 の例 (dtd の変更のみ):

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
                           "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath"><Property name="foo"/></Set>
  <Set name="war">/var/web/webapps/foo.war</Set>
  <Set name="tempDirectory">/var/web/work/foo</Set>
</Configure>
于 2013-10-07T19:17:18.177 に答える