jms - HornetQ Unable to validate user -


i using jboss 6 final on ubuntu hornetq

i have created new queue on server named message buffer queue using admin panel.

i following error:

unable validate user: guest check type consume address jms.queue.messagebufferqueue 

here files:

package org.jboss.ejb3timers.example;  import java.text.dateformat; import java.text.simpledateformat; import java.util.enumeration; import java.util.hashtable; import java.util.uuid; import javax.jms.connection; import javax.jms.connectionfactory; import javax.jms.message; import javax.jms.messageconsumer; import javax.jms.messageproducer; import javax.jms.objectmessage; import javax.jms.queue; import javax.jms.queuebrowser; import javax.jms.queueconnection; import javax.jms.queueconnectionfactory; import javax.jms.queuesession; import javax.jms.session; import javax.naming.context; import javax.naming.initialcontext;  public class testclass {      connectionfactory hconnection=null;     queue  q=null;     connection hconn=null;     context lcontext=null;     messageconsumer messageconsumer=null;     messageproducer messageproducer=null;     javax.jms.session session=null;      /**      * @param args      */      public void sendmessagetojms(string sender,string receiver,string message,string smsc,string credit,string userid,long ctime,string savenumber)     {         int count=0;         hashtable<string, string> ht = new hashtable<string, string>();         ht.put(context.initial_context_factory, "org.jnp.interfaces.namingcontextfactory");         ht.put(context.provider_url, "127.0.0.1");         ht.put(context.url_pkg_prefixes, "org.jboss.naming:org.jnp.interfaces");         try{             lcontext = new initialcontext(ht);             hconnection = (connectionfactory) lcontext.lookup("connectionfactory");             q = (queue) lcontext.lookup("queue/messagebufferqueue");             hconn = (connection) hconnection.createconnection("guest","guest");             session =  hconn.createsession(false, session.auto_acknowledge);             messageproducer = session.createproducer(q);             /*              * insert database              */             uuid id=uuid.randomuuid();              hconn.start();              textmsg msg = new textmsg();             msg.setreciever(receiver);             msg.setsender(sender);             msg.settext(message);             msg.setsmsc(smsc);             msg.setcredit(credit);             msg.setuserid(userid);             msg.setctime(ctime);             msg.setid(id.tostring());             objectmessage message = session.createobjectmessage();             message.setobject(msg);             messageproducer.send(message);             system.out.println("message sent ");             hconn.close();         }         catch(exception ex)         {             ex.printstacktrace();         }     }      public int getqueuesize()     {         hashtable<string, string> ht = new hashtable<string, string>();         ht.put(context.initial_context_factory, "org.jnp.interfaces.namingcontextfactory");         ht.put(context.provider_url, "127.0.0.1");         ht.put(context.url_pkg_prefixes, "org.jboss.naming:org.jnp.interfaces");         initialcontext ctx;         int nummsgs = 0;         try {             ctx = new initialcontext(ht);             queueconnectionfactory connfactory = (queueconnectionfactory) ctx.lookup("connectionfactory");             queue queue = (queue) ctx.lookup("queue/messagebufferqueue");                                                                                     queueconnection queueconn = connfactory.createqueueconnection("guest","guest");             queuesession queuesession = queueconn.createqueuesession(false,session.auto_acknowledge);             queuebrowser queuebrowser = queuesession.createbrowser(queue);             queueconn.start();             enumeration e = queuebrowser.getenumeration();             dateformat df = new simpledateformat("yyyy-mm-dd hh:mm:ss.ssssss");;                string s=null;             while (e.hasmoreelements()) {                 message message = (message) e.nextelement();                 s = df.format(message.getjmstimestamp());                 system.out.println("=================1===================timestamp got queue"+s);                 nummsgs++;             }             queueconn.close();         } catch (exception e1) {             // todo auto-generated catch block             system.out.println(e1.getmessage());         }         return nummsgs;     }      public static void main(string[] args) {         int = 0;         testclass tc = new testclass();         system.out.println(tc.getqueuesize());         tc.sendmessagetojms("jk", "gv", "hey there", "somesmsc", "34", "thedon", 234233634, "2423487");         system.out.println(tc.getqueuesize());     } } 

my hornetq config file is

<configuration xmlns="urn:hornetq"                xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"                xsi:schemalocation="urn:hornetq /schema/hornetq-configuration.xsd">  <!-- make queue persistent --> <persistence-enabled>true</persistence-enabled>    <log-delegate-factory-class-name>org.hornetq.integration.logging.log4jlogdelegatefactory</log-delegate-factory-class-name>     <bindings-directory>${jboss.server.data.dir}/hornetq/bindings</bindings-directory>     <journal-directory>${jboss.server.data.dir}/hornetq/journal</journal-directory>     <!-- default journal file size set 1mb faster first boot -->    <journal-file-size>${hornetq.journal.file.size:1048576}</journal-file-size>     <!-- default journal min file 2, increase higher average msg rates -->    <journal-min-files>${hornetq.journal.min.files:2}</journal-min-files>  <!-- create new user named guest default user --> <defaultuser name="guest" password="guest">         <role name="guest"/>     </defaultuser> <!-- create new user named admin admin stuff --> <user name="admin" password="admin">         <role name="admin"/>     </user>      <large-messages-directory>${jboss.server.data.dir}/hornetq/largemessages</large-messages-directory>     <paging-directory>${jboss.server.data.dir}/hornetq/paging</paging-directory>     <connectors>       <connector name="netty">          <factory-class>org.hornetq.core.remoting.impl.netty.nettyconnectorfactory</factory-class>          <param key="host"  value="${jboss.bind.address:localhost}"/>          <param key="port"  value="${hornetq.remoting.netty.port:5445}"/>       </connector>        <connector name="netty-throughput">          <factory-class>org.hornetq.core.remoting.impl.netty.nettyconnectorfactory</factory-class>          <param key="host"  value="${jboss.bind.address:localhost}"/>          <param key="port"  value="${hornetq.remoting.netty.batch.port:5455}"/>          <param key="batch-delay" value="50"/>       </connector>        <connector name="in-vm">          <factory-class>org.hornetq.core.remoting.impl.invm.invmconnectorfactory</factory-class>          <param key="server-id" value="${hornetq.server-id:0}"/>       </connector>     </connectors>     <acceptors>         <acceptor name="netty">          <factory-class>org.hornetq.core.remoting.impl.netty.nettyacceptorfactory</factory-class>          <param key="host"  value="${jboss.bind.address:localhost}"/>          <param key="port"  value="${hornetq.remoting.netty.port:5445}"/>       </acceptor>        <acceptor name="netty-throughput">          <factory-class>org.hornetq.core.remoting.impl.netty.nettyacceptorfactory</factory-class>          <param key="host"  value="${jboss.bind.address:localhost}"/>          <param key="port"  value="${hornetq.remoting.netty.batch.port:5455}"/>          <param key="batch-delay" value="50"/>          <param key="direct-deliver" value="false"/>       </acceptor>        <acceptor name="in-vm">         <factory-class>org.hornetq.core.remoting.impl.invm.invmacceptorfactory</factory-class>         <param key="server-id" value="0"/>       </acceptor>       </acceptors>     <security-settings>       <security-setting match="#">          <permission type="createnondurablequeue" roles="guest"/>          <permission type="deletenondurablequeue" roles="guest"/>  <!-- admin can create durable , non durable queues --> <!-- add permisions make  durabe queue guest -->          <permission type="createdurablequeue" roles="admin"/> <!-- add permisions make  durabe queue guest -->          <permission type="deletedurablequeue" roles="admin"/>           <permission type="consume" roles="guest"/>          <permission type="send" roles="guest"/>       </security-setting>    </security-settings>     <address-settings>       <!--default catch all-->       <address-setting match="#">          <dead-letter-address>jms.queue.dlq</dead-letter-address>          <expiry-address>jms.queue.expiryqueue</expiry-address>          <redelivery-delay>0</redelivery-delay>          <max-size-bytes>10485760</max-size-bytes>                <message-counter-history-day-limit>10</message-counter-history-day-limit>          <address-full-policy>block</address-full-policy>       </address-setting>    </address-settings>  </configuration> 

my stack trace :

log4j:warn no appenders found logger (org.jnp.interfaces.timedsocketfactory). log4j:warn please initialize log4j system properly. unable validate user: guest check type consume address jms.queue.messagebufferqueue 0 javax.jms.jmssecurityexception: unable validate user: guest check type send address jms.queue.messagebufferqueue     @ org.hornetq.core.protocol.core.impl.channelimpl.sendblocking(channelimpl.java:287)     @ org.hornetq.core.client.impl.clientproducerimpl.dosend(clientproducerimpl.java:285)     @ org.hornetq.core.client.impl.clientproducerimpl.send(clientproducerimpl.java:139)     @ org.hornetq.jms.client.hornetqmessageproducer.dosend(hornetqmessageproducer.java:451)     @ org.hornetq.jms.client.hornetqmessageproducer.send(hornetqmessageproducer.java:199)     @ org.jboss.ejb3.timerservice.example.testclass.sendmessagetojms(testclass.java:70)     @ org.jboss.ejb3.timerservice.example.testclass.main(testclass.java:117) caused by: hornetqexception[errorcode=105 message=unable validate user: guest check type send address jms.queue.messagebufferqueue]     ... 7 more unable validate user: guest check type consume address jms.queue.messagebufferqueue 0 11 apr, 2011 7:35:54 pm org.hornetq.core.logging.impl.jullogdelegate warn warning: i'm closing jms connection left open. please make sure close jms connections explicitly before letting them go out of scope! 

what seems problem problem ?

it took me long time solve issue, , answer hornetq reference documentation:

jboss can configured allow client login, when java ee component such servlet or ejb sets security credentials on current security context , these used throughout call.

if these credentials used hornetq when sending or consuming messages set allowclientlogin true. bypass hornetq authentication , propgate provided security context. if hornetq authenticate using propogated security set authoriseonclientlogin true also.

the important part is: if these credentials used hornetq when sending or consuming messages set allowclientlogin true

in case, test purpose disactivated authentication in application, , credentials not propagated anymore in security context.

while trying create queues with
queueconnection = connectionfactory.createqueueconnection("guest", "guest"); got exception: hornetqexception[errorcode=105 message=unable validate user: guest

and when trying create queues with
queueconnection = connectionfactory.createqueueconnection(); got exception: hornetqexception[errorcode=105 message=unable validate user: null

after setting allowclientlogin true in $jboss_home/server//deploy/hornetq/hornetq-jboss-beans.xml, succed in creating queues.

<bean name="hornetqsecuritymanager" class="org.hornetq.integration.jboss.security.jbossassecuritymanager"> <start ignored="true"/> <stop ignored="true"/> <depends>jbosssecurityjndicontextestablishment</depends> <property name="allowclientlogin">true</property> <property name="authoriseonclientlogin">true</property> </bean>


Comments

Popular posts from this blog

php - What is the difference between $_SERVER['PATH_INFO'] and $_SERVER['ORIG_PATH_INFO']? -

fortran - Function return type mismatch -

queue - mq_receive: message too long -