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.
> >>>
> >
> >
> >
> >
>