I was working on getting support to connect to remote servers for
the JBoss AS 7 plugin. The management API's require a
javax.security.auth.callback.CallbackHandler. I originally had an
implementation that would prompt for the username and password to be
entered. The issue is that the ShellImpl locks on execution [1] with
the same lock on the promptWithCompleter [2]. This causes the prompt
on the CallbackHandler implementation to dead-lock.
The workaround I've found is the promptSecret [3] does not seem to
block. There are other potential ways around this, but they
generally require the user to authenticate on each execution which
is not really desirable.
This leads to a few questions:
- Should the promptSecret be blocking too?
- Is there a better approach to getting the credentials?
- Should the promptWithCompleter be blocking? (I haven't really
looked at the code enough to determine this)
[1]:
https://github.com/forge/core/blob/master/shell/src/main/java/org/jboss/forge/shell/ShellImpl.java#L836
[2]: https://github.com/forge/core/blob/master/shell/src/main/java/org/jboss/forge/shell/ShellImpl.java#L1337
[3]:
https://github.com/forge/core/blob/master/shell/src/main/java/org/jboss/forge/shell/ShellImpl.java#L1404
--
James R. Perkins
JBoss by Red Hat