2010-01-14 4 views
0

согласно документам на service lifecycle я должен быть в состоянии реализовать RegistryShutdownListener и убрать мои ресурсы (в этом случае выключить threadpool), однако он бросает исключение и, кажется, пытается повторно инициализировать мою службу чтобы выполнить прослушиватель выключения !?RegistryShutdownListener выбрасывает исключение

2010-01-14 10:59:01,750 [main] ERROR org.apache.hivemind.impl.ShutdownCoordinatorImpl - Unable to shutdown <SingletonProxy for svc.MyService($MyService_1262a1db992)>: Unable to construct service svc.MyService: The HiveMind Registry has been shutdown. 
org.apache.hivemind.ApplicationRuntimeException: Unable to construct service svc.MyService: The HiveMind Registry has been shutdown. 
    at org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl.constructNewServiceImplementation(AbstractServiceModelImpl.java:166) 
    at org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl.constructServiceImplementation(AbstractServiceModelImpl.java:140) 
    at org.apache.hivemind.impl.servicemodel.SingletonServiceModel.getActualServiceImplementation(SingletonServiceModel.java:69) 
    at $$MyService_1262a1db992_1262a1db994._service($$MyService_1262a1db992_1262a1db994.java) 
    at $$MyService_1262a1db992_1262a1db994.registryDidShutdown($$MyService_1262a1db992_1262a1db994.java) 
    at $$MyService_1262a1db992_1262a1db993.registryDidShutdown($$MyService_1262a1db992_1262a1db993.java) 
    at org.apache.hivemind.impl.ShutdownCoordinatorImpl.shutdown(ShutdownCoordinatorImpl.java:97) 
    at org.apache.hivemind.impl.ShutdownCoordinatorImpl.shutdown(ShutdownCoordinatorImpl.java:80) 
    at org.apache.hivemind.impl.RegistryInfrastructureImpl.shutdown(RegistryInfrastructureImpl.java:379) 
    at org.apache.hivemind.impl.RegistryImpl.shutdown(RegistryImpl.java:94) 
    at org.apache.tapestry.ApplicationServlet.destroy(ApplicationServlet.java:322) 
    at org.apache.catalina.core.StandardWrapper.unload(StandardWrapper.java:1394) 
    ... 
Caused by: org.apache.hivemind.ApplicationRuntimeException: The HiveMind Registry has been shutdown. 
    at org.apache.hivemind.impl.RegistryInfrastructureImpl.checkShutdown(RegistryInfrastructureImpl.java:404) 
    at org.apache.hivemind.impl.RegistryInfrastructureImpl.getServicePoint(RegistryInfrastructureImpl.java:153) 
    at org.apache.hivemind.impl.ModuleImpl.getServicePoint(ModuleImpl.java:169) 
    at org.apache.hivemind.impl.InvokeFactoryServiceConstructor.setupFactoryAndParameters(InvokeFactoryServiceConstructor.java:78) 
    at org.apache.hivemind.impl.InvokeFactoryServiceConstructor.constructCoreServiceImplementation(InvokeFactoryServiceConstructor.java:55) 
    at org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl.constructCoreServiceImplementation(AbstractServiceModelImpl.java:108) 
    at org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl.constructNewServiceImplementation(AbstractServiceModelImpl.java:158) 
    ... 31 more 

Hivemodule.xml:

<service-point id="MyService" interface="package.MyService"> 
    <invoke-factory><construct class="package.MyService" /></invoke-factory> 
</service-point> 

package.MyService.java:

public class MyService implements RegistryShutdownListener 
{ 
... 
    private ExecutorService executors; 

    private void intitialise() 
    { 
... 
    executors = Executors.newFixedThreadPool(3); 
... 
    } 

... 

    @Override 
    public void registryDidShutdown() 
    { 
     if (executors.isShutdown()) 
      return; 
     executors.shutdown(); 
    } 
} 

пс я понимаю, что вы не можете обратиться в другую службу HiveMind в registryDidShutdown(), но исполнители ISN» t a hivemind service AFAIK, это часть java.util.concurrent

ответ

0

после поиска ing this Я вижу, что это ошибка. работать вокруг - использовать интерфейс для службы (иногда я пропускаю) вместо использования реализации как для построения, так и для интерфейса в hivemodule.