在Oracle上建立与ESRI地理数据库的直接连接,而不是在调试模式下

问题描述 投票:0回答:1

最近我一直在尝试使用Java API建立与oracle地理数据库的直接连接。

问题是,当我执行代码时,当我逐步执行程序时,连接仅在调试模式下正常工作。在所有其他情况下,程序会尝试建立连接。

这是我使用的一段代码:

public class SdeTest {  
    public static void main(String[] args) {  
        SeConnection connection = null;  
        try {  
            System.out.println("Connecting");  
            connection = new SeConnection("none", "sde:oracle11g:geobase_tns", "none", "{my-user}", "{my-password}@geobase_tns");  
            System.out.println("CONNECTION OK");  
        } catch (SeException e) {  
            e.printStackTrace();  
        } finally {  
            if(connection != null) {  
                try {  
                    connection.freeAllLocks();  
                    connection.close();  
                } catch (SeException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
    }  
}  

这是我的系统配置:

系统:Windows 7 Professional 64位

Java:8更新40 64位

Oracle客户端:Oracle 11g 64位

ArcSDE SDK:10.2.2 64位

其他设置。

1.我创建了SDEHOME系统变量,其值指向磁盘上的文件夹。在文件夹里面我创建了'bin'目录并用以下文件填充它:

icudt44.dll

icuuc44.dll

pe.dll

sg.dll

的xerces-c_3_1.dll

sde.dll

sdejavautil.dll

gsrvrora11g102.dll

sdeora11gsrvr102.dll

2. {SDEHOME} / bin的路径被添加到系统的路径中。

3. {SDEHOME} / bin的路径添加到Java VM:-Djava.library.path = {absolute-path-to-bin-folder}

4. oracle数据库很好,我可以使用ArcCatalog查看我的空间数据。

这是我的TNS定义:

geobase_tns =

  (DESCRIPTION =

(ADDRESS_LIST =

  (ADDRESS = (PROTOCOL = TCP)(HOST = {my-host-ip})(PORT = {my-port-number}))

)

(CONNECT_DATA =

  (SERVICE_NAME = {my-service-name})

)

)

6.这是我的sqlnet.ora文件:

SQLNET.AUTHENTICATION_SERVICES =(无)

NAMES.DIRECTORY_PATH =(TNSNAMES,EZCONNECT)

我已经尝试过的。

1.我试图使用其他java版本

2.我尝试添加ORACLE_HOME系统变量并将其指向我的oracle客户端安装

3.我禁用了Windows防火墙和我的防病毒系统。

4.我尝试连接到9.3.1 oracle地理数据库和10.3 oracle地理数据库。

在每种情况下我都得到了相同的结果:踩在调试模式下很好,自由运行应用程序 - 挂起。

在这一点上,我的想法已经不多了。我可以在我的IDE(eclipse - mars)中看到它在SeConnection.create Direct Connection()方法中保存。

有人可以给我一些建议,为什么它的表现如此?也许我在为直接连接准备系统时遗漏了一些东西。

java oracle esri
1个回答
0
投票

这是10.2.2 SDE SDK的错误。 BUG-000087489

Java 1.6绝对不会有这个问题。这是我使用的解决方法。您还可以尝试Java 1.7或1.8的较低版本。

© www.soinside.com 2019 - 2024. All rights reserved.