2017-12-09 8 views
0
나는이 작은 메시지 프로듀서 데

: 다음 속성 사용은 제이보스에 대기열에 메시지를 보낼 수 없습니다 (11)

public static void main(String[] args) throws Exception { 
     BasicConfigurator.configure(); 
     Properties env = new Properties(); 
     InputStream is = Producer.class.getResourceAsStream("/jms.properties"); 
     env.load(is); 
     Context context = new InitialContext(env); 
     ConnectionFactory factory = (ConnectionFactory) context.lookup("jms/RemoteConnectionFactory"); 
     Destination queue = (Destination) context.lookup("jms/demoQueue"); 

     JMSContext jmsContext = factory.createContext(); 
     jmsContext.createProducer().send(queue, "Message"); 

    } 

을 :

java.naming.factory.initial = org.wildfly.naming.client.WildFlyInitialContextFactory 
java.naming.provider.url = http-remoting://localhost:8080 
java.naming.security.principal = alex 
java.naming.security.credentials = password 
messagingProvider = demo 
connectionFactoryNames = QueueFactory 
queue.queueReq = jms.queueReq 
queue.queueResp = jms.queueResp 

을하지만 예외가 얻을 :

"원인 : javax.jms.JMSSecurityException : AMQ119031 : 사용자를 확인할 수 없음"

나는 서버에서 뭔가 잘못 구성했다고 생각합니다. 그러나 정확하게 무엇? 보안 설정에는 # guest 및 admin 역할의 패턴이 있습니다. 나는 2 개 인자로 보안

답변

2

콜 오버로드 createContext() 방법에 관한 아무것도 표시되지 않습니다은 "알렉스"사용자가 올바른 역할이 할당 된 경우

JMSContext context = factory.createContext("alex", "password");

그런 다음 그것을 작동합니다.

나는 내가 createContext()가 작동하는 방법에 대한 개발자들과 토론을 한 기억 (이것은 겉 날개와 관계에 있었다 - 새로운 securtity 서브 시스템), 지금의 decission는 같았다 : 설계대로 작동 하지만이 될 수 있습니다 미래에 향상되었습니다.

자세한 내용은 comments in JBEAP-10527을 참조하십시오.