servicemix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Baptiste Onofré (JIRA) <j...@apache.org>
Subject [jira] Updated: (SM-2033) WS-Notification subscriptions work on 3.3.2 but not on 4.2.0
Date Thu, 17 Feb 2011 19:29:24 GMT

     [ https://issues.apache.org/jira/browse/SM-2033?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Jean-Baptiste Onofré updated SM-2033:
-------------------------------------

    Fix Version/s:     (was: 4.0)
                   servicemix-utils-1.5.0

> WS-Notification subscriptions work on 3.3.2 but not on 4.2.0
> ------------------------------------------------------------
>
>                 Key: SM-2033
>                 URL: https://issues.apache.org/jira/browse/SM-2033
>             Project: ServiceMix
>          Issue Type: Bug
>          Components: servicemix-utils
>         Environment: Windows 7 + Cygwin
>            Reporter: Matthieu Cormier
>            Assignee: Jean-Baptiste Onofré
>             Fix For: servicemix-utils-1.5.0
>
>         Attachments: echoServer.zip, servicemix-utils-1.2.0.jar
>
>
> In order to explain this issue I will first go through how service mix behaves correctly
in 3.3.2 and then explain how it works incorrectly in 4.2.0.
> 1. To see publishing working you need a simple echo server.  An echo server is a simple
server that listens on a port and prints what it receives to standard output.  This is very
useful when establishing the behaviour of a server.  For this example we will run the echo
server on port 4444. (see file X)
> 2. There is a documented issue in 3.3.2 with regard to WS-Notification.  Jira SM-1783
(https://issues.apache.org/jira/browse/SM-1783).  This issue is documented as fixed in the
yet to be released 3.4.  If you are testing with 3.3.2 then you must patch the file FragmentStreamReader.class
which is located in servicemix-utils.jar.  
> 3.  Once you have the echo server running and the servicemix-utils.jar patched you are
ready to run the server.  Run the server located in examples\wsn-http-binding using  ..\..\bin\servicemix
servicemix.xml or some derivative.
> 4.  Once servicemix has started execute the following soap requests.  
> -- Subscribe Soap Message -- 
> <env:Envelope
>     xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
>     xmlns:wsa="http://www.w3.org/2005/08/addressing">
> <env:Header>
> <wsa:ReplyTo>
>       <wsa:Address>http://localhost:4444</wsa:Address>
>  </wsa:ReplyTo>
>  <wsa:From>
>       <wsa:Address>http://localhost:4444</wsa:Address>
>  </wsa:From>
> </env:Header>
>   <env:Body>
>     <wsnt:Subscribe
>       xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2"
>       xmlns:ncex="http://www.consumer.org"
>       xmlns:npex="http://www.producer.org">
>       <wsnt:ConsumerReference>
>         <wsa:Address>
>           http://localhost:4444
>         </wsa:Address>
>       </wsnt:ConsumerReference>
>       <wsnt:Filter>
>         <wsnt:TopicExpression
>             Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">
>           BrewProcess
>         </wsnt:TopicExpression>
>       </wsnt:Filter>
>     </wsnt:Subscribe>
>   </env:Body>
> </env:Envelope>
> -- End Subscribe Soap Message -- 
> This request will subscribe the echo server to any messages sent to the topic BrewProcess.
 Then the following Soap request which will publish information to the BrewProcess Topic.
 ServiceMix will see that there is a subscriber to that topic and relay that message to localhost:4444
as defined in the subscription request above.  The echo server will be listening on port 4444
and will receive and print out the message.
> -- Notify Soap Message -- 
> <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
>  xmlns:wsa="http://www.w3.org/2005/08/addressing">
> <env:Header>
> </env:Header>
> <env:Body>
> <wsnt:Notify xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2">
> <wsnt:NotificationMessage>
> <wsnt:Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">
> BrewProcess
> </wsnt:Topic>
> <wsnt:Message>
> <alarm:Alarm xmlns:alarm="http://alarms.some-host">
> <Name>Kettle Overfill</Name>
> <Desc>Kettle Overfill Alarm</Desc>
> <Date>2007-09-22-12:00:30:100</Date>
> <Severity>3</Severity>
> <Value>110.2</Value>
> <Ack>false</Ack>
> </alarm:Alarm>
> </wsnt:Message>
> </wsnt:NotificationMessage>
> </wsnt:Notify>
> </env:Body>
> </env:Envelope>
> -- End Notify Soap Message -- 
> This is how things work in 3.3.2.  When using 4.2.0 the following happens.
> 1. You still need an echo server running
> 2. Patching servicemix-utils.jar is not necessary in 4.2.0
> 3. Copy the file apache-servicemix-3.3.2/examples/wsn-http-binding/hotdeploy/soap-demo-sa.zip
>   to apache-servicemix-4.2.0/deploy/soap-demo-sa.zip
> 4. Start servicemix 4.2.0
> 5. Send the subscribe message as above which subscribes localhost:4444 to the topic BrewProcess.
 You should see the following in the log that shows that the subscription was sucessful.
> 11:22:06,475 | INFO  | wsn2005-thread-2 | ManagementEndpointRegistry       | ement.ManagementEndpointRegistry
>   56 | Registering endpoint: org.apache.servicemix.nmr.core.InternalEndpointWrapper@d6efc021
with properties {
> jbi.internal=true, WSDL_URL=document:4, NAME={http://servicemix.org/wsnotification}Subscription:ID-192-168-0-1
> 79-12d51987db7-2-0, INTERFACE_NAME={http://docs.oasis-open.org/wsn/bw-2}PausableSubscriptionManager,
service.i
> d=270, objectClass=[Ljava.lang.String;@8bbb40, ENDPOINT_NAME=ID-192-168-0-179-12d51987db7-2-0,
SERVICE_NAME={h
> ttp://servicemix.org/wsnotification}Subscription}
> 6.  Send the notify message as above.  The message is not received by the echo server
and the following appears in the log file.
> 11:26:24,041 | WARN  | eMQ Session Task | NMR                              | .servicemix.nmr.core.ChannelImpl
>  293 | Error processing exchange [
>   id:        9a4e64b1-3a2d-4af3-baea-944b884bdda4
>   mep:       InOnly
>   status:    Active
>   role:      Consumer
>   target:    PropertyMatchingReference[{ENDPOINT_NAME=http://localhost:4444, SERVICE_NAME={urn:servicemix:http
> }HttpComponent}]
>   properties: [
>       org.apache.servicemix.senderEndpoint = {http://servicemix.org/wsnotification}Subscription:ID-192-168-0-1
> 79-12d51987db7-2-0
>       javax.jbi.messaging.MessageExchange = org.apache.servicemix.jbi.runtime.impl.InOnlyImpl@aafcb8
>       javax.jbi.messaging.sendSync = <null>
>       javax.jbi.transaction.jta = <null>
>       javax.jbi.ServiceEndpoint = org.apache.servicemix.common.ResolvedEndpoint@1b5abf7
>       org.apache.servicemix.correlationId = 9a4e64b1-3a2d-4af3-baea-944b884bdda4
>   ]
>   In: [
>     content: <?xml version="1.0" encoding="UTF-8"?><ns2:Notify xmlns:ns2="http://docs.oasis-open.org/wsn/b-2"
> xmlns="http://www.w3.org/2005/08/addressing" xmlns:ns3="http://docs.oasis-open.org/wsrf/bf-2"
xmlns:ns4="http:
> //docs.oasis-open.org/wsrf/rp-2" xmlns:ns5="http://docs.oasis-open.org/wsn/t-1"><ns2:NotificationMessage><ns2:
> Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">
> BrewProcess
> </ns2:Topic><ns2:Message><alarm:Alarm xmlns:alarm="http://alarms.some-host"
xmlns:env="http://schemas.xmlsoap.
> org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsnt="http://docs.oasis-open.org/ws
> n/b-2"><Name xmlns="" xmlns:ns10="http://www.w3.org/2005/08/addressing">Kettle
Overfill</Name><Desc xmlns="" x
> mlns:ns10="http://www.w3.org/2005/08/addressing">Kettle Overfill Alarm</Desc><Date
xmlns="" xmlns:ns10="http:/
> /www.w3.org/2005/08/addressing">2007-09-22-12:00:30:100</Date><Severity xmlns=""
xmlns:ns10="http://www.w3.org
> /2005/08/addressing">3</Severity><Value xmlns="" xmlns:ns10="http://www.w3.org/2005/08/addressing">110.2</Valu
> e><Ack xmlns="" xmlns:ns10="http://www.w3.org/2005/08/addressing">false</Ack>
> </alarm:Alarm></ns2:Message></ns2:NotificationMessage></ns2:Notify>
>   ]
> ]
> org.apache.servicemix.nmr.api.ServiceMixException: Could not dispatch exchange. No matching
endpoints.
>         at org.apache.servicemix.nmr.core.FlowRegistryImpl.dispatch(FlowRegistryImpl.java:110)
>         at org.apache.servicemix.nmr.core.ChannelImpl.dispatch(ChannelImpl.java:286)
>         at org.apache.servicemix.nmr.core.ChannelImpl.send(ChannelImpl.java:117)
>         at org.apache.servicemix.jbi.runtime.impl.DeliveryChannelImpl.send(DeliveryChannelImpl.java:178)
>         at org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:89)
>         at org.apache.servicemix.wsn.jbi.JbiSubscription.doNotify(JbiSubscription.java:137)
>         at org.apache.servicemix.wsn.jms.JmsSubscription.onMessage(JmsSubscription.java:193)
>         at org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1088)
>         at org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:127)
>         at org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:197)
>         at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
>         at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>         at java.lang.Thread.run(Thread.java:619)
> 11:26:24,044 | WARN  | eMQ Session Task | JmsSubscription                  | rvicemix.wsn.jms.JmsSubscription
>  197 | Error notifying consumer
> org.apache.servicemix.nmr.api.ServiceMixException: Could not dispatch exchange. No matching
endpoints.
>         at org.apache.servicemix.nmr.core.FlowRegistryImpl.dispatch(FlowRegistryImpl.java:110)
>         at org.apache.servicemix.nmr.core.ChannelImpl.dispatch(ChannelImpl.java:286)
>         at org.apache.servicemix.nmr.core.ChannelImpl.send(ChannelImpl.java:117)
>         at org.apache.servicemix.jbi.runtime.impl.DeliveryChannelImpl.send(DeliveryChannelImpl.java:178)
>         at org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:89)
>         at org.apache.servicemix.wsn.jbi.JbiSubscription.doNotify(JbiSubscription.java:137)
>         at org.apache.servicemix.wsn.jms.JmsSubscription.onMessage(JmsSubscription.java:193)
>         at org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1088)
>         at org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:127)
>         at org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:197)
>         at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
>         at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>         at java.lang.Thread.run(Thread.java:619)

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

Mime
View raw message