0

私はTomcat7にSpring3アプリをデプロイしています。OXM unmarshallerを使用しているので、次のようにStreamSourceを作成する必要があります。

unmarshaller.unmarshal(new StreamSource(new FileInputStream(dbSetupPath)))

このようにdbSetupPathの値を設定すると、単体テストで機能します

@Value("src/main/resources/db-setup.xml")
String dbSetupPath;

ただし、Tomcatにデプロイすると、FileNotFoundExceptionが発生します。テストに合格し、Tomcatが機能し続ける正しいパスは何ですか?私はexploded:waratmをデプロイしています。

4

4 に答える 4

0

したがって、私の解決策は、次のような単純な文字列ではなく、org.springframework.core.io.Resourceに値を挿入することでした。

@Value("classpath:/db/db-setup.xml")
Resource dbConfig;

次に、基になるファイルにアクセスして、マーシャラーに提供しました。

unmarshaller.unmarshal(new StreamSource(dbConfig.getFile());
于 2012-07-26T10:05:25.073 に答える
0

db-setup.xml を画像と同じように配置します

ここに画像の説明を入力

これを変更します

@Value("db-setup.xml")
String dbSetupPath;
于 2012-07-18T11:00:22.193 に答える
0

tomcat にデプロイすると、すべてのリソース フォルダー ファイルが WEB-INF/classes フォルダーの .war ファイルに入ります。

あなたは試す必要があります

@Value("classpath:/db-setup.xml")

したがって、Tomcat はクラスパスの db-setup.xml をチェックします。

より適切な詳細については、次を参照してください。

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/new-in-3.html

セクション : 2.5.3.1 Java ベースの Bean メタデータ

于 2012-07-18T10:47:22.300 に答える
0

そのようなパスを指定できると思います:

${webAppRoot}WEB-INF/db-setup.xml

db-setup.xml を WEB-INF フォルダーに配置します (またはサブフォルダーを作成します)。

また、このアプローチを正しく機能させるには、web.xml で次のようなパラメーターを指定する必要があります。

<context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>webAppRoot</param-value>
</context-param>

Spring は、Web アプリのルート フォルダーへの実際のパスをこのパラメーターに自動的に挿入します。

これは、私の場合はロギングのために機能しているため、あなたの場合でも機能すると思います。

これはwebAppRootKeyに関する議論です

于 2012-07-18T13:09:32.147 に答える