In the first series of experiments I discovered that the problem is
in the way the resource bundle is loaded. The data contained in the
loaded resource bundle in 1.4.2_15 was completely broken and looked
like if some HTML page was incorrectly loaded as a resource bundle
instead of a correct bundle file. In 5.0u13 the loaded resource bundle
was correct and, particularly, contained "ppd.1" key that was missed
in 1.4.2_15 version causing an exception.
Then I narrowed the problem down to
sun.net.www.protocol.http.HttpURLConnection class. It is where the
InputStream for the PropertyResourceBundle constructor comes from.
This class was substantially changed in 5.0.
Finally, it turned out that the problem is caused by incorrect
processing of cookies in 1.4.2. When an applet sets up its own cookie,
this value overwrites an old cookie value set when a session was
established. Because of this, a HTTP request lacks some context
information, a HTTP server returns "302 Moved Temporarily" response
instead of "200 OK", we follow in the wrong direction and download
the wrong file treating it as a resource bundle.
In 1.4.2 this code is located in plugin workspace. In 5.0 it
has been significantly reworked and moved to j2se workspace.
The fix is to add a new cookie value to the old one instead of
overwriting it. It is similar to the way cookies are processed