2011-03-07 22 views
0

我正尝试使用Vaadin ClassResource类从将部署WAR的文件加载数据库连接属性,但似乎无法找到该文件。我使用Vaadin 6.5.2,Tomcat 7.0.6,并将我的“app.properties”文件放在与我的应用程序主文件相同的包中。找不到Vaadin ClassResource

我的代码是在斯卡拉。这是我尝试:

val cr = new ClassResource("app.properties",this) // "this" is the application 
debug("resource mimeType = {}",cr.getMIMEType) 
debug("resource bufferSize = {}", cr.getBufferSize) 
debug("resource cacheTime = {}",cr.getCacheTime) 
debug("resource fileName = {}", cr.getFilename) 
val ds = cr.getStream 
if (ds != null) { 
    debug("download stream bufferSize = {}", ds.getBufferSize) 
    debug("download stream cacheTime = {}",ds.getCacheTime) 

    val is = ds.getStream // get InputStream 

    if (is != null) { 
    val props = new Properties 
    props.load(is) 
    val dbHost = props.get("db.host").asInstanceOf[String] 
    val dbName = props.get("db.name").asInstanceOf[String] 
    val dbPort = props.get("db.port").asInstanceOf[String] 
    val dbUser = props.get("db.user").asInstanceOf[String] 
    val dbPass = props.get("db.pass").asInstanceOf[String] 
    val dbUri = props.get("db.uri").asInstanceOf[String] 
    } else { 
    debug("Input stream was null") 
    } 
} else { 
    debug("Download stream was null") 
} 

这里是结果:

08:51:59.617 ["http-bio-8084"-exec-11] DEBUG c.sentientswarm.propdesk.AppConfig$ - resource mimeType = application/octet-stream 
08:51:59.620 ["http-bio-8084"-exec-11] DEBUG c.sentientswarm.propdesk.AppConfig$ - resource bufferSize = 0 
08:51:59.621 ["http-bio-8084"-exec-11] DEBUG c.sentientswarm.propdesk.AppConfig$ - resource cacheTime = 86400000 
08:51:59.621 ["http-bio-8084"-exec-11] DEBUG c.sentientswarm.propdesk.AppConfig$ - resource fileName = app.properties 
08:51:59.621 ["http-bio-8084"-exec-11] DEBUG c.sentientswarm.propdesk.AppConfig$ - download stream bufferSize = 0 
08:51:59.621 ["http-bio-8084"-exec-11] DEBUG c.sentientswarm.propdesk.AppConfig$ - download stream cacheTime = 86400000 
08:51:59.621 ["http-bio-8084"-exec-11] DEBUG c.sentientswarm.propdesk.AppConfig$ - Input stream was null 

我试图把在不同的地点,包括SRC的顶部配置文件中,VAADIN文件夹顶部内部的持有主题和目前位置(与主应用程序在同一个包中),但结果始终相同。任何人都可以告诉我我做错了什么?

+0

你用什么来建立战争档案? – thoredge 2011-03-08 12:49:01

回答

1

这就是我们的做法。

 InputStream is=null; 
    try 
    { 
     is=Application.class.getClassLoader().getResourceAsStream("Application.properties"); 
    } 
    catch(Exception x) 
    { 
     log.error("Error loading 'Application.properties' properties",x); 
     return null; 
    } 

    if (is!=null) 
    { 
     try 
     { 
      Properties props=new Properties(); 
      props.load(is); 
      return(props); 
     } 
     catch (IOException e) 
     { 
      log.error("Error reading properties 'Application.properties' ",e); 
     } 
    } 

    return(null); 

但是公平起见,我们不创建战争,并保持我们的应用程序未爆炸。 请记住,Application.class不是Vaadin应用程序,而是我们自己的Vaadin应用程序包装器。

0

我复制的.properties文件到应用程序上下文目录,并按照上面的应用程序类代码中调用的方式

Properties properties = new Properties(); 
properties.load(new FileInputStream(getContext().getBaseDirectory().getAbsolutePath() + "/application.properties")); 

阅读。

相关问题