在Tomcat上的GWT中加载属性文件

时间:2012-02-23 10:00:18

标签: java gwt tomcat properties

我知道有很多类似的问题,但没有一个有帮助。 我们在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));

这在Jetty本地开发时工作正常,但在Tomcat上部署时则不行。它似乎找不到资源。 文件本身位于war/WEB-INF/classes/com/x/monitorui/server,尝试加载它的类位于同一个包中。

2 个答案:

答案 0 :(得分:1)

如果属性文件与用于调用“getResourceAsStream(..)”的类位于同一目录中,那么您只需要文件名,而不需要绝对路径。 例如,假设你有:

// 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"));

答案 1 :(得分:0)

Wo在这里使用“Packager.class”作为同一目录中的类几乎一样;这里的想法是通过类路径找到路径,该路径适用于tomcat:

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 );