

実行環境

java 1.8  
eclipse  
payara server

ServletContextを@injectしてmethodのgetRealpathを使おうとすると  
nullpointerexceptionがでてServletContextの変数の中はnullですよというエラーが出ます  
仕様を調べてみると  
getRealPath  
public java.lang.String getRealPath（java.lang.String path）  
このメソッドは、サーブレットコンテナが何らかの理由（コンテンツがアーカイブwar
から利用可能になっている場合など）で仮想パスを実際のパスに変換できない場合にnull返されます。

おそらくこれが原因のようです

[code]

        @SessionScoped
        public class FileReader implements Serializable{
        @Context
        private ServletContext context;
        public String readAllText(String fpath) {
        String path = context.getRealPath(fpath);
        
        Path p = Paths.get(path);
        String data = "";
        try {
            byte[] bytes = Files.readAllBytes(p);
            data = new String(bytes, "UTF-8");
        }catch(IOException ex) {
            System.out.println(ex.getMessage());
        }
        return data;
    
[/code]

また上記の仕様書からするとこのプログラムは読み込ませれないのでしょうか？


CC BY-SA 4.0
2022-04-20T22:13:49.603
88423
2022-04-20T22:13:49.603
52034
question
java java-ee servlet
ServletContextとFaceContextの使いどころを教えてほしい