The common assumption is it is determined by the umask of the user who owns the “Weblogic” java process. If a user runs startWeblogic.sh from the command line, then that user is the owner of Weblogic processes (many places use “oracle” or “weblogic” as the user to start webogic processes).
For the discussion, let’s assume the owner of “weblogic”
logic process is “webadmin”. We need to generate an output file with “664”
permission. However, we keep getting 644.
We double checked “webadmin” user has 002 umask. We also
tried to play with the umask settings in startWeblogic.sh script to no avail.
So it’s gloves off time, I added java embed to change the
output file permission by calling “setWrtiable(true, false)”, and that, opened
another can of worms.
To my surprise, I stumbled on another unexplainable file
adapter behavior. After the file adapter finished writing the file (with 644
permission), if I use java embed to open the file, and do any operations on the
file (even just read it), then it TRUNCATES the output file. I thought it has
to do with the transaction, so I tried to call check_point() before I open the
file in java. It made no difference.
In the end, I just skipped the file adapter, use java embedding
to generate the output file, then set the permission. Here is the snippet:
try
{
String content =
(String)getVariableData("csvOutput"); // grab file
content
String fileName = (String)getVariableData("fileName");
fileName = "/output/"+fileName;
FileWriter fstream = new FileWriter(fileName);
BufferedWriter out = new BufferedWriter(fstream);
out.write(content+"\r\n");
out.close();
java.io.File f = new java.io.File(fileName);
f.setWritable(true, false); // set
permissions
f.setReadable(true, false);
}
catch(Exception e)
{
System.out.println("*****file exception:"+e.getMessage());
}
There
is an Oracle Note - 1430075.1 that covers the same issue. Oracle recommendation
is to use java embedding, then do
System.exec(“chmod…”);
I
didn’t try that. Not sure how it works. Hope it doesn’t truncate the output
file.
Another day at the office :) Thanks for sharing.
ReplyDelete