Вопрос

поступить до документа Жизненный цикл обслуживания Я должен быть в состоянии внедрить RegistryShutDipListener и привлекать свои ресурсы (в данном случае, выключить тему), однако он бросает исключение и, похоже, пытается повторно инициализировать мой сервис, чтобы выполнить прослушивание выключения!?

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();
    }
}

PS Я понимаю, что вы не можете ссылаться на другу registryDidShutdown() Но исполнители не являются услугами поклонника, это часть java.util.concurrent

Это было полезно?

Решение

После поиска это Я вижу, что это ошибка. Работа должна использовать интерфейс для Сервиса (то, что я иногда пропускаю) вместо использования реализации как для строительства, так и для интерфейса в Hivemodule.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top