- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
对于 EventBus,我将代码合并到我的 java Spring 应用程序中并完全控制它,但结果没有改变。
当我在 spring sts (javaw) 中运行 EventBus 时,没有问题,但是当我使用 java -jar project.jar 在服务器中运行时,它给出了相同的严重:无法调度事件:错误
以下内容对我不起作用..
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 无法调用目标事件..
wrapper.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;
}
}
你看到了 method.invoke(target, new Object[] { event });从 Method.class 抛出 InvocationTargetException
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 project.jar 它可以't dispatch the event..
最佳答案
@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());
}
}
它总是需要 try catch 。感谢@dwnz 的帮助
关于java - 严重 : Could not dispatch event: Eventbus com. google.common.eventbus.SubscriberExceptionContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25367566/
我经常使用 greenrobot 的 EventBus https://github.com/greenrobot/EventBus 但我刚刚意识到 Guava 有自己的 EventBus com.g
对于 EventBus,我将代码合并到我的 java Spring 应用程序中并完全控制它,但结果没有改变。 当我在 spring sts (javaw) 中运行 EventBus 时,没有问题,但是
我想做的是将一个事件从另一个 AWS 账户发送到我的包含事件总线的账户。 为此,我正在尝试将角色/策略附加到 EventBus,但我做不到。我尝试使用 grantPutEvents 但也没有运气。这个
我想做的是将一个事件从另一个 AWS 账户发送到我的包含事件总线的账户。 为此,我正在尝试将角色/策略附加到 EventBus,但我做不到。我尝试使用 grantPutEvents 但也没有运气。这个
我是这个 eventbus 库的粉丝,并且在其他项目中很好地使用了它,没有遇到任何问题。但是现在,我在 Activity 中注册事件总线时遇到了一些奇怪的问题,并且在这里卡住了这部分... java.
我目前正在使用 Fragments 在 Activities 下创建的 FragmentPagerAdapter。我使用 GreenRobot 的 EventBus 3.0 返回我从服务类创建的一些
前沿 vue组件非常常见的有父子组件通信,兄弟组件通信。而父子组件通信就很简单,父组件会通过 props 向下传数据给子组件,当子组件有事情要告诉父组件时会通过 $emit 事件告诉父组件。如果1个页
早晨, 我正在使用 SimpleEvent总线将数据从我的集中式数据恢复器发送到小部件。这真的很好用,我从服务器获得一组新数据,RPC 调用的成功方法将它放在 Eventbus 上,每个小部件查看数据
我在Android应用程序中使用EventBus。在我的Eventbus.getDefault().register(this)中编写一个Application.onCreate()是一个好主意吗?我
我正在尝试使用 Vertx 上传文件,该请求是包含 PDF 的 POST 请求,我的处理程序如下所示(我从 github 中的示例中获取了代码): ... Set fileUploadSet = ro
所以我在 Vue.js 中使用 EventBus 将数据从一种方法发送到另一种方法。我有两种方法,比方说 one() 和 two()。我正在使用 EventBus,如下所示: one() { Ev
我有一个使用这个库的情况 greenrobot/EventBus保存数据并将它们传递给不同的 Activity 。在这种情况下,我使用 EventBus 来传递“订单”和 “cartItems” OB
我使用 greenrobot 作为 eventbus 来发布一些粘性事件。一切正常,当我打开应用程序时,ex。显示的内容表明粘帖工作正常。 但是当我关闭应用程序并打开它第二次、第三次……时,没有前任。
我在使用 EventBus 3.0.0 时遇到问题,我在其中发布了一个这样的事件: Call> call = httpService.getSessionSpecs(); call.enqueue(n
我在 android 中学习事件总线(http://greenrobot.org),我有以下代码 public class MainActivity extends AppCompatActivity
我正在尝试弄清楚如何在我的 AppWidgetProvider 中使用 Greenbot Eventbus 库。我尝试了以下方法,但没有用: public class SimpleWidgetProv
在我的安卓应用中我使用 org.greenrobot.eventbus.EventBus; 1.我创建事件: public class NotLoginEvent { } 在我的 fragment 中
我正在尝试从我的 WS 获取位置并更新我的 GoogleMap fragment 中的标记,所以我正在做的是: 我的 HomeActivity 包含 2 个 fragment (2 个 GoogleM
我正在尝试在我所有对话的基类中实现一些通用逻辑和对某些事件的 react 。 并在 EventBus 中注册和注销,并在基类中捕获一些事件。 因此,当我尝试实例化派生类的实例时 - EventBus
我在库中有一个带注释的 Activity,它是同一库中 EventBus 事件的订阅者。它看起来像这样,大大简化了: @EActivity(resName = "activity_foo") publ
我是一名优秀的程序员,十分优秀!