[RFC][plugin]: Class loading problem.

Deepak Bhole dbhole at redhat.com
Fri Apr 29 11:37:28 PDT 2011


* Denis Lila <dlila at redhat.com> [2011-04-28 09:34]:
>  
> -        // create the frame.
> -        PluginAppletViewer.framePanel(identifier, handle, panel);
> +        // Framing the panel needs to happen in a thread whose thread group
> +        // is the same as the threadgroup of the applet thread. If this
> +        // isn't the case, the awt eventqueue thread's context classloader
> +        // won't be set to a JNLPClassLoader, and when an applet class needs
> +        // to be loaded from the awt eventqueue, it won't be found.
> +        Thread panelInit = new Thread(panel.getFutureTG(), new Runnable() {
> +            @Override public void run() {
> +                SunToolkit.createNewAppContext();
> +                // create the frame.
> +                PluginAppletViewer.framePanel(identifier, handle, panel);
> +                panel.init();
> +                // Start the applet
> +                initEventQueue(panel);
> +            }
> +        }, "NetXPanel initializer");
>  
> -        panel.init();
> -
> -        // Start the applet
> -        initEventQueue(panel);
> +        panelInit.start();
> +        while(panelInit.isAlive()) {
> +            try {
> +                panelInit.join();
> +            } catch (InterruptedException e) {
> +            }
> +        }
>  

Initialization is a separate thread should be fine, but what is the
above while/join trying to achieve? More specifically, why is it a while
statement and not an if?

Cheers,
Deepak

>          // Wait for the panel to initialize
>          PluginAppletViewer.waitForAppletInit(panel);




More information about the distro-pkg-dev mailing list