I'd recommend that you use a stable release of ActiveMQ. ActiveMQ-CPP is known to with v4.1.1 of the broker which is the latest stable release. There do appear to be some issues with communications with the 5.0-SNAPSHOT broker.
On Mon, 2007-07-23 at 02:02 -0700, seamuskerrigan wrote: > I'm running on Red Hat Linux 3 and using g++ compiler. > > Here is the C++ code that I'm running (it's taken from the > HelloWorldProducer example from activemq-cpp). The line in bold is causing > the NullPointerException in ActiveMQ. > > cms::Connection* connection; > Session* session; > Destination* destination; > MessageProducer* producer; > int numMessages; > bool useTopic = false; > std::string brokerURI = "tcp://localhost:61616?wireFormat=openwire"; > > try { > // Create a ConnectionFactory > ActiveMQConnectionFactory* connectionFactory = > new ActiveMQConnectionFactory(); > connectionFactory->setBrokerURL( brokerURI ); > > > // Create a Connection > connection = connectionFactory->createConnection(); > connection->start(); > > // free the factory, we are done with it. > delete connectionFactory; > > // Create a Session > session = connection->createSession( Session::AUTO_ACKNOWLEDGE > ); > > // Create the destination (Topic or Queue) > if( useTopic ) { > destination = session->createTopic( "TEST.FOO" ); > } else { > destination = session->createQueue( "TEST.FOO" ); > } > > // Create a MessageProducer from the Session to the Topic or > Queue > producer = session->createProducer( destination ); > producer->setDeliveryMode( DeliveryMode::NON_PERSISTENT ); > > // Create the Thread Id String > string threadIdStr = Integer::toString( > activemq::concurrent::Thread::getId() ); > > // Create a messages > string text = (string)"Hello world! from thread "; > > for( int ix=0; ix<1; ix++ ){ > TextMessage* message = session->createTextMessage( text ); > > message->setIntProperty( "Integer", ix ); > > // Tell the producer to send the message > printf( "Sent message #%d from thread %s\n", ix, > threadIdStr.c_str() ); > producer->send( message ); > > delete message; > } > > }catch ( CMSException& e ) { > e.printStackTrace(); > } > > > Tim Bish wrote: > > > > Could you provide the C++ code? Also what platform and compiler? > > > > Rob Davies wrote: > >> the c++ code must be passing in a null value for the destination name > >> > >> On Jul 21, 2007, at 4:16 PM, seamuskerrigan wrote: > >> > >>> > >>> I have succesfully set-up and ran the activemq-cpp example. However, > >>> when I > >>> try integrating the HelloWorldProducer into an existing C++ process, > >>> I've > >>> been running into problems creating the TEST.FOO queue. I have tested > >>> this > >>> using ActiveMQ 4.1.1 and 5.0 on Red Hat Linux with the same exception. > >>> > >>> I have started ActiveMQ succesfully and connect to > >>> "tcp://localhost:61616?wireFormat=openwire". But when the C++ code > >>> attemps > >>> the queue creation of TEST.FOO, I get the following exception in the > >>> ActiveMQ console window (using 5.0): > >>> > >>> Exception in thread "ActiveMQ Transport: tcp:///localhost:49120" > >>> java.lang.NullPointerException > >>> at > >>> org.apache.activemq.command.ActiveMQDestination.setPhysicalName(ActiveMQDestination.java:204) > >>> > >>> > >>> at > >>> org.apache.activemq.openwire.v2.ActiveMQDestinationMarshaller.looseUnmarshal(ActiveMQDestinationMarshaller.java:98) > >>> > >>> > >>> at > >>> org.apache.activemq.openwire.v2.ActiveMQQueueMarshaller.looseUnmarshal(ActiveMQQueueMarshaller.java:101) > >>> > >>> > >>> at > >>> org.apache.activemq.openwire.OpenWireFormat.looseUnmarshalNestedObject(OpenWireFormat.java:450) > >>> > >>> > >>> at > >>> org.apache.activemq.openwire.v2.BaseDataStreamMarshaller.looseUnmarsalCachedObject(BaseDataStreamMarshaller.java:454) > >>> > >>> > >>> at > >>> org.apache.activemq.openwire.v2.ProducerInfoMarshaller.looseUnmarshal(ProducerInfoMarshaller.java:134) > >>> > >>> > >>> at > >>> org.apache.activemq.openwire.OpenWireFormat.doUnmarshal(OpenWireFormat.java:351) > >>> > >>> > >>> at > >>> org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:275) > >>> > >>> > >>> at > >>> org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:156) > >>> > >>> > >>> at > >>> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:136) > >>> > >>> at java.lang.Thread.run(Thread.java:595) > >>> > >>> > >>> The port number in the above trace is 49120 but this varies between > >>> runs of > >>> ActiveMQ. > >>> > >>> The executing C++ reports the following exception: > >>> free(): invalid pointer 0xb54ca26c! > >>> response from futureResponse was invalid > >>> FILE: activemq/transport/ResponseCorrelator.cpp, LINE: 145 > >>> FILE: activemq/transport/ResponseCorrelator.cpp, LINE: 152 > >>> FILE: activemq/connector/openwire/OpenWireFormatNegotiator.cpp, > >>> LINE: 105 > >>> FILE: activemq/connector/openwire/OpenWireConnector.cpp, > >>> LINE: 1468 > >>> FILE: activemq/connector/openwire/OpenWireConnector.cpp, > >>> LINE: 757 > >>> FILE: activemq/core/ActiveMQSession.cpp, LINE: 376 > >>> > >>> > >>> I'm not sure what is causing this issue. Any help would be appreciated. > >>> > >>> -- > >>> View this message in context: > >>> http://www.nabble.com/NullPointerException-from-ActiveMQDestination-tf4122144s2354.html#a11723114 > >>> > >>> > >>> Sent from the ActiveMQ - User mailing list archive at Nabble.com. > >>> > > > > > > > > >