2009-07-21 104 views
0

我正在编写一个Swing应用程序客户端(它运行在webstart上,并且正在使用glassfish)。在应用I类有:如何使用应用程序客户端的登录回调

@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没有登录模块的错误。我已经尝试过来自网络的各种示例混合,但只有极少数是为应用程序客户端设计的。

回答

0

它似乎试图马上进行身份验证(当bean被引用时),而不是当我尝试调用该方法时。我可以忍受这一点。

这是因为需要对其进行身份验证才能创建RMI上下文。

+0

这是很好的有一个解释,但我迫切需要知道如何让自己的对话框出现。 – Draemon 2009-08-11 09:23:26

2

嗯,我已通过添加以下到application-client.xml解决的第二个(也是最重要的问题):

<application-client...> 
    ... 
    <callback-handler>package.name.ClassName</callback-handler> 
</application-client> 
+0

好吧,这是愚蠢的 - 我不能接受我自己的答案 – Draemon 2010-01-25 12:22:04

相关问题