You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@servicemix.apache.org by "Jean-Baptiste Onofré (JIRA)" <ji...@apache.org> on 2009/09/01 20:54:12 UTC

[jira] Commented: (SMXCOMP-627) java.lang.NullPointerException if Notify message does not specify To field in header

    [ https://issues.apache.org/activemq/browse/SMXCOMP-627?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=53954#action_53954 ] 

Jean-Baptiste Onofré commented on SMXCOMP-627:
----------------------------------------------

I moved this issue into the ServiceMix component project.

> java.lang.NullPointerException if Notify message does not specify To field in header
> ------------------------------------------------------------------------------------
>
>                 Key: SMXCOMP-627
>                 URL: https://issues.apache.org/activemq/browse/SMXCOMP-627
>             Project: ServiceMix Components
>          Issue Type: Bug
>          Components: servicemix-wsn2005
>    Affects Versions: 3.2.3
>         Environment: I am using servicemix 3.2.3 on a virtual windows XP machine.  You can use the example wsn-http-binding example to reproduce this error.
>            Reporter: David N Perkins
>            Assignee: Jean-Baptiste Onofré
>            Priority: Minor
>
> If a notification message is sent without specifying the To element in the Header servicemix will error.
> For example, change this code in the client example of the notify message:
> <env:Header>
> <wsa:To>
> http://www.consumer.org/service/endpoint
> </wsa:To>
> </env:Header>
> To:
> <env:Header>
> </env:Header>
> Then servicemix will first report this error:
> WARN  - DeliveryChannelImpl            - Error calling listener: null
> java.lang.NullPointerException
>         at org.apache.servicemix.jbi.monitoring.StatisticsService.onExchangeAcce
> pted(StatisticsService.java:307)
>         at org.apache.servicemix.jbi.monitoring.StatisticsService$3.exchangeAcce
> pted(StatisticsService.java:186)
>         at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBoun
> d(DeliveryChannelImpl.java:608)
>         at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlo
> w.java:172)
>         at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.j
> ava:167)
>         at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.jav
> a:134)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:651)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:676)
>         at java.lang.Thread.run(Thread.java:595)
> And then report this error after a minute or so:
> ERROR - HttpComponent                  - Error processing exchange InOnly[
>   id: ID:134.253.165.148-123293e28fe-19:0
>   status: Active
>   role: provider
>   endpoint: http://www.consumer.org/service/endpoint
>   in: <?xml version="1.0" encoding="UTF-8"?><ns2:Notify xmlns:ns2="http://docs.o
> asis-open.org/wsn/b-2" xmlns="http://www.w3.org/2005/08/addressing" xmlns:ns3="h
> ttp://docs.oasis-open.org/wsn/t-1" xmlns:ns4="http://docs.oasis-open.org/wsrf/bf
> -2"><ns2:NotificationMessage><ns2:Topic Dialect="http://docs.oasis-open.org/wsn/
> t-1/TopicExpression/Simple">
> myTopic
> </ns2:Topic><ns2:Message><alarm:Alarm xmlns:alarm="http://alarms.some-host"><Nam
> e xmlns="" xmlns:ns6="http://www.w3.org/2005/08/addressing">Kettle Overfill</Nam
> e><Desc xmlns="" xmlns:ns6="http://www.w3.org/2005/08/addressing">Kettle Overfil
> l Alarm</Desc><Date xmlns="" xmlns:ns6="http://www.w3.org/2005/08/addressing">20
> 07-09-22-12:00:30:100</Date><Severity xmlns="" xmlns:ns6="http://www.w3.org/2005
> /08/addressing">3</Severity><Value xmlns="" xmlns:ns6="http://www.w3.org/2005/08
> /addressing">110.2</Value><Ack xmlns="" xmlns:ns6="http://www.w3.org/2005/08/add
> ressing">false</Ack>
> </alarm:Alarm></ns2:Message></ns2:NotificationMessage></ns2:Notify>
> ]
> java.net.ConnectException: Connection timed out: connect
>         at java.net.PlainSocketImpl.socketConnect(Native Method)
>         at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
>         at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
>         at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
>         at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:367)
>         at java.net.Socket.connect(Socket.java:524)
>         at java.net.Socket.connect(Socket.java:474)
>         at java.net.Socket.<init>(Socket.java:371)
>         at java.net.Socket.<init>(Socket.java:244)
>         at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.c
> reateSocket(DefaultProtocolSocketFactory.java:79)
>         at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.c
> reateSocket(DefaultProtocolSocketFactory.java:121)
>         at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java
> :706)
>         at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$Http
> ConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1321)
>         at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(Htt
> pMethodDirector.java:386)
>         at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMe
> thodDirector.java:170)
>         at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav
> a:396)
>         at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav
> a:346)
>         at org.apache.servicemix.http.processors.ProviderProcessor.process(Provi
> derProcessor.java:168)
>         at org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLi
> feCycle.java:538)
>         at org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(Async
> BaseLifeCycle.java:490)
>         at org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLife
> Cycle.java:46)
>         at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBoun
> d(DeliveryChannelImpl.java:620)
>         at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlo
> w.java:172)
>         at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.j
> ava:167)
>         at org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.jav
> a:134)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:651)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:676)
>         at java.lang.Thread.run(Thread.java:595)
> The To element should not have to be filled in as it is not part of the ws-notification spec and if you already know who the message is suppose to go to then why use an esb?  Just send the message strait to the recipient.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.