Question

Je tester la mise en place d'un serveur logique Web qui peut utiliser une implémentation JMS Oracle AQ, mais pour une raison quelconque mon pool de connexion WLS ne vois pas la file d'attente que j'ai créé, la seule façon que je peux voir la trouver la file d'attente dans la logique web est pour rendre la logique web piscine datasource utiliser les informations d'identification de l'utilisateur DB qui a créé la file d'attente.

J'ai fait ce qui suit comme admin_user:

Création d'une table de file d'attente

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

Création d'une file d'attente

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

Démarrage la file d'attente

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

Accordé les autorisations utilisateur 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);

Configurer 2 sources de données JDBC dans Logic Web Configurer 2 sources de données dans la logique de bande qui se connectent à ma base de données, les deux sont identiques, sauf que l'on utilise le Cpool utilisateur et les autres utilisations admin_user

Créer JMS Modules Maintenant, j'enregistrer un jms module avec les sources de données JDBC et câbler les noms JDNI locaux et étrangers.

Si j'utilise DataSource qui utilise admin_user tout fonctionne bien et mon application déployée peut trouver dans la file d'attente JNDI.

Problème Si j'utilise la source de données qui utilise Cpool il ne trouve la piscine de connexion JNDI mais jamais la file d'attente (en dépit du fait qu'il a travaillé pour admin_user). Je reçois l'erreur suivante de 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

Quelqu'un sait-il pourquoi WL ne peut pas résoudre le nom JNDI pour la file d'attente à moins d'utiliser le compte admin_user pour ma source de données.

Était-ce utile?

La solution

La réponse a été que mon baigneur de connexion il manquait certaines subventions, les éléments suivants si nécessaire:

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

Assurez-vous que l'utilisateur qui crée le destinataire accorde l'accès à l'utilisateur de pool de connexion:

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

Enfin dans Logic Web assurez-vous de faire référence à la destination par leur nom complet JNDI étranger:

Queues/<SCHEMA OWNER>.<DESTINATION_NAME>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top