// importy...

public class OrderSenderAppService {
  // sesja i odbiorca kolejki: patrz interfejs JMS
  private QueueSession orderQueueSession;
  private QueueSender orderQueueSender;

  // wartoci powinny pochodzi plikw waciwoci
  private String connectionFactoryName =
      "PendingOrdersQueueFactory";
  private String queueName = "PendingOrders";

  // uywamy lokalizatora usug do znalezienia komponentw
  // administrowanych przez JMS, czyli Queue fabryki Queue Connection
  private JMSServiceLocator serviceLocator;
  . . .
  // metoda inicjalizacji i tworzenia nadawcy kolejki
  private void createSender() {
    try {
      // uycie ServiceLocator do pobrania fabryki Queue
      // Connection w sposb podobny jak w kodzie z Service Activator
      serviceLocator = ServiceLocator.getInstance();
      queueConnectionFactory =
          serviceLocator.getQueueConnectionFactory(
          connectionFactoryName);
      queueConnection =
          queueConnectionFactory.createQueueConnection();

      // Uycie metod i parametrw opisane w JMS API
      orderQueueSession =
          queueConnection.createQueueSession(. . .);
      Queue ordersQueue =
          serviceLocator.getQueue(queueName);
      orderQueueSender =
          orderQueueSession.createSender(ordersQueue);
    }
    catch(Exception excp) {
      // obsuga bdu utworzenia nadawcy
    }
  }


  // metoda przekazywania zamwienia do pozostaych usug
  // w celu przetworzenia asynchronicznego
  public void sendOrder(Order order) {
    try {
      // utworzenie nowego Message w celu wysania obiektu Order
      ObjectMessage orderObjectMessage =
          queueSession.createObjectMessage(order);

      // ustawienie waciwoci obiektu komunikatu 
      // i trybu dostarczenia
      // See JMS API for ObjectMessage

      // Wysanie Order w komunikacie
      orderObjectMessage.setObject(order);

      // wysanie komunikatu do Queue
      orderQueueSender.send(orderObjectMessage);
    
      . . .
    } catch (Exception e) {
      // obsuga wyjtkw
    }
    . . .
  }

  . . .

  public void close() {
    try {
      // czyszczenie przed zamkniciem
      orderQueueReceiver.setMessageListener(null);   
      orderQueueSession.close();     
    }
    catch(Exception excp) {
      // obsuga wyjtku bdu przy zamykaniu
    }
  }
}