5

Glassfish では、フラットファイル JMS 認証を簡単に設定できます ( http://docs.sun.com/app/docs/doc/821-0027/aeofg?a=viewを参照)。

問題はクライアント部分です。JNDI 経由でJMS リソース (ConnectionFactoryおよび) にアクセスするためのスタンドアロン Java クライアントを作成しています。Destination

そのクライアントから JMS にユーザー名とパスワードを渡す方法は?

私はすでに次のようないくつかのことを試しました:

1) InitialContext にそれらの資格情報を追加する

 context.addToEnvironment(InitialContext.SECURITY_PRINCIPAL, "username");
 context.addToEnvironment(InitialContext.SECURITY_CREDENTIALS, "password");

2) 接続ファクトリーでの JMS ユーザー名とパスワードのパラメーターの使用

 connectionFactory.createConnection();

ただし、これらの方法はどれも機能していません。

プログラムを実行すると、次のようになります。

com.sun.messaging.jms.JMSSecurityException: [C4084]: Échec de 
l'authentification de l'utilisateur :  user=guest, broker=localhost:7676(34576) 
at com.sun.messaging.jmq.jmsclient.ProtocolHandler.authenticate
(ProtocolHandler.java:1084)

そのため、「ゲスト」ユーザーで認証を試み続けます。

このテストではconnection.NORMAL.deny.user=*、パーミッション ルールとして ( accesscontrol.properties) を使用しました。

興味深いのは、接続ファクタが取得される前であっても、この例外がスローされることです。

 InitialContext context = new InitialContext();

 ConnectionFactory connectionFactory = 
 (ConnectionFactory)context.lookup("jms/middleware/factory"); 
 /* The exception is thrown here, so authentication MUST have happened 
    before already (i.e. NOT in the createConnection(username, password) method) */

誰かが答えを知っていることを願っています。

よろしくお願いします

よろしく、

ディネッシュ

4

1 に答える 1

2

OK http://weblogs.java.net/blog/kalali/archive/2010/03/02/open- mq-open-source-message-queuing-beginners-and-professionals-0

最終的なコードは次のとおりです。

com.sun.messaging.ConnectionFactory connectionFactory = new com.sun.messaging.ConnectionFactory();
QueueConnection queueConnection = connectionFactory.createQueueConnection("user01", "password01");

今回はエラーにつながります

Error: [C4060]: Login failed:  user=user01, broker=localhost:7676(53445)

これは素晴らしいです;)

したがって、回避策は機能しています。ただし、JNDIでもこれを達成する方法を誰かが知っていれば、さらに良いでしょう。

于 2010-03-06T15:07:11.473 に答える