2016-07-05 3 views
0

Впервые я использую @Schedule в факторе без состояния и по какой-то причине он не получает выполнение Glassfish, хотя Glassfish заявляет, что он был успешно развернут. Мой Java версия 1.8.0_91 Glassfish версия 4.1.1JEE Glassfish @schedule не работает

я упростил код все больше и больше, теперь мой код ниже один в нижней части с ключом линии бытия: @Schedule (вторая = "0 "минута =" "час =" «)

Я использую JDBC/__ TimerPool, как JDBC ресурса в Glassfish и может успешно выполнить пинг для __TimerPool.

В моих журналах для запуска Glassfish Я нашел StackTrace: java.lang.NullPointerException, который очень похож (первые строки такие же, как открытый дефект GlassFish/Eclipse (https://java.net/jira/browse/GLASSFISH-21468), который в соответствии с тем, что я читал есть .? незначительные и, следовательно, не должны мешать scheduing работать

Кто-нибудь идея, что не так и как я могу сделать эту работу

Приветствия Торстен

здесь 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) 
]] 

здесь мой боб:

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"); 

    } 
} 

ответ

0

Я нашел решение. Мне нужно запустить домен в режиме отладки, иначе system.out.println не будет помещен в файл server.log :-)

0

Попробуйте использовать PrintCenter, как боб с @ Запуск @ Singleton аннотациями.

+0

К сожалению, это не сработало. Пробовал и @Stateless @Startup, и @Singleton @Startup. Оба без эффекта. – Tom

Смежные вопросы