> リモートアクセス→lookupしてPorableRemoteObject#narrow
> ローカルアクセス→lookupで直接取れる

> という前提はまず正しいだろうか?

まあそうなんだけど。
JNDIクライアントは、リモートアクセスするのかローカルアクセスするのかは
意識せずに透過的に扱えるのが望ましいから、
リモートだろうがローカルだろうがPorableRemoteObject#narrow()したほうが安全。

> んで、グローバルで一意なJNDI名が定義してあれば、
> 基本的にローカルでもリモートでもJNDI名で
> lookup出来るんだよね。

そう。

> その上で、
〜 中略 〜
> といったメリットがあるから、なるべくjava:comp/env/を
> 使うべし、ということでいいかな。

そう。