The current openfire script uses kill to end a process. This fails under some circumstances (e.g. the process is under heavy load and unresponsive). For RedHat (and related), there is a function, killproc that will try to kill the process nicely and escalate all the way up to SIGKILL - this is more reliable in practice.
Also, the presence of a PID file is not desirable. When the process dies unexpectedly or it gets killed, the file is left behind so OF won't start until it is removed. A better way to handle this is to grep for PID.