2016-11-25 13 views
0

私はnetbeansを使用しています。私はWEB-INFフォルダからdb.propertiesファイルを読みたいと思っています。しかし、それはnullを返します。WEB-INFからdb.propertiesファイルを読み込む方法

InputStream input = getClass().getClassLoader().getResourceAsStream("db.properties"); // returning null 

InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("/db.properties"); // returning null. 

私はdb.propertiesファイルint Web_INF/class上記のコードをうまく動作させる。

次のコードでは、両方のケースでファイルが見つかりません。 (Web-INF/db.propertiesおよびWeb-INF/classes/db.propertiesにあります)。

FileInputStream fileInput = new FileInputStream(new File("db.properties")); //throws exception 

任意の手がかり。

package com.towertech.db; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStream; 
import java.net.URL; 
import java.sql.Connection; 
import java.sql.SQLException; 
import java.util.Properties; 
    import org.apache.tomcat.jdbc.pool.*; 

public class DataSource 
{ 
    PoolProperties poolProperties; 
    org.apache.tomcat.jdbc.pool.DataSource datasource; 
    ClassLoader classLoader; 
    InputStream input; 
    FileInputStream fileInput; 
    Properties properties; 

public org.apache.tomcat.jdbc.pool.DataSource getDatasource() { 
    return datasource; 
} 

public void setDatasource(org.apache.tomcat.jdbc.pool.DataSource datasource) { 
    this.datasource = datasource; 
} 

public DataSource() throws FileNotFoundException, IOException 
{ 
    input = getClass().getClassLoader().getResourceAsStream("/WEB-INF/db.properties"); 
    input = Thread.currentThread().getContextClassLoader().getResourceAsStream("/WEB-INF/db.properties"); 
    fileInput = new FileInputStream(new File("/WEB-INF/db.properties")); 
    if(input == null) 
     properties.load(fileInput); 
    else 
     properties.load(input); 
    poolProperties = new PoolProperties(); 
    poolProperties.setDbProperties(properties); 
    datasource.setPoolProperties(poolProperties); 
} 

public static void main(String[] args) throws IOException 
{ 
    DataSource ds = new DataSource(); 
    System.out.println(ds.toString()); 

} 

public Connection getConnection() throws SQLException 
{ 
    return datasource.getConnection(); 
} 

public void returnConnection(Connection con) throws SQLException 
{ 
    con.close(); 
}  
} 
+0

uは、サーブレットを使用していますか?またはスプリングコントローラ?他の ? – developer

+0

私はSpring Webサービスを使用しています – MUHIUDDIN

+0

これはコントローラまたはサービスから呼び出されますか?私はDataSourceクラスをどこから呼び出すのでしょうか? – developer

答えて

1

あなたは、以下に示すような特性がservletcontextオブジェクトを使用して、春のコントローラ内部のWEB-INF下のファイル読むことができます:

@Controller 
public class MyController { 

    @RequestMapping(value="/myMapping") 
    public R myMethod(HttpServletRequest request, ...) { 

     //Get the servletcontext from request 
     InputStream input = request.getSession().getServletContext(). 
      getResourceAsStream("/WEB-INF/db.properties"); 

    //read properties 

    } 
} 
関連する問題