Java没有返回地图

时间:2018-04-16 10:56:40

标签: java

我有:

Map<String, ExtractData> extractMap = new HashMap<String, ExtractData>();

为什么以下方法不能从它调用的方法中获取返回数据?

private void fetchExtractData(CentralExportSession exportSession) throws RemoteException {
    System.out.println("Fetching Extract Data");
    extractMap = exportSession.getExtractData(consDB);
    System.out.printLn("Extract Data Fetched");
}

这要求:

public Map<String, ExtractData> getExtractData(DataSourceInfo ds) throws RemoteException {
    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    Map<String, ExtractData> extractMap = new HashMap<String, ExtractData>();

    String qry = "...select statement that returns about 500k rows...;"

    try {
        conn = getConnection();
        ps = conn.PrepareStatment(qry);
        rs = ps.executeQuery();

        while (rs.next()) {
            String dataKey = rs.getString("key");
            ExtractData data = new ExtractData();
            ...code that builds up the 'data' object from the result...
            extractMap.put(dataKey, data);
            System.out.println("Added key : " + dataKey);
        }
    } catch (SQLException e) {
        e.printStackTrace();
        throw new EJBException(e);
    } finally {
        System.out.println("Cleaning up...");
        cleanup(conn, ps, rs);
        System.out.println("Returning Map extractMap..."); 
        return extractMap;
    }
}

“获取提取数据”打印,“添加密钥:”,“清理...”和“返回地图提取地图...”打印,但不打印调用方法中的“提取数据提取”。我没有看到任何可见的异常,控制只是永远不会传递回调用方法,我的CPU使用率会一直持续到我杀死它。

编辑:我已经尝试将“return”语句移动到“try”块内部(在“while”之后)和“finally”块之后没有区别。 return语句的位置不会影响(缺乏)结果。

这似乎是一个内存问题,因为人为地将结果集限制为200k行允许它运行,但是一旦我过去那么......

0 个答案:

没有答案