读取XML文件dataStoreBD = DataStoreFinder.getDataStore(params)返回null

时间:2015-12-22 12:44:16

标签: java eclipse maven datastore geotools

我在使用Maven project开发Eclipse时遇到了一些问题。我试图在网上搜索,但没有类似的东西。

总而言之,我使用WFSDataStore(geotools)从XML获取功能集合,然后添加到数据库。

有两种不同的行为:

  1. 当我Run As > Java Application时,一切正确且代码正常。
  2. 当我Run As > Mavenclean install tomcat:run-war)时。行 dataStoreBD = DataStoreFinder.getDataStore(params); 时出错,其中dataStore为null: (如果要检查getCapabilities参数)

    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. }
    

    参数正确。我从存储在我的计算机中的配置文件中获取它们并且我调试了一千次才知道实际发生了什么,但也许有一个我看不到的问题。 在这段代码之后,我有另一篇文章:

    SimpleFeatureSource initialBDFeatureSource = dataStoreBD.getFeatureSource(configDatesTable);
    FeatureIterator<SimpleFeature> ifs = initialBDFeatureSource.getFeatures().features();
    

    第一行以此错误结束程序:

      

    显示java.lang.NullPointerException   在com.sitep.imi.acefat.server.daemon.InsertarBBDDDaemon.dataAccess(InsertarBBD)   DDaemon.java:972)

1 个答案:

答案 0 :(得分:0)

首先,我部署了项目以尝试其他方法(使用tomcat7并将tomcat.xml(项目路径从Eclipse's workspace)的信息添加到context.xml({{1路径:tomcat7)。

然后我正在研究连接(C:\Program Files\Apache Software Foundation\Tomcat 7.0\confpooljndi),因为我无法正确连接到我的数据库。这就是为什么我努力将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); 连接无关,也无关紧要。之所以有点棘手,因为在解决之后我甚至无法解释它。我试图在本地运行jndiJava Application时始终有效,但我将连接定义为查找(option 1),因此它仅适用于<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/DBName"/>当您必须使用jndi运行或部署它时。

如果我找到更多信息,我会更新我的答案以清除它或改进它。