示例#1
0
  /**
   * Refresh a JMS message listener.
   *
   * @param serverKey Name of the jms-service
   * @throws GenericServiceException
   */
  public void refreshListener(String serverKey) throws GenericServiceException {
    GenericMessageListener listener = listeners.get(serverKey);

    if (listener == null)
      throw new GenericServiceException("No listener found with that serverKey.");
    listener.refresh();
  }
示例#2
0
  private GenericMessageListener loadListener(String serverKey, Element server)
      throws GenericServiceException {
    String serverName = server.getAttribute("jndi-server-name");
    String jndiName = server.getAttribute("jndi-name");
    String queueName = server.getAttribute("topic-queue");
    String type = server.getAttribute("type");
    String userName = server.getAttribute("username");
    String password = server.getAttribute("password");
    String className = server.getAttribute("listener-class");

    if (UtilValidate.isEmpty(className)) {
      if (type.equals("topic")) className = JmsListenerFactory.TOPIC_LISTENER_CLASS;
      else if (type.equals("queue")) className = JmsListenerFactory.QUEUE_LISTENER_CLASS;
    }

    GenericMessageListener listener = listeners.get(serverKey);

    if (listener == null) {
      synchronized (this) {
        listener = listeners.get(serverKey);
        if (listener == null) {
          ClassLoader cl = this.getClass().getClassLoader();

          try {
            Class<?> c = cl.loadClass(className);
            Constructor<GenericMessageListener> cn =
                UtilGenerics.cast(
                    c.getConstructor(
                        ServiceDispatcher.class,
                        String.class,
                        String.class,
                        String.class,
                        String.class,
                        String.class));

            listener =
                cn.newInstance(dispatcher, serverName, jndiName, queueName, userName, password);
          } catch (Exception e) {
            throw new GenericServiceException(e.getMessage(), e);
          }
          if (listener != null) listeners.put(serverKey, listener);
          loadable++;
        }
      }
    }
    if (listener != null && !listener.isConnected()) {
      listener.load();
      if (listener.isConnected()) connected++;
    }
    return listener;
  }