Glassfishで実行されているステートレスEJB内に次の関数があります。ファイルにデータを書き込むだけです。関数の最初の部分は、ファイルの移動先へのパスを作成するだけです。2番目の部分は実際にファイルを書き込みます。
private boolean createFile(String companyName, String fileName, byte[] data)
{
logger.log(Level.FINEST, "Creating file: {0} for company {1}", new Object[]{fileName, companyName});
File companyFileDir = new File(LOCAL_FILE_DIR, companyName);
if(companyFileDir.exists() == false)
{
boolean createFileDir = companyFileDir.mkdirs();
if(createFileDir == false)
{
logger.log(Level.WARNING, "Could not create directory to place file in");
return false;
}
}
File newFile = new File(companyFileDir, fileName);
try
{
FileOutputStream fileWriter = new FileOutputStream(newFile);
fileWriter.write(data);
}
catch(IOException e)
{
logger.log(Level.SEVERE,"Could not write file to disk",e);
return false;
}
logger.log(Level.FINEST,"File successfully written to file");
return true;
}
このコードの実行後に得られる出力は次のとおりです。
WARNING: Could not create directory to place file in
したがって、明らかにGlassfishはこのディレクトリを作成できません。これはパーミッションと関係があると思います。誰かが私にここで何が間違っているのかについて行く方向を教えてもらえますか?
Ubuntu12のGlassfish3.12でこれを実行しています