Итак, я нашел решение. Я должен передать обратный вызов через конструкторы.
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()
Проблема в том, что @EJB будет внедряться только в «управляемые» классы.
В Java EE очень мало управляемых классов. В частности, клиенты приложений (в данном случае ваш «главный»), EJB-компоненты (EJB-компоненты без сохранения состояния и с сохранением состояния, компоненты сообщений и т. Д.) И сервлеты.
Все остальное (например, общие классы, сущности JPA и т. Д.) Не будет иметь введенных ресурсов, и вам нужно будет положиться на механизм поиска, чтобы получить доступ к своим ресурсам.