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

时间:2015-07-06 05:59:37

标签: java oracle esri

最近,我一直在尝试使用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 update 40 64 bit

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查看我的空间数据。

5. 这是我的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 =(NONE)

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.createDirectConnection()方法中保存。

有人可以给我一些建议吗?为什么它会像那样?也许我在准备直接连接系统时错过了一些东西。

1 个答案:

答案 0 :(得分:0)

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

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