質問

Oracle AQ JMS実装を使用できるWebロジックサーバーの設定をテストしますが、何らかの理由でWLS接続プールが作成したキューを表示できません。 Web Logic DataSource接続プールキューを作成したDBユーザーの資格情報を使用します。

admin_userとして以下を作成しました。

キューテーブルを作成しました

EXECUTE DBMS_AQADM.CREATE_QUEUE_TABLE(queue_table=>'testqueue_table',queue_payload_type=>'sys.aq$_jms_text_message');

キューを作成しました

EXECUTE dbms_aqadm.create_queue(queue_name=>'testqueue', queue_table=>'testqueue_table');

キューを開始しました

EXECUTE dbms_aqadm.start_queue(queue_name=>'testqueue');

CPOOLユーザー許可を付与しました

GRANT aq_user_role TO cpool;
EXECUTE DBMS_AQADM.grant_queue_privilege(privilege=>'ALL', queue_name=>'adming_user.testqueue', grantee=>'cpool',grant_option=>FALSE);

Webロジックで2つのJDBCデータソースを設定しますデータベースに接続するWebロジックで2つのデータソースを設定しましたが、どちらも同一です。 cpool ユーザーとその他の使用 admin_user

JMSモジュールを作成します次に、JMSモジュールをJDBCデータソースに登録し、ローカルおよび外国のJDNI名を配線します。

使用するDataSourceを使用する場合 admin_user すべてが正常に機能し、展開されたアプリケーションはJNDIでキューを見つけることができます。

問題使用するデータソースを使用する場合 cpool その後、JNDIの接続プールが見つかりますが、キューは決してありません(admin_userで機能したという事実にもかかわらず)。 WLから次のエラーが発生します。

Related cause:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testqueue': Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: Cannot resolve name:Queues/TESTQUEUE

dataSourceにadmin_userアカウントを使用しない限り、WLがキューのJNDI名を解決できない理由を誰もが知っていますか?

役に立ちましたか?

解決

答えは、私の接続プールのユーザーがいくつかの助成金を欠いていたということでした。

GRANT EXECUTE on DBMS_AQ to <CPOOL>;
GRANT EXECUTE on DBMS_AQADM to <CPOOL>;
GRANT aq_user_role to <CPOOL>;

宛先を作成するユーザーが接続プールユーザーへのアクセスを付与するユーザーを確認してください。

`EXECUTE DBMS_AQADM.grant_queue_privilege(privilege=>'ALL', queue_name=>'<SCHEMAOWNER>.docprod_queue', grantee=>'<CPOOL>',grant_option=>FALSE);`

最後に、Webロジックでは、外国のJNDIの完全な名前で目的地を必ず参照してください。

Queues/<SCHEMA OWNER>.<DESTINATION_NAME>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top