1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
Notification Broker Binding Sample
==================================
This sample illustrates the use of <binding.notification/> with a
broker.
The README in the samples directory (the directory above this) provides
general instructions about building and running samples. Take a look there
first.
Sample Overview
---------------
This sample illustrates the use of a notification broker that is located in a
separate (and remote) composite with respect to any producers or consumers. As
such, this sample is run in conjunction with the binding-notification-producer
sample, the binding-notification-consumer sample, or both. Take a look at the
composite file or the .svg file which shows the composite file in pictorial form.
The composite service and composite reference each have a <binding.notification/>
that handles the remote communication. This binding includes an 'ntm' attribute
that refers to the notification type manager, which manages the connectivity of
producers, consumers and brokers, and which (for this sample) is assumed to be
running on http://localhost:8083. The ntm is a system component that is included in
and runs as part of the binding-notification module.
This sample also illustrates the use of a wsdl interface in the notification
component's <implementation.notification/>. This allows messages sent and received
via <binding.notification/> to be transported as literal xml over http.
Building And Running The Sample Using Maven
-------------------------------------------
With either the binary or source distributions the sample can be built and run
using Maven as follows.
cd binding-notification-broker
mvn
Sample Usage
------------
This sample is run using the tuscany binary distribution. To run it, first set the
following environment variables:
set MAVEN_REPO=<Directory where your maven repo resides, e.g. \Documents and Settings\Administrator\.m2\repository>
set NOTIFICATION_IMPL_JAR=%MAVEN_REPO%\org\apache\tuscany\sca\tuscany-implementation-notification\1.0-incubating-SNAPSHOT\tuscany-implementation-notification-1.0-incubating-SNAPSHOT.jar
set NOTIFICATION_BINDING_JAR=%MAVEN_REPO%\org\apache\tuscany\sca\tuscany-binding-notification\1.0-incubating-SNAPSHOT\tuscany-binding-notification-1.0-incubating-SNAPSHOT.jar
set STAX_JAR=%MAVEN_REPO%\stax\stax\1.1.1-dev\stax-1.1.1-dev.jar
set TUSCANY_BIN_DISTRO=<Directory where the distro was extracted, e.g. \Devt\tuscany-sca-distr\tuscany-sca-1.0-incubating-SNAPSHOT>
set TUSCANY_SCA_MANIFEST_JAR=%TUSCANY_BIN_DISTRO%\lib\tuscany-sca-manifest.jar
Then navigate to this sample directory and do:
java -Dnotification.httpPort=8080 -cp "target\sample-binding-notification-broker-1.0-incubating-SNAPSHOT.jar;%NOTIFICATION_IMPL_JAR%;%NOTIFICATION_BINDING_JAR%;%STAX_JAR%;%TUSCANY_SCA_MANIFEST_JAR%" notification.broker.TrafficAdvisoryServer
this should bring up the following prompt:
Send a report value, ^C or <end> to end
at this point you should be able to type a message to send, for instance:
Traffic congestion
Notice that before you try to receive any message, you should bring up the
consumer sample or another broker sample. When you have finished using this
sample, type 'end' or ^C to end.
Also notice that '-Dnotification.httpPort=8080' is used in the java command.
This indicates the port the sample should use. This also says that this server
is not going to play the role of ntm, given our previous assumption. It is important
that the first one of the producer, consumer or broker sample that is run be the
one that uses '-Dnotification.httpPort=8083', otherwise there is no ntm to talk
to and an exception will be thrown.
Sample directory structure:
---------------------------
binding-notification-broker/
src/
main/
java/
notification.broker/
TestCaseProducer.java - interface for the producer component
TrafficAdvisory.java - remote interface referred to by the producer component
and for the consumer component
TrafficAdvisoryConsumer.java - implementation for the consumer components
TrafficAdvisoryProducer.java - implementation for the producer component
TrafficAdvisoryServer.java - server class including main entry point
resources/
wsdl/
TrafficAdvisory.wsdl - remote interface for the notification component
TrafficAdvisoryNotification.componentType - the component type referred to by
<implementation.notification/>
TrafficAdvisoryNotification.composite - the main composite including producer, consumer and
notification components, and composite service and reference
pom.xml - the Maven build file
|