Аннотация @EJB в клиентах

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

mediachecker.py

import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler 

path = '/Users/user/Documents/directory'

class NewEventHandler(FileSystemEventHandler):
    def __init__(self, callback):
        self.callback = callback
        super().__init__()

    def on_created(self, event):
        print('New files created')
        self.callback()

class Checker():
    def watch(self, callback):
        event_handler = NewEventHandler(callback)
        observer = Observer()
        observer.schedule(event_handler, path, recursive=True)
        observer.start()
        try:
            while True:
                time.sleep(1) 
        except KeyboardInterrupt:
            observer.stop()
            observer.join()

main.py

from mediachecker import Checker



def callback():
    print('callback')

def main():
    checker = Checker()
    checker.watch(callback)




if __name__ == "__main__":
    main()
11
задан Bhesh Gurung 15 December 2011 в 22:11
поделиться

1 ответ

Проблема в том, что @EJB будет внедряться только в «управляемые» классы.

В Java EE очень мало управляемых классов. В частности, клиенты приложений (в данном случае ваш «главный»), EJB-компоненты (EJB-компоненты без сохранения состояния и с сохранением состояния, компоненты сообщений и т. Д.) И сервлеты.

Все остальное (например, общие классы, сущности JPA и т. Д.) Не будет иметь введенных ресурсов, и вам нужно будет положиться на механизм поиска, чтобы получить доступ к своим ресурсам.

12
ответ дан 3 December 2019 в 09:21
поделиться
Другие вопросы по тегам:

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