Notification Producer Binding Sample ==================================== This sample illustrates the use of with a remote producer. 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 producer that is located in a separate (and remote) composite with respect to any consumers. As such, this sample is run in conjunction with the binding-notification-consumer sample, the binding-notification-broker sample, or both. Take a look at the composite file or the .svg file which shows the composite file in pictorial form. The composite reference, referred to by the notification component, has a 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 . This allows messages sent and received via to be transported as literal xml over http. Sample Usage ------------ These instructions assume that you will start the notification samples in the following order: binding-notification-consumer binding-notification-broker binding-notification-producer For a clean shutdown without exceptions, you should end the notification samples in the following order: binding-notification-producer binding-notification-broker binding-notification-consumer This sample is run using the tuscany binary distribution. To see what it does, first start the consumer and broker samples. When these are running, open a command prompt, navigate to this sample's directory and do ant run OR if you don't have ant, on Windows, use the following command: java -Dnotification.httpPort=8081 -cp ..\..\lib\tuscany-sca-manifest.jar;target\sample-binding-notification-producer.jar notification.producer.TrafficAdvisoryServer on *nix, use the following command: java -Dnotification.httpPort=8081 -cp ../../lib/tuscany-sca-manifest.jar:target/sample-binding-notification-producer.jar notification.producer.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 send any message, you should bring up the consumer sample or the broker sample. When you have finished using this sample, type 'end' or ^C to end. Also notice that '-Dnotification.httpPort=8081' 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-producer/ src/ main/ java/ notification.producer/ TestCaseProducer.java - interface for the producer component TrafficAdvisory.java - remote interface referred to by the producer component 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 TrafficAdvisoryNotification.composite - the main composite including producer and notification components, and composite reference test/ java/ notification.producer/ TrafficAdvisoryTestCase.java - JUnit test case resources/ wsdl/ TrafficAdvisory.wsdl - remote interface for the notification component TrafficAdvisoryNotification.componentType - the component type referred to by TrafficAdvisoryNotification.composite - the main composite including producer and notification components, and composite reference binding-notification-producer.png - a pictorial representation of the sample .composite file build.xml - the Ant build file pom.xml - the Maven build file Building And Running The Sample Using Ant ----------------------------------------- With the binary distribution the sample can be built and run using Ant as follows cd binding-notification-producer ant compile ant run You should see the following output from the run target. run: [java] Sep 14, 2007 10:31:45 AM org.apache.tuscany.sca.http.jetty.JettyServer addServletMapping [java] INFO: Added Servlet mapping: http://localhost:8081/producer/trafficAdvisory 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-producer mvn You should see the following output from the test phase. ------------------------------------------------------- T E S T S ------------------------------------------------------- Running notification.producer.TrafficAdvisoryTestCase Only instantiating and closing domain ... Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.252 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 This shows that the Junit test cases have run successfully.