2012-10-14 49 views
0

我有一個獨立的工作中發揮2.0.4,我想在https://github.com/jamesward/play2-scheduled-job-demo 描述我啓動應用程序,就像樣品在Heroku上運行:Playframework獨立工作連接到數據庫兩次

public class QueueWorker { 
    public static void main(String[] args) { 
     Application application = new Application(new File(args[0]), QueueWorker.class.getClassLoader(), null, Mode.Dev()); 
     Play.start(application); 
    } 
} 

但現在,從日誌來看,播放連接到數據庫兩次因爲某些原因和的Ehcache失敗,因爲它的名字已經被註冊,第二次:

[[37minfo[0m] play - database [default] connected at jdbc:mysql://localhost/myproject?characterEncoding=UTF-8 
[[37minfo[0m] play - database [default] connected at jdbc:mysql://localhost/myproject?characterEncoding=UTF-8 
Exception in thread "main" net.sf.ehcache.ObjectExistsException: Cache play already exists 
    at net.sf.ehcache.CacheManager.addCache(CacheManager.java:990) 
    at play.api.cache.EhCachePlugin.x$3(Cache.scala:111) 
    at play.api.cache.EhCachePlugin.cache(Cache.scala:109) 
    at play.api.cache.EhCachePlugin.onStart(Cache.scala:127) 
    at play.api.Play$$anonfun$start$1.apply(Play.scala:60) 
    at play.api.Play$$anonfun$start$1.apply(Play.scala:60) 
    at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) 
    at scala.collection.immutable.List.foreach(List.scala:45) 
    at play.api.Play$.start(Play.scala:60) 
    at play.api.Play.start(Play.scala) 
    at jobs.QueueWorker.main(QueueWorker.java:32) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 

有趣當我使用「play run」命令啓動項目時,不會發生這種情況。有沒有人向我暗示這可能是什麼,或者我如何調試它來自哪裏?

+0

請顯示您的Procfile –

+0

只是爲了澄清,我從IntelliJ中啓動QueueWorker只是「。」作爲參數而不是Heroku。因此,我不認爲Procfile與它有任何關係。 – keyboardsamurai

+0

啊好的。你創建了一個Global.onStart()方法嗎?我還注意到,在代碼中提供了爲應用程序使用'Mode.Dev()',但可以使用'Mode.Prod()'嘗試。 –

回答