Может сервис, записанный в самооконечной.NET?

JSF 2.3 +

Для этого вы можете использовать @Push и . Ниже приведен пример запуска, который обновляет таблицу данных при событии, запущенном бэкэндом.


    #{notification.message}



    
        
    

@Named @ApplicationScoped
public class Bean {

    private List notifications;

    @Inject
    private NotificationService service;

    @Inject @Push
    private PushContext push;

    @PostConstruct
    public void load() {
        notifications = service.list();
    }

    public void onNewNotification(@Observes Notification newNotification) {
        notifications.add(0, newNotification);
        push.send("updateNotifications");
    }

    public List getNotifications() {
        return notifications;
    }

}

@Stateless
public class NotificationService {

    @Inject
    private EntityManager entityManager;

    @Inject
    private BeanManager beanManager;

    public void create(String message) {
        Notification newNotification = new Notification();
        newNotification.setMessage(message);
        entityManager.persist(newNotification);
        beanManager.fireEvent(newNotification);
    }

    public List list() {
        return entityManager
            .createNamedQuery("Notification.list", Notification.class)
            .getResultList();
    }

}

JSF 2.2 -

Если вы еще не находитесь в JSF 2.3, вам нужно перейти в сторонние библиотеки JSF.

Отмечено, что является основой для JSF 2.3 ]. Итак, если вы нашли много общего, то это правильно.

PrimeFaces использует Атмосфера под капюшонами (что неудобно для настройки без Maven). Атмосфера поддерживает websockets с возвратом SSE и длительным опросом. ICEfaces основан на древней методике длинного опроса . Все они не реализуют собственный API-интерфейс JSR356 WebSocket, который был позже представлен в Java EE 7.

OmniFaces использует собственный API-интерфейс JSR356 WebSocket (поддерживается на всех серверах Java EE 7 и Tomcat 7.0.27+). Поэтому он также очень прост в настройке и использовании (один JAR, один параметр контекста, один тег и одна аннотация). Для этого требуется только CDI (не сложно установить на Tomcat ), но он позволяет вам даже нажать от артефакта не-JSF (например, @WebServlet). В целях безопасности и безопасности JSF, он поддерживает только односторонний push (от сервера к клиенту), а не наоборот. Для этого вы можете использовать JSF ajax обычным способом. JSF 2.3 в значительной степени основан на OmniFaces , поэтому вы найдете много сходства в своих API-интерфейсах ( JSF - OmniFaces ).

Кроме того, вы можете использовать опрос вместо нажатия. Практически каждая библиотека компонентов JSF, поддерживающая ajax, имеет компонент , такой как PrimeFaces с . Это позволяет отправлять exery X секунд запрос ajax на сервер и обновлять контент, когда это необходимо.

См. Также:

19
задан GEOCHET 25 June 2009 в 23:09
поделиться

4 ответа

Попробуйте ServiceBase.Stop() .

35
ответ дан 30 November 2019 в 02:52
поделиться

Что происходит, если Вы просто позволяете всем выполняющимся потокам закончиться? Я могу вообразить три возможных результата:

  • уведомления SCM, и решают, что Вы закончили соответственно
  • уведомления SCM, думает, что Вы умерли и перезапускаете Вас
  • , SCM не замечает и показывает Вас тихим выполнением

РЕДАКТИРОВАНИЕ: Я подозреваю , этот ответ является лучшим действительно, но я оставлю на виду это (в настоящий момент) только ради интереса.

5
ответ дан 30 November 2019 в 02:52
поделиться

Не выполняйте сервис под Локальной службой. Имейте выполненный при пользователе, который имеет права остановить сервис.

, Хотя идея самозавершить сервисы не является лучшей из идей. Один только тот самый факт означает, что это должно быть приложение и не сервис.

-2
ответ дан 30 November 2019 в 02:52
поделиться

Если вы хотите завершить службу вместо ее остановки (возможно, потому что служба перехватила необработанное исключение), вы можете использовать Environment.Exit (1) (используйте другой код выхода, если хотите).

Windows обнаружит, что работа службы неожиданно завершилась. Если служба была настроена для восстановления, будет использоваться процедура восстановления, которая включает параметры для перезапуска службы, запуска программы или перезапуска компьютера.

8
ответ дан 30 November 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: