2012-02-23 11 views
1

そこには多くの似たような質問がありますが、それが役に立たなかったことは知っています。 Tomcatサーバー上でGWTアプリケーションを実行しています。これはデータベース接続用のプロパティファイルをロードしています。TomcatのGWTにプロパティファイルをロード

private static final String DB_CONF = "com/x/monitorui/server/configuration.properties"; 
Properties properties = new Properties(); 
properties.load(DatabaseConnection.class.getClass().getResourceAsStream(DB_CONF)); 

をこれは桟橋上でローカルに開発しながら正常に動作しますが、Tomcat上に配備ないとき:

プロパティファイルをロードするためのコードは次のようになります。それはリソースを見つけることができないようです。 ファイル自体はwar/WEB-INF/classes/com/x/monitorui/serverにあり、ロードしようとしているクラスは同じパッケージにあります。

答えて

0

"Packager.class"を同じディレクトリのクラスとして使用してもほぼ同じです。プロパティファイルは、その後、あなたが「getResourceAsStream(..)」を呼び出すために使用するクラスと同じディレクトリにあるあなたの場合

final ClassPool pool = ClassPool.getDefault(); 
final Class<?> baseClass = Packager.class; 
pool.insertClassPath(new ClassClassPath(baseClass)); 

final URL url = pool.find(baseClass.getName()); 

String pathToBaseClass = url.toURI().getPath(); 
String baseDir = pathToBaseClass.substring(0, pathToBaseClass.indexOf("com") - 1); 
1

:ここでの考え方は、Tomcat上で動作クラスパスを介してパスを見つけることですファイルの絶対パスを使わずに、ファイルの名前だけが必要です。たとえば 、あなたが持っていると仮定:

// notice that your build should copy this from the source directory to your /WEB-INF/classes/.... directory automatically so you can do a clean build 
com/x/monitorui/server/configuration.properties 

と同じディレクトリにあるクラスを、すなわち。パッケージには:

com.x.monitorui.server.DatabaseConnection 

その後、あなたは、単にちなみに

Properties properties = new Properties(); 
properties.load(DatabaseConnection.class.getResourceAsStream("configuration.properties")); 
+0

を呼び出すことができ、私は同様にTomcatを使用し、これが正常に動作します、私は、これは、任意のサーバーで動作するはずだと思うでしょう。 – Renato

関連する問題