2009-07-21 7 views
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を使用して)。

私は2つの問題を抱えて:(Beanが参照されている場合)ではなく、私はメソッドを呼び出すしようとするよりも、すぐに認証を試みているようだ

  • を。私はこれで生きることができます。
  • 自分のログインダイアログを使いたいです。部分的には審美的理由だけでなく、エラーハンドリング、再試行などにも役立ちます。

コールバックを指定する必要があります。 new LoginContext("fileRealm", myCallback)を使用すると、fileRealmのログインモジュールに関するエラーが表示されます。私はネットからさまざまなサンプルを試しましたが、アプリケーションクライアントにはほとんど設計されていません。

答えて

0

メソッドを呼び出そうとするのではなく、すぐに(Beanが参照されるとき)すぐに認証しようとしているようです。私はこれで生きることができます。

これは、RMIコンテキストを作成するために認証する必要があるためです。

+0

それは説明があると便利ですが、私は必死に自分のダイアログを取得する方法を知っておく必要があります現れる。 – Draemon

2

まあ、私はapplication-client.xmlに以下を追加することにより、第2の(そして最も重要な問題を)解決しました:

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

それは愚かだ - 私は自分の答えを受け入れることができない – Draemon

+0

http://meta.stackexchange.com/questions/1413/why-an-answer-cant-be-accepted-after-an-unresolved-bounty/を読んだ後36904#36904、あなたの答えとフィードバックをトップにプッシュするために+1); – VonC

+0

Hehe、Thanks VonC! – Draemon

関連する問題