0

我正在编写一个 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 没有登录模块的错误。我已经尝试了来自网络的各种混合示例,但很少有专为应用程序客户端设计的。

4

2 回答 2

2

好吧,我通过添加以下内容解决了第二个(也是最重要的问题)application-client.xml

<application-client...>
  ...
  <callback-handler>package.name.ClassName</callback-handler>
</application-client>
于 2010-01-25T12:20:56.240 回答
0

它似乎试图立即进行身份验证(当引用 bean 时)而不是当我尝试调用该方法时。我可以忍受这个。

这是因为它需要经过身份验证才能创建 RMI 上下文。

于 2009-08-10T21:27:40.353 回答