java - 如何使用应用程序客户端的登录回调

标签 java jakarta-ee glassfish

我正在编写一个 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/

相关文章:

java - 在命令行中使用 javac 编译时出现 "package javax.inject does not exist"错误

Java内存: Runtime. getRuntime().maxMemory()

Java CDI : Do interceptors have scope?

jpa - 如何在 GlashFish 4.0 中更改 EclipseLink?

java - 将日期从 HTML 表单传递到 servlet 再到 SQL 数据库

Java JAX-WS、wsgen、类作为参数?

java - 如何在没有动画的情况下滚动到 ScrollView 中的某个位置?

hibernate - 无法在Gradle项目中配​​置EntityManagerFactory

javascript - 无法在 Chrome 上看到控制台错误

java - 使用应用服务器运行.exe