2

現在、Eclipse Juno と Tomcat 7 で、マルチメディア ファイル (画像、その他のサブページなど) を保持するための「仮想フォルダー」が必要なプロジェクトを達成しようとしています。URI ベースの構文 (/Content/Image 内の画像にアクセスしたいとしましょう) でファイル パスを提供する方法が既にいくつかあり、その URI を C:\Users\MyUser\Content\image にマップしたいと考えています (Iプロジェクトを Windows システムにバインドしていることは認識していますが、この問題の後半で回避策を示します)。

現在、私のプロジェクトは pj と呼ばれ、Eclipse は Eclipse の tomcat インスタンス内に pj というコンテキストを作成しました (これは非常に理にかなっています)。プロジェクトをテストするとき

> http://localhost:8080/pj

それは正常に動作します (そして、動作するはずです)。

しかし、ここに問題があります。今まで、Tomcat で URI を作成して Content/Image パスに実際に移動し、コンテンツを取得してページに追加する方法を見つけられませんでした (Web にコンテンツを保持するには不健康な場所を読んでください)。 -INF フォルダーなので、実際に正しい方法で実行しようとしています)。また、この目的を達成するには、コンテキストで次のようなことをしなければならないことをどこかで読んでください。

<context docbase="d:/images" path="/Content/Images"></context>

また、Tomcat で URI を解決するには、その目標を達成するためにコンテキストを使用する必要があることもお読みください (URI の意味とファイル システム内の場所との間の橋渡しを行います)。それでも、Tomcat 4以降(間違っていない場合)、server.xmlをいじることは想定されていないため、これを正しく行う別の試みで、表示されているコードでcontext.xml内のMETA-INFにコンテキストを実際に追加しようとします前。しかし、ここに別の問題があります。http://tomcat.apache.org/tomcat-7.0-doc/config/context.htmlで述べたように、パスタグを追加すると tomcat が狂ってしまうようです。

だから私はここで本当に束縛されています....私が聞きたいのは:

  1. マルチメディアコンテンツを取得するためにWebプロジェクトに外部フォルダーを実際に追加する最良の方法は何ですか?
  2. Eclipse内で動作させるにはどうすればよいですか?

PS: プロジェクト内のメソッドの 1 つで、getLoader メソッドを使用して InputStream (Java.io InputStream NOT Corba) を返し、null を返す (つまり、見つからない) ため、これを求めています。

編集: conext を手動で挿入して実際に server.xml をいじろうとしましたが、うまくいきませんでした。サーバー上で相対 URI を挿入しても機能しません (内部に有効なファイルがある local:8080/Content/Image) または私の中に入るメインプロジェクトとgetstreamを実行しても機能しません

4

2 に答える 2

2

いじったり、微調整したりした後、この状況の回避策を思いつきました。私が述べたように、外部フォルダにすべてのマルチメディアおよび/またはページを必要に応じて保持することは実際には可能です。そのソリューションへの参照の 1 つは、http: //harkiran-howtos.blogspot.pt/2009/08/map-external-directory-into-your.htmlです。

それでも、何らかの理由で、これを Eclipse 内で動作させることはまったく不可能です (または、何かに失敗して動作させることができませんでした)。しかし、これには別の解決策があります。実際には、その目的のためのフォルダーを Web アプリの内側に配置することもできますが、WEB-INF および META-INF フォルダーの外側に配置することもできます。つまり、Web アプリの ROOT にあるフォルダーです。そのフォルダー内のこれらのファイルにアクセスするには、ServletContext と呼ばれるものを使用できます。そのコンテキストには、実際には、Web アプリのフォルダー構造へのすべての可能な参照が含まれています。与えられたコンテキストでこれらのファイルにアクセスするには、サーブレット コンテキストから getResourceAsStream を使用する必要があります (または、必要に応じて getRealPath を使用するか、Web アプリが Tomcat 内で展開されることを保証できる場合)。言い換えれば、

PS: ServletContext を指摘する Ty wds

于 2012-09-14T17:38:55.787 に答える
0

ハルキランのソリューションを機能させましたが、あまり良いソリューションではありません。

人々は getRealPath の使用を思いとどまらせます。外部フォルダーのマッピングは、多くの理由で実行するのに適しています。

ただし、Eclipse で実行するには、展開フォルダーに移動する必要があります。私の場合、Eclipseワークスペース内の隠しフォルダーです。

ワークスペース/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/

そのフォルダー内に、harkiran のソリューションからディレクトリ構造とファイルを作成する必要があります。Eclipseでサーバーを削除して再作成するまで、私は働きます。

その後、再度作成する必要があります。

于 2015-03-21T16:46:06.893 に答える