2014-02-05 25 views
1

由於Netweaver附帶了自己的DestinationDataProvider,因此我們無法註冊我們自己的自定義目標數據提供程序。是否意味着我們必須使用Netweaver的目標管理器來定義目標並將其用於我們的應用程序中?有沒有辦法連接到任何SAP服務器並創建我們自己的目標而不使用Netweaver的目標管理器?如何在Netweaver上使用JCo3創建自定義目的地(使用我自己的服務器名稱,客戶端,用戶名等)?

回答

2

這在JCO 3中完成的方式略有不同。這個想法是創建屬性&它可以檢索到的地方(平面文件,ldap等),然後當你想連接到一個SAP服務器時檢索相同的地方。

//所以,你首先使用下面的代碼來創建連接參數

static String DESTINATION_NAME1 = "ABAP_AS_WITHOUT_POOL"; 
    static String DESTINATION_NAME2 = "ABAP_AS_WITH_POOL"; 
    static 
    { 
     Properties connectProperties = new Properties(); 
     connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "sap.dsc.com"); 
     connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "76"); 
     connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "800"); 
     connectProperties.setProperty(DestinationDataProvider.JCO_USER, "dsc007"); 
     connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "passwd"); 
     connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "en"); 
     createDestinationDataFile(DESTINATION_NAME1, connectProperties); 
     connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3"); 
     connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, "10"); 
     createDestinationDataFile(DESTINATION_NAME2, connectProperties); 

    } 

    static void createDestinationDataFile(String destinationName, Properties connectProperties) 
    { 
     File destCfg = new File(destinationName+".jcoDestination"); 
     try 
     { 
      FileOutputStream fos = new FileOutputStream(destCfg, false); 
      connectProperties.store(fos, "for tests only !"); 
      fos.close(); 
     } 
     catch (Exception e) 
     { 
      throw new RuntimeException("Unable to create the destination files", e); 
     } 
    } 

//下面的代碼片段然後可以用於其他地方連接到SAP服務器

static String DESTINATION_NAME1 = "ABAP_AS_WITHOUT_POOL"; 
    static String DESTINATION_NAME2 = "ABAP_AS_WITH_POOL"; 

    public static void step1Connect() throws JCoException 
    { 
     JCoDestination destination =  JCoDestinationManager.getDestination(DESTINATION_NAME1); 
     System.out.println("Attributes:"); 
     System.out.println(destination.getAttributes()); 
     System.out.println(); 
    } 
+0

您的答案來自原始SAP Jco 3文檔。但是,這在Netweaver上不起作用。它僅在使用獨立的Jco3 jar lib時有效,並且在Netweaver上預先安裝了Jco3的不同實現。 – khtwo

0

你必須使用NetWeaver的目標服務。可以通過NetWeaver管理界面創建RFC目標,也可以通過提供的API以編程方式管理目標配置。 儘管如此,您還可以基於從JCoDestinationManager檢索到的JCoDestination實例創建JCoCustomDestination實例。

相關問題