users@glassfish.java.net

Re: CORBA.NO_PERMISSION when using GUI in ACC

From: Bobby Bissett - Javasoft <Robert.Bissett_at_Sun.COM>
Date: Thu, 19 Apr 2007 11:01:44 -0400

> This application is using EJBs which are injected into the main class
> using "@EJB" annotations. The GUI is a standard Swing GUI.
>
> I tried putting a Thread.sleep() before the main() returns just in
> case it was a problem with accessing EJBs after the main method
> finished but it made no difference. Any calls made directly within
> the main work, calls from the UI fail.
>
> Anybody seen this behavior before? Like I said, it was working
> without problems in b23 but I haven't tried any other builds until
> now. [Message sent by forum member 'aner' (aner)]

Was it working in the GUI in b23? I think so from what you wrote, but am
not sure. From the stack trace:

com.sun.enterprise.iiop.security.SecServerRequestInterceptor.handle_null_service_context()

This means that there is no context information on the server side, and
so the security check fails, which means it may not actually be a
security problem -- that's just the symptom. It looks like the context
information is now being stored local to the main thread, and so the gui
thread is failing.

(Ideally you'd do the business work outside of the gui thread and have
the "business" thread update the gui with SwingUtilities.invokeLater(),
but that doesn't help you much here unless you want to have the gui
thread call back into the main thread, which sounds ugly.)

I don't know what has changed that could be causing this, so hopefully
someone else can help out. However, I have looked at some code that
deals with passwords in a per-thread basis. Total shot in the dark here,
but you could try setting the "com.sun.appserv.iiopclient.perthreadauth"
system property to true and see if that gets around the issue.

Cheers,
Bobby