Hi Fraser, there is a bug in Java client disallowing no credentials option, see https://issues.apache.org/jira/browse/QPID-3396.
Kind regards, Pavel ----- Original Message ----- > From: "Fraser Adams" <fraser.ad...@blueyonder.co.uk> > To: users@qpid.apache.org > Sent: Friday, January 25, 2013 11:07:29 AM > Subject: Could somebody *please* explain Java Connection URLs...:-) > > It's a little embarrassing 'cause I've kind of been using these for a > couple of years, but as they are ever so slightly obtuse :-> I've > generally been lazy/pragmatic and did copy'n'paste of things that > have > worked. > > > Because of the various URL differences (the ones used by the python > tools, the qpid::messaging amqp URL and the Java ConnectionURL I also > wrote a ConnectionHelper class to allow me to specify URLs in any > format). This class basically creates a Java ConnectionURL with > sensible > values filled in when I specify one of the shorter (AKA more > convenient!!) formats. > > I'm generally OK on the brokerList sub URLs and the options I put in > there seem to be fine..... > > However I've just been bitten. 'Cause I've been a bit lazy and mostly > tested and tinkered with qpidd --auth no or actually used a proper > user/password I ended up having defaults of guest:guest in > ConnectionHelper. This hasn't hitherto been an issue for me but > standing > up a vanilla qpidd with auth yes the unsecured authentication > username > is anonymous *not* guest..... > > > > The documentation > http://qpid.apache.org/books/0.20/Programming-In-Apache-Qpid/html/QpidJNDI.html#id2553965 > says: > > amqp://[<user>:<pass>@][<clientid>]<virtualhost>[?<option>='<value>'[&<option>='<value>']] > > But I'm not convinced that's accurate. I've been hacking around with > a > few ConnectionURLs in a JNDI file and > > # simple URL with user = guest > #connectionfactory.ConnectionFactory = > amqp://guest:guest@clientid/test?brokerlist='tcp://localhost:5672' > > # Omitting the clientid bit seems to work OK > #connectionfactory.ConnectionFactory = > amqp://guest:guest@/test?brokerlist='tcp://localhost:5672' > > # Omitting the virtualhost bit seems to work too, but the slash is > important e.g. /test and / work test does not?? > #connectionfactory.ConnectionFactory = > amqp://guest:guest@/?brokerlist='tcp://localhost:5672' > > > But I *cannot* get/figure out how to do anonymous from a Java Client > to > a C++ broker. > > According to the BNF form in the documentation > connectionfactory.ConnectionFactory = > amqp://clientid/test?brokerlist='tcp://localhost:5672' > > *should* work as [<user>:<pass>@] ought to be optional, but that just > gives "connectionFactory lookup failed, retrying" with both --auth no > and --auth yes > > Same for > > connectionfactory.ConnectionFactory = > amqp://@clientid/test?brokerlist='tcp://localhost:5672' > > If I do > > connectionfactory.ConnectionFactory = > amqp://:@clientid/test?brokerlist='tcp://localhost:5672' > > That actually connects to a broker with --auth no, but barfs with an > error "warning Failed to retrieve sasl username" on a broker with > --auth yes > > connectionfactory.ConnectionFactory = > amqp://anonymous:@clientid/test?brokerlist='tcp://localhost:5672' > Actually connects to a broker with --auth no, but barfs with no error > on > a broker with --auth yes and a "connectionFactory lookup failed, > retrying" > > When I add info logging I get > > main 2013-01-25 09:51:26,539 INFO [apache.qpid.client.AMQConnection] > Connection:amqp://anonymous:********@clientid/test?brokerlist='tcp://localhost:5672' > main 2013-01-25 09:51:26,973 INFO > [qpid.client.protocol.AMQProtocolSession] Using ProtocolVersion for > Session:0-10 > main 2013-01-25 09:51:26,995 INFO > [qpid.client.handler.ClientMethodDispatcherImpl] New Method > Dispatcher:AMQProtocolSession[null] > main 2013-01-25 09:51:27,016 INFO [apache.qpid.client.AMQConnection] > Connecting with ProtocolHandler Version:0-10 > main 2013-01-25 09:51:27,167 INFO [apache.qpid.client.AMQConnection] > Unable to connect to broker at tcp://localhost:5672 > org.apache.qpid.AMQException: *Cannot connect to broker: > connection-forced: Authentication failed [error code 320: context in > use*] > at > org.apache.qpid.client.AMQConnectionDelegate_0_10.makeBrokerConnection(AMQConnectionDelegate_0_10.java:203) > at > org.apache.qpid.client.AMQConnection.makeBrokerConnection(AMQConnection.java:609) > at org.apache.qpid.client.A............... > > Logging at DEBUG doesn't give any more useful info. > > I've tried > > connectionfactory.ConnectionFactory = > amqp://anonymous:anonymous@clientid/test?brokerlist='tcp://localhost:5672' > connectionfactory.ConnectionFactory = > amqp://anonymous:""@clientid/test?brokerlist='tcp://localhost:5672' > connectionfactory.ConnectionFactory = > amqp://anonymous:''@clientid/test?brokerlist='tcp://localhost:5672' > connectionfactory.ConnectionFactory = amqp://anonymous: > @clientid/test?brokerlist='tcp://localhost:5672' > > > and they *all* barf out :-( > > So could someone please tell me what the magic incantation is on a > Java > ConnectionURL for connecting with anonymous from a Java Client to a > C++ > broker. > > just to confirm too that I've tried qpid-config with no parameters to > the same broker with auth on and off and that works fine so it looks > like anonymous "authentication" is actually working, just not with > Java. > > I'm still using 0.12 if that makes any difference (hope to hit 0.20 > soon > but wanted to look at this first) > > > Any ideas?? > > Cheers, > Frase > > > > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org For additional commands, e-mail: users-h...@qpid.apache.org