Чтение файла XML dataStoreBD = DataStoreFinder.getDataStore(params) возвращает null

У меня возникли проблемы с разработкой Maven project с Eclipse. Пробовал искать в сети, но ничего похожего нет.

Подводя итог, я использую WFSDataStore (geotools) для получения коллекции объектов из XML, а затем добавляю в база данных.

Есть два разных поведения:

  1. Когда я делаю Run As > Java Application, все правильно и код работает.
  2. #P4#
    public static void dataAccess(String getCapabilities, WFSDataStoreFactory dsf) throws Exception {
    // Variables
    // WFS Connection
    Map connectionParameters = new HashMap();
    connectionParameters.put(WFSDataStoreFactory.URL.key, getCapabilities);
    connectionParameters.put(WFSDataStoreFactory.PROTOCOL.key, false);
    connectionParameters.put(WFSDataStoreFactory.LENIENT.key, true);
    connectionParameters.put(WFSDataStoreFactory.MAXFEATURES.key, "5");
    connectionParameters.put(WFSDataStoreFactory.TIMEOUT.key, 600000);
    
    // Database Connection
    DataStore dataStoreBD = null;
    Transaction transaction = null;
    Filter filter = null;
    
    Map<String, String> params = new HashMap<String, String>();
    params.put("dbtype", configTypeDatabase);
    params.put("host", configIp);
    params.put("port", configPort);
    params.put("schema", configUser);
    params.put("database", configDatabase);
    params.put("user", configUser);
    params.put("passwd", configPassword);
    params.put("accessToUnderlyingConnectionAllowed", true);
    dataStoreBD = DataStoreFinder.getDataStore(params);
    // Etc. }
    
    #P5#
    SimpleFeatureSource initialBDFeatureSource = dataStoreBD.getFeatureSource(configDatesTable);
    FeatureIterator<SimpleFeature> ifs = initialBDFeatureSource.getFeatures().features();
    
    #P6#
    #P7#

person Frederic    schedule 22.12.2015    source источник
comment
Я предполагаю, что это часть веб-сервиса? Как вы создаете военный файл? Возможно, вы ломаете файлы spi.   -  person Ian Turton    schedule 22.12.2015
comment
@iant Извините, а что такое spi-файлы? Что ж, я настроил pom.xml для создания файла .war. Скажи мне конкретно, что ты хочешь знать, и я расскажу тебе об этом.   -  person Frederic    schedule 23.12.2015
comment
См. docs.geotools.org/stable/userguide/welcome/use.html (ищите FactoryFinder), если вы не позаботитесь, вы можете потерять файлы .spi, которые сообщают GeoTools, где найти его фабрики.   -  person Ian Turton    schedule 23.12.2015


Ответы (1)


Прежде всего, я развернул проект, чтобы попробовать что-то еще (используя tomcat7 и добавляя информацию tomcat.xml (путь проекта от Eclipse's workspace) в context.xml (путь tomcat7: C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf).

Затем я изучал соединения (pool, jndi и jdbc), потому что не мог правильно подключиться к своей базе данных. Вот почему в итоге я заменил соединение jdbc (универсальный интерфейс для реляционных баз данных) на соединение jndi (универсальный интерфейс для систем именования), например следующее:

Map<String, String> params = new HashMap<String, String>();
params.put("dbtype", configTypeDatabase);
params.put("jndiReferenceName", "java:comp/env/jdbc/DBName");
params.put("accessToUnderlyingConnectionAllowed", true);
params.put("schema", configUser);

Я опускаю некоторые параметры, потому что они не важны и не имеют значения для соединения jndi. Причина немного сложна, потому что после ее решения я даже не могу ее объяснить. По какой-то причине, когда я пытался запустить Java Application или option 1 локально, это всегда работало, но я определил соединение как поиск (<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/DBName"/>), поэтому оно работает только с jndi, когда вам нужно запустить или развернуть его с maven.

Если я найду дополнительную информацию, я обновлю свой ответ, чтобы очистить его или улучшить.

person Frederic    schedule 05.01.2016