我正在编写一个 Swing 应用程序客户端(它通过 webstart 运行,并且我正在使用 glassfish)。在应用程序类中我有:
@EJB private static MyBean myBean;
在MyBean
中我有:
@Remote
public interface MyBean {
public int getRand();
}
@DeclareRoles(("admin"))
@Stateful(name="MyBean")
public class MyBeanImpl implements MyBean {
@RolesAllowed(("admin"))
public int getRand() {
return 9; // Guaranteed to be random
}
}
到目前为止一切顺利。我使用 javaws http://server/app/app-client 启动应用程序,它要求用户/密码并正确进行身份验证(使用 glassfish 中的 fileRealm)。
我有两个问题:
- 它似乎尝试立即进行身份验证(当引用 bean 时),而不是在我尝试调用该方法时进行身份验证。我可以忍受这个。
- 我想使用我自己的登录对话框。部分是出于美观原因,但也为了优雅的错误处理、重试等
所以我需要指定一个回调。使用 new LoginContext("fileRealm", myCallback)
我收到有关 fileRealm 没有登录模块的错误。我尝试过来自网络的各种示例的组合,但很少有是为应用程序客户端设计的。
最佳答案
我已经通过将以下内容添加到 application-client.xml
解决了第二个(也是最重要的问题):
<application-client...>
...
<callback-handler>package.name.ClassName</callback-handler>
</application-client>
关于java - 如何使用应用程序客户端的登录回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1159080/