2016-07-05 9 views
0

Ich verwende @Schedule zum ersten Mal in einer statuslosen Bean und aus irgendeinem Grund wird es nicht von Glassfish ausgeführt, obwohl Glassfish sagt, dass es erfolgreich bereitgestellt wurde. Meine Java-Version ist 1.8.0_91 Glassfish-Version 4.1.1JEE Glassfish @schedule funktioniert nicht

ich den Code mehr vereinfacht und so jetzt mein Code ist derjenige unten an der Unterseite mit dem Schlüssel Linie Wesen: @Schedule (second = "0 "minute =" "Stunde =" „)

ich bin mit jdbc/__ TimerPool als JDBC-Ressource in Glassfish und kann erfolgreich einen Ping für __TimerPool auszuführen.

In meinem Logs für Glassfish Inbetriebnahme fand ich einen Stacktrace: java.lang.NullPointerException, die sehr ähnlich ist (erste Linie ist die gleiche wie ein offener Defekt von Glassfish/Eclipse-(https://java.net/jira/browse/GLASSFISH-21468), die nach dem, was ich dort lesen ist ? kleinere und damit scheduing von der Arbeit eine Idee, was falsch ist und wie ich diese Arbeit machen kann

Prost nicht verhindern sollte

Anybody thorsten

hier die Stacktrace.

java.lang.NullPointerException 
    at org.eclipse.persistence.platform.server.ServerPlatformUtils.createServerPlatform(ServerPlatformUtils.java:99) 
    at org.eclipse.persistence.sessions.factories.SessionManager.init(SessionManager.java:77) 
    at org.eclipse.persistence.sessions.factories.SessionManager.<clinit>(SessionManager.java:71) 
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.addSessionToGlobalSessionManager(EntityManagerSetupImpl.java:907) 
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.initSession(EntityManagerSetupImpl.java:2671) 
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:675) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:205) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:305) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:337) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:318) 
    at com.sun.enterprise.container.common.impl.EntityManagerWrapper._getDelegate(EntityManagerWrapper.java:197) 
    at com.sun.enterprise.container.common.impl.EntityManagerWrapper.createNamedQuery(EntityManagerWrapper.java:521) 
    at org.glassfish.ejb.persistent.timer.TimerBean.findTimersByOwnerAndState(TimerBean.java:209) 
    at org.glassfish.ejb.persistent.timer.TimerBean.findActiveTimersOwnedByThisServer(TimerBean.java:523) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1081) 
    at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1153) 
    at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4786) 
    at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:656) 
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) 
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:608) 
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163) 
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883) 
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) 
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:369) 
    at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4758) 
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4746) 
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212) 
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88) 
    at com.sun.proxy.$Proxy221.findActiveTimersOwnedByThisServer(Unknown Source) 
    at org.glassfish.ejb.persistent.timer.PersistentEJBTimerService.restoreEJBTimers(PersistentEJBTimerService.java:369) 
    at org.glassfish.ejb.persistent.timer.PersistentEJBTimerService.resetEJBTimers(PersistentEJBTimerService.java:1400) 
    at com.sun.ejb.containers.EJBTimerService.initEJBTimerService(EJBTimerService.java:236) 
    at com.sun.ejb.containers.EJBTimerService.getEJBTimerService(EJBTimerService.java:205) 
    at com.sun.ejb.containers.EJBTimerService.getEJBTimerService(EJBTimerService.java:187) 
    at com.sun.ejb.containers.BaseContainer.<init>(BaseContainer.java:825) 
    at com.sun.ejb.containers.StatelessSessionContainer.<init>(StatelessSessionContainer.java:143) 
    at com.sun.ejb.containers.StatelessSessionContainer.<init>(StatelessSessionContainer.java:137) 
    at com.sun.ejb.containers.StatelessContainerFactory.createContainer(StatelessContainerFactory.java:61) 
    at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:221) 
    at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:291) 
    at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:99) 
    at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:206) 
    at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:313) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:496) 
    at com.sun.enterprise.v3.server.ApplicationLoaderService.processApplication(ApplicationLoaderService.java:406) 
    at com.sun.enterprise.v3.server.ApplicationLoaderService.postConstruct(ApplicationLoaderService.java:243) 
    at org.jvnet.hk2.internal.ClazzCreator.postConstructMe(ClazzCreator.java:326) 
    at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:374) 
    at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:471) 
    at org.glassfish.hk2.runlevel.internal.AsyncRunLevelContext.findOrCreate(AsyncRunLevelContext.java:228) 
    at org.glassfish.hk2.runlevel.RunLevelContext.findOrCreate(RunLevelContext.java:85) 
    at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2072) 
    at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:114) 
    at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:88) 
    at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.oneJob(CurrentTaskFuture.java:1213) 
    at org.glassfish.hk2.runlevel.internal.CurrentTaskFuture$QueueRunner.run(CurrentTaskFuture.java:1144) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
]] 

hier meine Bohne:

import javax.ejb.Stateless; 
import javax.ejb.Schedule; 

@Stateless 
public class PrintCenter implements PrintCenterRemote { 
    public PrintCenter() { 
     // TODO Auto-generated constructor stub 
    } 

    @Schedule(second="0", minute="*", hour="*") 
    public void run(){ 
     System.out.println("Test"); 

    } 
} 

Antwort

0

Ich fand die Lösung. Ich muss die Domain im Debug-Modus starten, sonst wird system.out.println nicht in die Datei server.log geschrieben :-)

0

Try Printcenter als Bean mit @ Startup @ Singleton Anmerkungen zu verwenden.

+0

Leider hat es nicht funktioniert. Versucht sowohl @Stateless @Startup und @Singleton @Startup. Beides ohne Wirkung. – Tom