2015-07-06 16 views
0

最近,我一直在嘗試使用Java API建立與Oracle地理數據庫的直接連接。建立與Oracle上的ESRI地理數據庫的直接連接時掛起,而不處於調試模式

問題是,當我執行代碼時,只有在我逐步執行程序時,調試模式下的連接才能正常工作。在其他所有情況下,程序都試圖建立連接。

下面是一段代碼,我使用:

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專業版64位

的Java: 8日更新40 64位

Oracle clie NT:的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虛擬機的路徑:-Djava.library.path = {絕對路徑到箱文件夾}

4.的甲骨數據庫沒問題,我無法用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}) 

) 

這是我SQLNET。ORA文件:

SQLNET.AUTHENTICATION_SERVICES =(NONE)

NAMES.DIRECTORY_PATH =(TNSNAMES,EZCONNECT)

我已經嘗試過。

我試圖用其他的Java版本

2.我嘗試添加ORACLE_HOME系統變量,它指出了我的Oracle客戶端安裝

我禁用Windows防火牆和我的防病毒系統。

4.我試着連接到9.3.1 oracle地理數據庫和10.3 oracle地理數據庫。

在每種情況下,我都得到了相同的結果:在調試模式下步進很好,自由運行應用程序 - 掛起。

在這一點上,我用盡了想法。我可以在我的IDE(eclipse-mars)中看到它在SeConnection.createDirectConnection()方法中存在。

有人可以給我一些建議,爲什麼它的行爲呢?也許我在準備直接連接系統時錯過了一些東西。

+0

你能否粘貼你的'createDirectConnection'方法? – learningloop

+0

不幸的是,我不能這樣做,因爲這個方法來自ESRI jar。而他們的來源不可用。 –

+0

好吧,至少你能確認這個方法是否與SEConnection類似的論點? '新的SeConnection(「none」,「sde:oracle11g:geobase_tns」,「none」,「{my-user}」,「{my-password} @geobase_tns」);'你也嘗試過使用'SEConnection'構造函數而不是用於非調試模式的'createDirectConnetion'方法? – learningloop

回答

0

這是10.2.2 SDE SDK的錯誤。 BUG-000087489

Java 1.6絕對不會有這個問題。這是我使用的解決方法。您也可以嘗試較低版本的Java 1.7或1.8。