Author: alexoree
Date: Wed Jan 15 01:44:56 2014
New Revision: 1558263
URL: http://svn.apache.org/r1558263
Log:
JUDDI-717 finished and confirmed working. instructions added. javadoc updated
for UDDIClerk
Added:
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/pom.xml
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/java/
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/java/org/
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/java/org/apache/
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/java/org/apache/juddi/
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/java/org/apache/juddi/subscription/
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/java/org/apache/juddi/subscription/notify/
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/java/org/apache/juddi/subscription/notify/AMQPNotifier.java
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/java/org/apache/juddi/subscription/notify/Demo.java
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/resources/
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/resources/META-INF/
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/resources/META-INF/subscription-notification-client-uddi.xml
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/test/
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/test/java/
juddi/trunk/juddi-examples/subscription-notification-amqp/qpid-dependencies/
juddi/trunk/juddi-examples/subscription-notification-amqp/qpid-dependencies/pom.xml
juddi/trunk/juddi-examples/subscription-notification-amqp/readme.txt
Removed:
juddi/trunk/juddi-examples/subscription-notification-amqp/src/
Modified:
juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java
juddi/trunk/juddi-examples/subscription-notification-amqp/pom.xml
Modified:
juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java
URL:
http://svn.apache.org/viewvc/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java?rev=1558263&r1=1558262&r2=1558263&view=diff
==============================================================================
---
juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java
(original)
+++
juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java
Wed Jan 15 01:44:56 2014
@@ -506,6 +506,10 @@ public class UDDIClerk implements Serial
public BusinessService register(BusinessService service, Node node) {
BusinessService businessService = null;
+ if (service.getName().isEmpty()){
+ log.error("Unable to register service, a 'name'
element is required");
+ return null;
+ }
log.info("Registering service " +
service.getName().get(0).getValue()
+ " with key " + service.getServiceKey());
try {
Added:
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/pom.xml
URL:
http://svn.apache.org/viewvc/juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/pom.xml?rev=1558263&view=auto
==============================================================================
---
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/pom.xml
(added)
+++
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/pom.xml
Wed Jan 15 01:44:56 2014
@@ -0,0 +1,94 @@
+<?xml version="1.0"?>
+<project
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.juddi.example.qpid</groupId>
+ <artifactId>juddi-examples-qpid</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>juddi-qpid-notifier</artifactId>
+ <version>3.2-SNAPSHOT</version>
+ <name>jUDDI Example AMQP Notifier for Subscription callbacks</name>
+ <description>Demonstrates how to write a custom notifier for
subscriptions</description>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.juddi</groupId>
+ <artifactId>uddi-ws</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.juddi</groupId>
+ <artifactId>juddi-client</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jms_1.1_spec</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-client</artifactId>
+ <version>0.24</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-amqp-1-0-client-jms</artifactId>
+ <version>0.24</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.juddi</groupId>
+ <artifactId>juddi-core</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+ <profiles>
+ <profile>
+ <id>default</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>demo</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>1.1.1</version>
+ <executions>
+ <execution>
+ <phase>test</phase>
+ <goals>
+ <goal>java</goal>
+ </goals>
+ <configuration>
+
<mainClass>org.apache.juddi.subscription.notify.Demo</mainClass>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
Added:
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/java/org/apache/juddi/subscription/notify/AMQPNotifier.java
URL:
http://svn.apache.org/viewvc/juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/java/org/apache/juddi/subscription/notify/AMQPNotifier.java?rev=1558263&view=auto
==============================================================================
---
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/java/org/apache/juddi/subscription/notify/AMQPNotifier.java
(added)
+++
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/java/org/apache/juddi/subscription/notify/AMQPNotifier.java
Wed Jan 15 01:44:56 2014
@@ -0,0 +1,160 @@
+/*
+ * Copyright 2013 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.juddi.subscription.notify;
+
+import java.net.URISyntaxException;
+import java.rmi.RemoteException;
+import java.util.Properties;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.api_v3.AccessPointType;
+import org.apache.juddi.config.AppConfig;
+import org.apache.juddi.jaxb.JAXBMarshaller;
+import org.apache.juddi.model.BindingTemplate;
+import org.uddi.api_v3.DispositionReport;
+import org.uddi.api_v3.Result;
+import org.uddi.subr_v3.NotifySubscriptionListener;
+import org.uddi.v3_service.DispositionReportFaultMessage;
+
+/**
+ * AMQP Notifier
+ *
+ * This is designed to enable users to setup AMQP based alerts for UDDI
+ * subscriptions
+ *
+ * This class is partically complete, but it is largely untested and lacks any
+ * kind of
+ *
+ * the following settings need to be added to the juddiv3.xml file
+ *
amqp.java.naming.factory.initial=org.apache.qpid.jndi.PropertiesFileInitialContextFactory
+ * amqp.connectionfactory.qpidConnectionfactory amqp.destination=(some topic or
+ * queue name) amqp.destination.type=topic
+ *
+ * usage create a service/bindingtemplate/accessPoint where the value is
+ * amqp://url_to_qpid/amqp The useType must be "endPoint". create a
subscription
+ * where the binding template reference points to this endpoint. trigger the
+ * subscription and wait for delivery.
+ *
+ * @author <a href="mailto:[email protected]">Alex O'Ree</a>
+ */
+public class AMQPNotifier implements Notifier {
+
+ Log log = LogFactory.getLog(this.getClass());
+ String destination = null;
+
+ String exchangeType = null;
+ String exchangeName = null;
+
+ public AMQPNotifier(BindingTemplate bindingTemplate) throws
URISyntaxException, ConfigurationException {
+ super();
+ if
(!AccessPointType.END_POINT.toString().equalsIgnoreCase(bindingTemplate.getAccessPointType()))
{
+ log.error("AMQP enpoints only support AccessPointType
" + AccessPointType.END_POINT);
+ }
+ String accessPointUrl =
bindingTemplate.getAccessPointUrl().toLowerCase();
+ if (!accessPointUrl.startsWith("amqp:")) {
+ log.warn("AMQP accessPointUrl for bindingTemplate " +
bindingTemplate.getEntityKey()
+ + " should start with 'amqp:'");
+ }
+ destination = accessPointUrl;
+ for (int i = 0; i <
bindingTemplate.getTmodelInstanceInfos().size(); i++) {
+ if
(bindingTemplate.getTmodelInstanceInfos().get(i).getTmodelKey().equals(Demo.TMODEL_DESTINATION_TYPE))
{
+ exchangeType =
bindingTemplate.getTmodelInstanceInfos().get(i).getInstanceParms();
+ }
+ if
(bindingTemplate.getTmodelInstanceInfos().get(i).getTmodelKey().equals(Demo.TMODEL_DESTINATION_NAME))
{
+ exchangeName =
bindingTemplate.getTmodelInstanceInfos().get(i).getInstanceParms();
+ }
+ }
+ }
+
+ @Override
+ public DispositionReport
notifySubscriptionListener(NotifySubscriptionListener body) throws
DispositionReportFaultMessage, RemoteException {
+ Connection connection = null;
+ Context context = null;
+ boolean success = false;
+ String err = null;
+ try {
+ if (destination != null && exchangeType != null &&
exchangeName != null) {
+ log.info("Sending notification AMQP to " +
destination);
+ Properties properties = new Properties();
+
+ properties.put("java.naming.factory.initial",
"org.apache.qpid.jndi.PropertiesFileInitialContextFactory");
+
properties.put("connectionfactory.qpidConnectionfactory", destination);
+ properties.put("destination." +
exchangeName,exchangeType);
+
+ context = new InitialContext(properties);
+
+ ConnectionFactory connectionFactory =
(ConnectionFactory) context.lookup("qpidConnectionfactory");
+ connection =
connectionFactory.createConnection();
+ connection.start();
+
+ Session session =
connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ Destination destinationLocal = (Destination)
context.lookup(exchangeName);
+
+ MessageProducer messageProducer =
session.createProducer(destinationLocal);
+
+ String subscriptionResultXML =
JAXBMarshaller.marshallToString(body, JAXBMarshaller.PACKAGE_SUBSCR_RES);
+ TextMessage message =
session.createTextMessage(subscriptionResultXML);
+ messageProducer.send(message);
+ success = true;
+
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("Error deliverying AMQP subscription " +
e.getMessage());
+ log.debug("Error deliverying AMQP subscription " +
e.getMessage(),e);
+ err = e.getMessage();
+
+ } finally {
+ try {
+ if (connection != null) {
+ connection.close();
+ }
+ } catch (JMSException ex) {
+ log.error(null, ex);
+ }
+ try {
+ if (context != null) {
+ context.close();
+ }
+ } catch (NamingException ex) {
+ log.error(null, ex);
+ }
+ }
+ if (!success) {
+ throw new DispositionReportFaultMessage(err, null);
+ }
+ DispositionReport dr = new DispositionReport();
+ Result res = new Result();
+ dr.getResult().add(res);
+
+ return dr;
+ }
+}
Added:
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/java/org/apache/juddi/subscription/notify/Demo.java
URL:
http://svn.apache.org/viewvc/juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/java/org/apache/juddi/subscription/notify/Demo.java?rev=1558263&view=auto
==============================================================================
---
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/java/org/apache/juddi/subscription/notify/Demo.java
(added)
+++
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/java/org/apache/juddi/subscription/notify/Demo.java
Wed Jan 15 01:44:56 2014
@@ -0,0 +1,221 @@
+/*
+ * Copyright 2014 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.juddi.subscription.notify;
+
+import java.util.Properties;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageListener;
+import javax.jms.Session;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.xml.datatype.DatatypeFactory;
+import org.apache.juddi.api_v3.AccessPointType;
+import org.apache.juddi.v3.client.UDDIConstants;
+import org.apache.juddi.v3.client.config.UDDIClerk;
+import org.apache.juddi.v3.client.config.UDDIClient;
+import org.apache.qpid.client.AMQAnyDestination;
+import org.apache.qpid.client.AMQConnection;
+import org.apache.qpid.client.AMQTopic;
+import org.uddi.api_v3.AccessPoint;
+import org.uddi.api_v3.BindingTemplate;
+import org.uddi.api_v3.BindingTemplates;
+import org.uddi.api_v3.BusinessEntity;
+import org.uddi.api_v3.BusinessService;
+import org.uddi.api_v3.BusinessServices;
+import org.uddi.api_v3.Description;
+import org.uddi.api_v3.FindBusiness;
+import org.uddi.api_v3.FindQualifiers;
+import org.uddi.api_v3.FindService;
+import org.uddi.api_v3.FindTModel;
+import org.uddi.api_v3.InstanceDetails;
+import org.uddi.api_v3.Name;
+import org.uddi.api_v3.TModel;
+import org.uddi.api_v3.TModelInstanceDetails;
+import org.uddi.api_v3.TModelInstanceInfo;
+import org.uddi.sub_v3.Subscription;
+import org.uddi.sub_v3.SubscriptionFilter;
+
+/**
+ *
+ * @author Alex O'Ree
+ */
+public class Demo implements MessageListener {
+
+ public static void main(String[] args) throws Exception {
+ System.out.println("Hello world!");
+ new Demo().Fire();
+ }
+
+ public static final String TOPIC = "UDDI";
+ public static final String TMODEL_KEY_BASE = "uddi:amqptestdomain:";
+ public static final String TMODEL_KEY_TOPIC = TMODEL_KEY_BASE +
":topic";
+ public static final String TMODEL_DESTINATION_TYPE = TMODEL_KEY_BASE +
"amqp.destination.type";
+ public static final String TMODEL_DESTINATION_NAME = TMODEL_KEY_BASE +
"amqp.destination";
+
+ private void Fire() throws Exception {
+ String amqpURL =
"amqp://guest:guest@clientid/?brokerlist='tcp://localhost:5672'";
+ UDDIClient client = new
UDDIClient("META-INF/subscription-notification-client-uddi.xml");
+ UDDIClerk clerk = client.getClerk("default");
+ String base = "uddi:amqptestdomain:";
+ String lang = "en";
+
+ TModel destinationType = new TModel();
+ destinationType.setName(new Name("AMQP Destination Type",
lang));
+ destinationType.getDescription().add(new
Description("topicExchange, queue, etc", lang));
+ destinationType.setTModelKey(TMODEL_DESTINATION_TYPE);
+
+ TModel destinationName = new TModel();
+ destinationName.setName(new Name("AMQP Destination Name",
lang));
+ destinationName.getDescription().add(new Description("The name
of the topic or queue", lang));
+ destinationName.setTModelKey(TMODEL_DESTINATION_NAME);
+
+ TModel createKeyGenator = UDDIClerk.createKeyGenator(base +
"keygenerator", "AMQP Test Key domain", lang);
+ BusinessEntity be = new BusinessEntity();
+ be.setBusinessKey(base + "business");
+ be.getName().add(new Name("AMQP Test callbacks", lang));
+ be.setBusinessServices(new BusinessServices());
+ BusinessService bs = new BusinessService();
+ bs.getName().add(new Name("AMQP Test service", lang));
+ bs.setBindingTemplates(new BindingTemplates());
+ bs.setBusinessKey(base + "business");
+ bs.setServiceKey(base + "service");
+
+ BindingTemplate bt = new BindingTemplate();
+ bt.setBindingKey(base + "binding");
+ bt.setServiceKey(base + "service");
+ bt.setAccessPoint(new AccessPoint(amqpURL,
AccessPointType.END_POINT.toString()));
+ bt.setTModelInstanceDetails(new TModelInstanceDetails());
+
+ TModelInstanceInfo version =
UDDIClerk.createServiceInterfaceVersion("1.0", lang);
+
bt.getTModelInstanceDetails().getTModelInstanceInfo().add(version);
+
+ TModelInstanceInfo transport = new TModelInstanceInfo();
+ transport.setTModelKey(UDDIConstants.TRANSPORT_AMQP);
+
bt.getTModelInstanceDetails().getTModelInstanceInfo().add(transport);
+
+ TModelInstanceInfo topic = new TModelInstanceInfo();
+ topic.setTModelKey(TMODEL_DESTINATION_TYPE);
+ topic.setInstanceDetails(new InstanceDetails());
+ topic.getInstanceDetails().setInstanceParms("amq.topic");
+
bt.getTModelInstanceDetails().getTModelInstanceInfo().add(topic);
+
+ TModelInstanceInfo name = new TModelInstanceInfo();
+ name.setTModelKey(TMODEL_DESTINATION_NAME);
+ name.setInstanceDetails(new InstanceDetails());
+ name.getInstanceDetails().setInstanceParms(TOPIC);
+
bt.getTModelInstanceDetails().getTModelInstanceInfo().add(name);
+
+ bs.getBindingTemplates().getBindingTemplate().add(bt);
+
+ be.getBusinessServices().getBusinessService().add(bs);
+ try {
+ System.out.println("Registering tModel");
+ clerk.register(createKeyGenator);
+ System.out.println("Registering destination type
tmodel");
+ clerk.register(destinationType);
+ System.out.println("Registering destination name
tmodel");
+ clerk.register(destinationName);
+
+ System.out.println("Registering business with callback
definition");
+ clerk.register(be);
+
+ Properties p = new Properties();
+ p.setProperty("java.naming.factory.initial",
"org.apache.qpid.jndi.PropertiesFileInitialContextFactory");
+
p.setProperty("connectionfactory.qpidConnectionfactory", amqpURL);
+ p.setProperty("destination." + TOPIC, "amq.topic");
+
+ System.out.println("Connecting to AMQP at " + amqpURL);
+
+ Context context = new InitialContext(p);
+
+ ConnectionFactory connectionFactory =
(ConnectionFactory) context.lookup("qpidConnectionfactory");
+ Connection connection =
connectionFactory.createConnection();
+ connection.start();
+
+ Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
+ Destination destination = (Destination)
context.lookup(TOPIC);
+
+ MessageConsumer consumer =
session.createConsumer(destination);
+
+ consumer.setMessageListener(this);
+ System.out.println("Connected and listening...");
+
+ Subscription sub = new Subscription();
+
sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(1000));
+ sub.setBindingKey(base + "binding");
+ sub.setSubscriptionKey(base + "sub-fb");
+ sub.setSubscriptionFilter(new SubscriptionFilter());
+ sub.getSubscriptionFilter().setFindBusiness(new
FindBusiness());
+
sub.getSubscriptionFilter().getFindBusiness().setFindQualifiers(new
FindQualifiers());
+
sub.getSubscriptionFilter().getFindBusiness().getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
+
sub.getSubscriptionFilter().getFindBusiness().getName().add(new
Name(UDDIConstants.WILDCARD, null));
+
+ Subscription subscriptionBiz = clerk.register(sub,
clerk.getUDDINode().getApiNode());
+
+ System.out.println("Registered FindBusiness
subscription key: " + (subscriptionBiz.getSubscriptionKey()) + " bindingkey: "
+ subscriptionBiz.getBindingKey());
+
+ sub = new Subscription();
+ sub.setSubscriptionKey(base + "sub-fs");
+
sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(1000));
+ sub.setBindingKey(base + "binding");
+ sub.setSubscriptionFilter(new SubscriptionFilter());
+ sub.getSubscriptionFilter().setFindService(new
FindService());
+
sub.getSubscriptionFilter().getFindService().setFindQualifiers(new
FindQualifiers());
+
sub.getSubscriptionFilter().getFindService().getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
+
sub.getSubscriptionFilter().getFindService().getName().add(new
Name(UDDIConstants.WILDCARD, null));
+
+ Subscription subscriptionSvc = clerk.register(sub,
clerk.getUDDINode().getApiNode());
+
+ System.out.println("Registered FindService
subscription key: " + (subscriptionSvc.getSubscriptionKey()) + " bindingkey: "
+ subscriptionSvc.getBindingKey());
+
+ sub = new Subscription();
+
sub.setNotificationInterval(DatatypeFactory.newInstance().newDuration(1000));
+ sub.setBindingKey(base + "binding");
+ sub.setSubscriptionKey(base + "sub-ft");
+ sub.setSubscriptionFilter(new SubscriptionFilter());
+ sub.getSubscriptionFilter().setFindTModel(new
FindTModel());
+
sub.getSubscriptionFilter().getFindTModel().setFindQualifiers(new
FindQualifiers());
+
sub.getSubscriptionFilter().getFindTModel().getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
+
sub.getSubscriptionFilter().getFindTModel().setName(new
Name(UDDIConstants.WILDCARD, null));
+
+ Subscription subscriptionTM = clerk.register(sub,
clerk.getUDDINode().getApiNode());
+
+ System.out.println("Registered FindTModel subscription
key: " + (subscriptionTM.getSubscriptionKey()) + " bindingkey: " +
subscriptionTM.getBindingKey());
+
+ System.out.println("Waiting for callbacks. Now would
be a good time to launch either another program or juddi-gui to make some
changes. Press any key to stop!");
+
+ System.out.println("Listening, press any key to quit");
+ System.in.read();
+ connection.close();
+
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ } finally {
+ //clerk.unRegisterBusiness(be.getBusinessKey());
+
//clerk.unRegisterTModel(createKeyGenator.getTModelKey());
+ }
+ }
+
+ @Override
+ public void onMessage(Message msg) {
+
+ System.out.println("Message received: " + msg);
+ }
+}
Added:
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/resources/META-INF/subscription-notification-client-uddi.xml
URL:
http://svn.apache.org/viewvc/juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/resources/META-INF/subscription-notification-client-uddi.xml?rev=1558263&view=auto
==============================================================================
---
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/resources/META-INF/subscription-notification-client-uddi.xml
(added)
+++
juddi/trunk/juddi-examples/subscription-notification-amqp/juddi-qpid-notifier/src/main/resources/META-INF/subscription-notification-client-uddi.xml
Wed Jan 15 01:44:56 2014
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<uddi xmlns="urn:juddi-apache-org:v3_client"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="classpath:/xsd/uddi-client.xsd">
+ <reloadDelay>5000</reloadDelay>
+ <client name="example-client">
+ <nodes>
+ <node>
+ <!-- required 'default' node -->
+ <name>default</name>
+ <properties>
+ <property name="serverName"
value="localhost"/>
+ <property name="serverPort"
value="8080"/>
+ <!-- for UDDI nodes that use HTTP u/p,
using the following
+ <property name="basicAuthUsername"
value="root" />
+ <property name="basicAuthPassword"
value="password" />
+ <property
name="basicAuthPasswordIsEncrypted" value="false" />
+ <property
name="basicAuthPasswordCryptoProvider"
value="org.apache.juddi.v3.client.crypto.AES128Cryptor (an example)" />-->
+ </properties>
+ <description>Main jUDDI node</description>
+ <!-- JAX-WS Transport -->
+
<proxyTransport>org.apache.juddi.v3.client.transport.JAXWSTransport</proxyTransport>
+
<custodyTransferUrl>http://${serverName}:${serverPort}/juddiv3/services/custody-transfer</custodyTransferUrl>
+
<inquiryUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiry</inquiryUrl>
+
<inquiryRESTUrl>http://${serverName}:${serverPort}/juddiv3/services/inquiryRest</inquiryRESTUrl>
+
<publishUrl>http://${serverName}:${serverPort}/juddiv3/services/publish</publishUrl>
+
<securityUrl>http://${serverName}:${serverPort}/juddiv3/services/security</securityUrl>
+
<subscriptionUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription</subscriptionUrl>
+
<subscriptionListenerUrl>http://${serverName}:${serverPort}/juddiv3/services/subscription-listener</subscriptionListenerUrl>
+
<juddiApiUrl>http://${serverName}:${serverPort}/juddiv3/services/juddi-api</juddiApiUrl>
+ </node>
+ </nodes>
+ <clerks registerOnStartup="false" >
+ <clerk name="default" node="default" publisher="uddi"
password="uddi"
+ isPasswordEncrypted="false"
cryptoProvider="org.apache.juddi.v3.client.cryptor.AES128Cryptor"/>
+ </clerks>
+ <signature>
+ <!-- signing stuff -->
+ <signingKeyStorePath>keystore.jks</signingKeyStorePath>
+ <signingKeyStoreType>JKS</signingKeyStoreType>
+ <signingKeyStoreFilePassword
+ isPasswordEncrypted="false"
+
cryptoProvider="org.apache.juddi.v3.client.crypto.AES128Cryptor">password</signingKeyStoreFilePassword>
+ <signingKeyPassword
+ isPasswordEncrypted="false"
+
cryptoProvider="org.apache.juddi.v3.client.crypto.AES128Cryptor">password</signingKeyPassword>
+ <signingKeyAlias>my special key</signingKeyAlias>
+
+
<canonicalizationMethod>http://www.w3.org/2001/10/xml-exc-c14n#</canonicalizationMethod>
+
<signatureMethod>http://www.w3.org/2000/09/xmldsig#rsa-sha1</signatureMethod>
+
<XML_DIGSIG_NS>http://www.w3.org/2000/09/xmldsig#</XML_DIGSIG_NS>
+
+ <!-- validation stuff
+ Used whenever someone views an entity that is signed
and validation is required -->
+ <!-- if this doesn't exist or is incorrect, the client
will atempt to load the standard jdk trust store-->
+ <trustStorePath>truststore.jks</trustStorePath>
+ <trustStoreType>JKS</trustStoreType>
+ <trustStorePassword
+ isPasswordEncrypted="false"
+
cryptoProvider="org.apache.juddi.v3.client.crypto.AES128Cryptor">password</trustStorePassword>
+
+ <checkTimestamps>true</checkTimestamps>
+ <checkTrust>true</checkTrust>
+ <checkRevocationCRL>true</checkRevocationCRL>
+
<keyInfoInclusionSubjectDN>false</keyInfoInclusionSubjectDN>
+ <keyInfoInclusionSerial>false</keyInfoInclusionSerial>
+
<keyInfoInclusionBase64PublicKey>true</keyInfoInclusionBase64PublicKey>
+
<digestMethod>http://www.w3.org/2000/09/xmldsig#sha1</digestMethod>
+ </signature>
+ <subscriptionCallbacks>
+ <keyDomain>uddi:somebusiness</keyDomain>
+ <listenUrl>http://MyHostname:4444/callback</listenUrl>
+
<autoRegisterBindingTemplate>false</autoRegisterBindingTemplate>
+
<autoRegisterBusinessServiceKey>uddi:somebusiness:someservicekey</autoRegisterBusinessServiceKey>
+ <signatureBehavior>DoNothing</signatureBehavior>
+ <!--valid values are
AbortIfSigned,Sign,DoNothing,SignOnlyIfParentIsntSigned, default is DoNothing-->
+ </subscriptionCallbacks>
+ <XtoWsdl>
+ <IgnoreSSLErrors>false</IgnoreSSLErrors>
+ </XtoWsdl>
+ </client>
+</uddi>
Modified: juddi/trunk/juddi-examples/subscription-notification-amqp/pom.xml
URL:
http://svn.apache.org/viewvc/juddi/trunk/juddi-examples/subscription-notification-amqp/pom.xml?rev=1558263&r1=1558262&r2=1558263&view=diff
==============================================================================
--- juddi/trunk/juddi-examples/subscription-notification-amqp/pom.xml (original)
+++ juddi/trunk/juddi-examples/subscription-notification-amqp/pom.xml Wed Jan
15 01:44:56 2014
@@ -1,121 +1,32 @@
-<?xml version="1.0"?>
-<project
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"
- xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright 2001-2009 The Apache Software Foundation. * *
Licensed
+ under the Apache License, Version 2.0 (the "License"); * you
may not
+ use this file except in compliance with the License. * You may
obtain
+ a copy of the License at * *
+ http://www.apache.org/licenses/LICENSE-2.0 * * Unless required
by
+ applicable law or agreed to in writing, software * distributed
under
+ the License is distributed on an "AS IS" BASIS, * WITHOUT
WARRANTIES
+ OR CONDITIONS OF ANY KIND, either express or implied. * See the
+ License for the specific language governing permissions and *
+ limitations under the License. * */
+ --><project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.juddi.example</groupId>
<artifactId>juddi-examples</artifactId>
<version>3.2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
</parent>
-
- <artifactId>subscription-notification-amqp</artifactId>
- <version>1.0-SNAPSHOT</version>
- <name>jUDDI Example AMQP Notifier for Subscription callbacks</name>
- <description>Demonstrates how to write a custom notifier for
subscriptions</description>
- <dependencies>
- <dependency>
- <groupId>org.apache.juddi</groupId>
- <artifactId>uddi-ws</artifactId>
- <version>3.2.0-SNAPSHOT</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.juddi</groupId>
- <artifactId>juddi-client</artifactId>
- <version>3.2.0-SNAPSHOT</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-jms_1.1_spec</artifactId>
- <version>1.0</version>
- </dependency>
- <dependency>
- <groupId>org.apache.qpid</groupId>
- <artifactId>qpid-client</artifactId>
- <version>0.24</version>
- </dependency>
- <dependency>
- <groupId>org.apache.qpid</groupId>
- <artifactId>qpid-amqp-1-0-client-jms</artifactId>
- <version>0.24</version>
- </dependency>
- <dependency>
- <groupId>org.apache.juddi</groupId>
- <artifactId>juddi-core</artifactId>
- <version>3.2.0-SNAPSHOT</version>
- <scope>provided</scope>
- </dependency>
- </dependencies>
- <build>
- <finalName>${artifactId}-${version}</finalName>
- <plugins>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>2.4</version>
- <configuration>
- <descriptorRefs>
- <descriptorRef>jar-with-dependencies</descriptorRef>
- </descriptorRefs>
- <archive>
- <manifest>
-
<mainClass>org.apache.juddi.subscription.notify.Demo</mainClass>
- </manifest>
- </archive>
- </configuration>
- <executions>
- <execution>
- <id>make-assembly</id>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- <profiles>
- <profile>
- <id>default</id>
- <activation>
- <activeByDefault>true</activeByDefault>
- </activation>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
- <profile>
- <id>demo</id>
- <build>
- <plugins>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>exec-maven-plugin</artifactId>
- <version>1.1.1</version>
- <executions>
- <execution>
- <phase>test</phase>
- <goals>
- <goal>java</goal>
- </goals>
- <configuration>
-
<mainClass>org.apache.juddi.subscription.notify.Demo</mainClass>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
-</project>
+ <groupId>org.apache.juddi.example.qpid</groupId>
+ <artifactId>juddi-examples-qpid</artifactId>
+ <name>jUDDI Qpid AMQP Notifier</name>
+ <packaging>pom</packaging>
+ <prerequisites>
+ <maven>3.0.3</maven>
+ </prerequisites>
+ <modules>
+ <module>juddi-qpid-notifier</module>
+ <module>qpid-dependencies</module>
+ </modules>
+</project>
\ No newline at end of file
Added:
juddi/trunk/juddi-examples/subscription-notification-amqp/qpid-dependencies/pom.xml
URL:
http://svn.apache.org/viewvc/juddi/trunk/juddi-examples/subscription-notification-amqp/qpid-dependencies/pom.xml?rev=1558263&view=auto
==============================================================================
---
juddi/trunk/juddi-examples/subscription-notification-amqp/qpid-dependencies/pom.xml
(added)
+++
juddi/trunk/juddi-examples/subscription-notification-amqp/qpid-dependencies/pom.xml
Wed Jan 15 01:44:56 2014
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.juddi.qpid</groupId>
+ <artifactId>service-version</artifactId>
+ <version>3.2-SNAPSHOT</version>
+ <name>Qpid Client with dependencies</name>
+ <url>http://maven.apache.org</url>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jms_1.1_spec</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-client</artifactId>
+ <version>0.24</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-amqp-1-0-client-jms</artifactId>
+ <version>0.24</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>qpid-with-dependencies</finalName>
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>2.4</version>
+ <configuration>
+ <descriptorRefs>
+
<descriptorRef>jar-with-dependencies</descriptorRef>
+ </descriptorRefs>
+
+ </configuration>
+ <executions>
+ <execution>
+ <id>make-assembly</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+
+</project>
Added: juddi/trunk/juddi-examples/subscription-notification-amqp/readme.txt
URL:
http://svn.apache.org/viewvc/juddi/trunk/juddi-examples/subscription-notification-amqp/readme.txt?rev=1558263&view=auto
==============================================================================
--- juddi/trunk/juddi-examples/subscription-notification-amqp/readme.txt (added)
+++ juddi/trunk/juddi-examples/subscription-notification-amqp/readme.txt Wed
Jan 15 01:44:56 2014
@@ -0,0 +1,22 @@
+To run this demo, first go here
+http://qpid.apache.org/
+
+1) Download the following:
+ - Java broker
+2) Start Qpid Java broker (qpid-server)
+ - Reconfigure Qpid. The goal here is to have Qpid's http management
interface rerouted to another port that 8080
+ - Login with admin/admin, add a new HTTP port and delete the old one
+ - Restart Qpid
+3) juddi-examples/subscription-notification-amqp> mvn clean install
+4) copy juddi-qpid-notifier/target/juddi-qpid-notifier-3.2-SNAPSHOT.jar to
tomcat/webapps/juddiv3.war/WEB-INF/lib
+5) copy
qpid-dependencies/target/qpid-with-dependencies-jar-with-dependencies.jar to
tomcat/webapps/juddiv3.war/WEB-INF/lib
+6) Start Tomcat with jUDDI
+7) run juddi-qpid-notifier> mvn clean install -Pdemo
+
+At this point, our AMQP client will sit and listen for changes to business,
services and tModels.
+
+It's pretty each to change something using the juddi-gui.
+ http://localhost:8080/juddi-gui
+
+
+Notes: this example is very basic and does not consider cases such as
authentication and SSL key information for connecting to Qpid.
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]