说说guice的异常

guice的异常我觉得很烂,居然把我的异常吃掉了没有打印出来。

@Singleton
public class ProxyRoutineInit {

	private final ScheduledExecutorService scheduler =
			Executors.newScheduledThreadPool(2, new NamedThreadFactory("ProxyRoutineInit"));

	@Inject
	private SupplierManager supplierManager;

	@Inject
	@Named("config.log.base.path")
	private String logBasePath;

	@Inject
	public void onInject() {
		scheduler.scheduleWithFixedDelay(new LogCleanTask(logBasePath), 3, 0, TimeUnit.HOURS);
		scheduler.scheduleWithFixedDelay(new FeedStatusResetTask(supplierManager), 10, 10, TimeUnit.SECONDS);
	}
}
2014-04-21 17:25:31.275:WARN::Failed startup of context org.mortbay.jetty.webapp.WebAppContext@54e0d16b{/,/duitang/dist/app/branches/tlog2/tlog-proxy/src/main/webapp}
com.google.inject.CreationException: Guice creation errors:||1) Error injecting method, java.lang.IllegalArgumentException|  at com.taobao.tlog.module.ProxyRoutineInit.onInject(ProxyRoutineInit.java:35)|  at com.taobao.tlog.module.TLogProxyModule.configure(TLogProxyModule.java:18)||1 error
	at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:435)
	at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:175)
	at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:109)
	at com.google.inject.Guice.createInjector(Guice.java:95)
	at com.taobao.tlog.runtime.TLogBootstrap.startRuntime(TLogBootstrap.java:113)
	at com.taobao.tlog.module.TLogProxyConfig.getInjector(TLogProxyConfig.java:48)
	at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:45)
	at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:549)
	at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
	at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1282)
	at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
	at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
	at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
	at org.mortbay.jetty.Server.doStart(Server.java:224)
	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
	at runjettyrun.Bootstrap.main(Bootstrap.java:97)
2014-04-21 17:25:31.287:INFO::Started [email protected]:10009

PS:

好吧,不是guice的问题,是ScheduledThreadPoolExecutor太坑爹了。

    public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command,
                                                     long initialDelay,
                                                     long delay,
                                                     TimeUnit unit) {
        if (command == null || unit == null)
            throw new NullPointerException();
        if (delay <= 0)
            throw new IllegalArgumentException();
        RunnableScheduledFuture<?> t = decorateTask(command,
            new ScheduledFutureTask<Boolean>(command,
                                             null,
                                             triggerTime(initialDelay, unit),
                                             unit.toNanos(-delay)));
        delayedExecute(t);
        return t;
    }

猜你喜欢

转载自san-yun.iteye.com/blog/2051445