Геоинструменты с GWT (причал в режиме разработки)

#gwt #jetty #geotools #gwt-hosted-mode

#gwt #jetty #геоинструменты #gwt-hosted-mode

Вопрос:

Используя GeoTools с GWT, я получаю следующую трассировку стека при запуске моего приложения в режиме разработки:

 WARNING: Can't load a service for category "CRSAuthorityFactory". Cause is "ServiceConfigurationError: org.opengis.referencing.crs.CRSAuthorityFactory: Provider org (...) lang.ClassCastException: class org.geotools.referencing.operation.DefaultMathTransformFactory".
sun.misc.ServiceConfigurationError: org.opengis.referencing.crs.CRSAuthorityFactory: Provider org.geotools.referencing.factory.epsg.DefaultFactory could not be instantiated: java.lang.ClassCastException: class org.geotools.referencing.operation.DefaultMathTransformFactory
    at sun.misc.Service.fail(Unknown Source)
    at sun.misc.Service.access$200(Unknown Source)
    at sun.misc.Service$LazyIterator.next(Unknown Source)
    at org.geotools.factory.FactoryRegistry.register(FactoryRegistry.java:829)
    at org.geotools.factory.FactoryRegistry.scanForPlugins(FactoryRegistry.java:773)
    at org.geotools.factory.FactoryRegistry.scanForPluginsIfNeeded(FactoryRegistry.java:808)
    at org.geotools.factory.FactoryRegistry.getUnfilteredProviders(FactoryRegistry.java:229)
    at org.geotools.factory.FactoryRegistry.getServiceImplementation(FactoryRegistry.java:429)
    at org.geotools.factory.FactoryRegistry.getServiceProvider(FactoryRegistry.java:364)
    at org.geotools.factory.FactoryCreator.getServiceProvider(FactoryCreator.java:143)
    at org.geotools.referencing.ReferencingFactoryFinder.getAuthorityFactory(ReferencingFactoryFinder.java:216)
    at org.geotools.referencing.ReferencingFactoryFinder.getCRSAuthorityFactory(ReferencingFactoryFinder.java:436)
  

Кажется, что это сложная вещь, потому что она отлично работает при развертывании в другом контейнере. Есть идеи, как это исправить?

Ответ №1:

Похоже, что это проблема с загрузкой классов в Jetty. Обнаружена эта проблема с GeoTools и это исправление GWT, оба из которых, похоже, решают проблему, но ни одно из них, похоже, не привлекает внимания в данный момент. GeoMajas решает проблему с использованием ServletFilter для взлома загрузчика классов Jetty: в итоге я использовал тот же подход, который сработал.