5
我想測試用下面的代碼的註釋@Schedule:部署Java @Schedule與Wildfly 8.1.0最終
import javax.ejb.Schedule;
import javax.ejb.Singleton;
import javax.ejb.Startup;
@Singleton
@Startup
public class TimerTest {
public TimerTest() {
}
@Schedule(second = "*", minute = "*", hour = "*")
public void sayHello() {
System.out.println("Hello");
}
}
然而,當我把它部署到的wildfly 8.1.0的獨立實例(最後)我收到日誌中的以下錯誤消息:
2014-09-23 08:38:03,076 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC000001: Failed to start service jboss.deployment.unit."test-server.war".component.TimerTest.ejb3.timerService: org.jboss.msc.service.StartException in service jboss.deployment.unit."test-server.war".component.TimerTest.ejb3.timerService: Failed to start service
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_25]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_25]
at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]
Caused by: java.lang.NullPointerException
at org.jboss.as.ejb3.timerservice.TimerServiceImpl.doesTimeoutMethodMatch(TimerServiceImpl.java:959)
at org.jboss.as.ejb3.timerservice.TimerServiceImpl.restoreTimers(TimerServiceImpl.java:710)
at org.jboss.as.ejb3.timerservice.TimerServiceImpl.start(TimerServiceImpl.java:202)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
... 3 more
2014-09-23 08:38:07,098 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014613: Operation ("deploy") failed - address: ([("deployment" => "test-server.war")]) - failure description: {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"test-server.war\".component.TimerTest.ejb3.timerService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"test-server.war\".component.TimerTest.ejb3.timerService: Failed to start service
Caused by: java.lang.NullPointerException"}}
2014-09-23 08:38:07,145 INFO [org.jboss.as.controller] (Controller Boot Thread) JBAS014774: Service status report
JBAS014777: Services which failed to start: service jboss.deployment.unit."test-server.war".component.TimerTest.ejb3.timerService: org.jboss.msc.service.StartException in service jboss.deployment.unit."test-server.war".component.TimerTest.ejb3.timerService: Failed to start service
JBAS014777: Services which failed to start: service jboss.deployment.unit."test-server.war".component.TimerTest.ejb3.timerService
任何想法是什麼可能造成這種情況?
應用程序服務器不應該像這樣拋出NullPointerException,所以你應該把這個報告爲JBoss的一個bug。基於'doTimeoutMethodMatch',我可能猜測服務器正在試圖確保您的'@ Schedule'自首次在持久性數據庫中創建以來沒有發生變化。也許嘗試清理計時器數據庫表(或其他),然後嘗試重新部署應用程序? – 2014-09-23 14:26:39
我做了一些研究,定時器存儲在獨立\ data \ timer-service-data文件夾中。刪除位於此處的計時器並再次部署確實解決了問題。感謝您強調這一點(我一直在努力這一段時間) – cardori 2014-09-23 14:53:10
我可能仍然會向JBoss報告問題。無論該文件的內容如何,該NPE都不應該發生。 – 2014-09-23 19:19:16