2012-02-20 6 views
1

Oracle AQ JMS 구현을 사용할 수있는 웹 로직 서버를 설정했지만 어떤 이유로 인해 WLS 연결 풀에서 내가 만든 대기열을 볼 수없는 경우, 가능한 유일한 방법 웹 논리에서 대기열 찾기는 대기열을 만든 DB 사용자의 자격 증명을 사용하여 웹 논리 데이터 소스 연결 풀을 만드는 것입니다.Oracle AQ 대기열을 사용하여 Web Logic JMS 모듈 구성

나는이를 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); 

내가 내 데이터베이스에 연결 웹 로직에서이 데이터 소스를 설정 웹 로직 2 JDBC의 데이터 소스를 설정은 둘 것을 제외하고 동일 하나는 이고 다른 하나는 사용자입니다. admin_user

JMS 모듈 만들기 이제 jms 모듈을 JDBC DataSources에 등록하고 로컬 JDNI 이름과 외부 JDNI 이름을 연결합니다.

을 사용하는 데이터 소스를 사용하는 경우 admin_user 모든 것이 잘 작동하고 배포 된 응용 프로그램이 JNDI에서 대기열을 찾을 수 있습니다.

문제 내가 다음은 JNDI에 연결 풀을 찾지 만 실패 cpool를 사용하는 데이터 소스를 사용하는 경우 결코 (는이를 admin_user 위해 일한 사실에도 불구하고) 대기열. 나는 WL에서 다음과 같은 오류를 얻을 : 내 데이터 소스에 대해이를 admin_user 계정을 사용하지 않는 WL 대기열의 JNDI 이름을 확인할 수없는 이유

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 

는 아는 사람 있나요.

답변

1

대답은 내 연결 풀 사용자가 일부 보조금 누락 된 것이 었습니다 다음과 같은 경우에 필요한 :

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

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

이 있는지 확인하십시오 연결 풀 사용자에게 대상 액세스 권한을 부여를 생성하는 사용자

마지막으로 웹 로직에서 대상을 전체 외부 JNDI 이름으로 참조해야합니다.

Queues/<SCHEMA OWNER>.<DESTINATION_NAME> 
관련 문제