Тяжелый: не удалось отправить событие: Eventbus com.гуглить.общий.eventbus.SubscriberExceptionContext
для EventBus я объединил код внутри своего приложения Java Spring и полностью контролировал его, но результат не изменился.
когда я запускаю EventBus в spring sts (javaw), нет никаких проблем, но когда я запускаю сервер с проектом java-jar.jar дает то же самое серьезное: не удалось отправить событие: error
ниже не сработало для меня..
package edu.uams.event;
import java.awt.EventQueue;
import java.lang.reflect.InvocationTargetException;
import java.util.concurrent.Executor;
import org.apache.log4j.Logger;
import com.google.common.eventbus.AsyncEventBus;
import com.google.common.eventbus.EventHandler;
import com.google.common.eventbus.SubscriberExceptionHandler;
import edu.uams.domain.TirEvent;
import edu.uams.pacs.IncomingFileMonitor;
public class AysncTraumaEventBus extends AsyncEventBus {
    private final static Logger logger = Logger.getLogger(AysncTraumaEventBus.class);
    private String name = null;
    public AysncTraumaEventBus(Executor executor,
            SubscriberExceptionHandler subscriberExceptionHandler) {
        super(executor, subscriberExceptionHandler);    
        logger.info("AysncTraumaEventBus created.");
    }
    public AysncTraumaEventBus(String name, Executor executor) {
        super(name,executor);
        this.name=name;
        logger.info("AysncTraumaEventBus created. Name:"+this.name);
    }
    @Override
    public void register(Object object) {
        super.register(object);
    }
    @Override
    public void unregister(Object object) {
        super.unregister(object);
    }   
    @Override
    public void dispatch(Object event, EventHandler wrapper) {
        try {
          logger.info("Let's dispatch Aysnchroneous Trauma Event:"+ ((TirEvent) event).getResultMessage());
          wrapper.handleEvent(event);
        } catch (InvocationTargetException e) {
          // My logger
          logger.error("Could not dispatch event: " + event + " to handler " + wrapper+"  e:"+e.getMessage());
          logger.info("Lets try to disptach again!");
          super.post(new ExceptionEvent(event, e));         
        }
      }
    public static final class ExceptionEvent {
        public final Object event;
        public final InvocationTargetException exception;
        public ExceptionEvent(final Object event, final InvocationTargetException exception) {
            this.event = event;
            this.exception = exception;
        }
    }
}
как-то EventHandler не может вызвать цель событие..
фантик.handleEvent(событие);
когда вы смотрите обертку (EventHandler):
public void handleEvent(Object event) throws InvocationTargetException {
    checkNotNull(event);
    try {
      method.invoke(target, new Object[] { event });
    } catch (IllegalArgumentException e) {
      throw new Error("Method rejected target/argument: " + event, e);
    } catch (IllegalAccessException e) {
      throw new Error("Method became inaccessible: " + event, e);
    } catch (InvocationTargetException e) {
      if (e.getCause() instanceof Error) {
        throw (Error) e.getCause();
      }
      throw e;
    }
  }
вы видите, что метод.invoke (target, new Object[] { event }); вызывает исключение InvocationTargetException из метода.класс!--4-->
public Object invoke(Object obj, Object... args)
        throws IllegalAccessException, IllegalArgumentException,
           InvocationTargetException
    {
        if (!override) {
            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
                Class<?> caller = Reflection.getCallerClass(1);
                checkAccess(caller, clazz, obj, modifiers);
            }
        }
        MethodAccessor ma = methodAccessor;             // read volatile
        if (ma == null) {
            ma = acquireMethodAccessor();
        }
        return ma.invoke(obj, args);
    }
как-то он не может вызвать.. Но самое интересное, что тот же файл jar вместе с EventBus может отлично работать в STS Run (javaw), но когда я запускаю java из командной строки как проект java-jar.jar это не может отправить событие..
1 ответов
@Subscribe
@AllowConcurrentEvents
    public void receivedDicomFile(TirEvent event){                  
        try {
            } catch (ClassNotFoundException e) {
                logger.error(e.getMessage());
            } catch (SQLException e) {
                logger.error(e.getMessage());
            } catch(Exception e){
                logger.error(e.getMessage());
            }
    }
всегда нужно попробовать поймать.. Спасибо @dwnz за вашу помощь
