Windows 2012 上的旧版 ArcGIS 系统与 ArcSDE 10.2.2 无法连接

Legacy ArcGIS system on Windows 2012 with ArcSDE 10.2.2 won't connect

我目前正在处理一个遗留系统,该系统正在被另一个承包商重写。我们的任务是在重写完成之前保持灯亮。所以我知道我列出的所有内容都非常陈旧和过时。

我们有一个 java 进程直接连接到 10.1 SDE。在 windows 2008 服务器上它工作正常,一切都很好。随着 windows 2008 年即将结束,我们必须转向 Windows 2012 年或 2016 年。我们为这两种环境设置了沙箱。但是使用与 Windows 2008 服务器上完全相同的设置,我们得到一个非常普遍的错误

我们认为问题出在我们正在使用的 ArcSDE 10.2.2 库的连接二进制文件中。

我们使用的技术似乎封装了失败的过程: 甲骨文 12c, IBM Java 7, Geotools 10.6,和 ArcSDE 10.2.2(加入了一些 ArcSDE 9.3 dll,这可能是关键,但我们不确定。具体来说 sdejavautil.dll)

我们得到的错误是:

2019-12-11 22:56:31,454 ERROR [Thread-19] wfdss.framework.gis.geotools.ArcSDEFacade (ArcSDEFacade.java:165)   - org.geotools.arcsde.ArcSdeException: Can't create connection to 10.1.10.92 for Session #1[SDE error -51 Unknown error][Error desc=DATABASE LEVEL ERROR OCCURRED.][Extended desc=Unknown error
]
    at org.geotools.arcsde.session.Session$CreateSeConnectionCommand.execute(Session.java:621)
    at org.geotools.arcsde.session.Session$CreateSeConnectionCommand.execute(Session.java:575)
    at org.geotools.arcsde.session.Session.issue(Session.java:180)
    at org.geotools.arcsde.session.Session.<init>(Session.java:166)
    at org.geotools.arcsde.session.SessionPool$SeConnectionFactory.makeObject(SessionPool.java:384)
    at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1148)
    at org.geotools.arcsde.session.SessionPool.<init>(SessionPool.java:155)
    at org.geotools.arcsde.session.SessionPoolFactory.createPool(SessionPoolFactory.java:69)
    at org.geotools.arcsde.ArcSDEDataStoreFactory.createDataStore(ArcSDEDataStoreFactory.java:268)
    at org.geotools.arcsde.ArcSDEDataStoreFactory.createDataStore(ArcSDEDataStoreFactory.java:259)
    at wfdss.framework.gis.geotools.ArcSDEFacade.getDataStore(ArcSDEFacade.java:176)
    at wfdss.framework.gis.geotools.ArcSDEFacade.getFeatureSource(ArcSDEFacade.java:154)
    at wfdss.framework.gis.geotools.ArcSDEFacade.getTransform(ArcSDEFacade.java:738)
    at wfdss.framework.gis.geotools.ReferenceShape.getProjectedGeometryBasedOnReferencePoint(ReferenceShape.java:593)
    at wfdss.framework.gis.geotools.CommonGeoOps.getDistanceInMilesBetweenPointAndPoly(CommonGeoOps.java:2819)
    at wfdss.framework.database.assessment.IncidentShapeBizFacade.checkIfFirePerimeterExceedsMaxDistToPtOfOrigin(IncidentShapeBizFacade.java:96)
    at wfdss.framework.gis.ShapeFileHandler.uploadShape(ShapeFileHandler.java:556)
    at wfdss.framework.gis.ShapeFileHandler.processShapes(ShapeFileHandler.java:255)
    at wfdss.framework.gis.ShapeFileHandler.processUpload(ShapeFileHandler.java:199)
    at wfdss.framework.gis.service.ShapeService$ShapeThread.shapeUpload(ShapeService.java:824)
    at wfdss.framework.gis.service.ShapeService$ShapeThread.run(ShapeService.java:462)
    at java.lang.Thread.run(Thread.java:795)
Caused by: com.esri.sde.sdk.client.SeException: Unknown error
    at com.esri.sde.sdk.client.SeConnection.x(Unknown Source)
    at com.esri.sde.sdk.client.SeConnection.<init>(Unknown Source)
    at org.geotools.arcsde.session.Session$CreateSeConnectionCommand.execute(Session.java:610)
    ... 21 more

失败的代码行如下。同样,所有传入的参数都与 2008 年的参数相同。createDataStore 方法中的某些内容失败了。只是在寻找想法,如果有人有类似的经历可以分享。

ArcSDEDataStoreFactory.createDataStore(dataStoreParams);

这里没有太多 GIS 问题,这就是我点击的原因。过去的 Gis 和地质学家在这里。

我做了一些研究并找到了这篇文章。希望这对这个人来说是一个简单的修复。
http://www.forumtopics.com/busobj/viewtopic.php?p=1003011

如果不是,我认为更新这些方法正在使用的某些驱动程序可能会有所帮助。我记得我遇到过某种连接问题,我必须确保所有驱动程序都与我使用的相匹配。还要检查以确保我使用的驱动程序是否正确。

抱歉,我没有确切的解决方案,只是想提供帮助。

答案最终是我们需要使用安装 exe 的 "compatibility" 设置来安装 SDE 和 JDK 二进制文件。

要做到这一点,您只需右键单击任何 exe,转到属性,那里有一个 "compatibility" 选项卡。然后只需选择要使 ti 兼容的 windows 版本。