FTPC定製客戶端開發

        FTPC客戶端可以通過以下兩種協議與Plant Operations中間件通信:

  • XML Web Services
  • RMI/IIOP calls to session beans

       因此通過這兩種協議,我們可以自定義開發FTPC客戶端。

       在FTPC安裝路徑,如下路徑有一個PlantOpsClientSDK開發工具包,可以使用該SDK構建定製FTPC客戶端。

       

一、基於RMI/IIOP的EJB客戶端

  1. 解壓PlantOpsClientSDK。
  2. 新建Java Project,將PlantOpsClientSDK中的lib文件夾下的jar包和PlantOpsJavaProxies-JBoss.jar導入到項目中。
  3. 將samples文件夾下的類複製到項目中。
  4. 運行SampleEJBClient.java,在Arguments中傳入如下參數,其中第一個參數爲FTPC RMI/IIOP協議地址,第二個參數爲用戶名,第三個參數爲密碼。
  5. 執行後在控制檯輸出以下內容則表示成功連接FTPC服務。

       備註:

  •  samples文件夾中的SampleEJBClient.java爲基於EJB的客戶端
  • SampleWebServiceClient.java爲基於WebService的客戶端
  • FilteringExample.java爲同時支持RMI/IIOP和WebService的客戶端,但默認會使用RMI/IIOP協議,如果RMI/IIOP連接不成功纔會切換使用WebService協議。詳情參見:https://blog.csdn.net/panjin72/article/details/80340137

二、基於WebService的客戶端

       同EJB客戶端類似,可參考samples中的SampleWebServiceClient.java

三、說明

1.定製FTPC客戶端通過ProxyFactory代理工廠創建、關閉連接。

  • 創建RMI/IIOP協議連接:ProxyFactory proxyFactory = ProxyFactory.createProxyFactory(serverURL, ProxyFactory.PROTOCOL_IIOP);
  • 創建WebService協議連接:ProxyFactory proxyFactory = ProxyFactory.createProxyFactory(serverURL, ProxyFactory.PROTOCOL_HTTP);
  • 創建RMI/IIOP和WebService協議連接:ProxyFactory proxyFactory = ProxyFactory.createProxyFactory(iiopURL, httpURL);

2.登錄FTPC

        proxyFactory.login(userName, password);

3.從數據庫檢索對象

        ObjectRetrieval objectRetrievalService = proxyFactory.getObjectRetrievalProxy();
        DUser user = objectRetrievalService.getUserByName(userName, null);

4.創建對象

        ObjectStorage objectStorageService = proxyFactory.getObjectStorageProxy();
        DWorkInstruction testIns = new DWorkInstruction();
        String name = "test_" + java.lang.System.currentTimeMillis();
        testIns.setName(name);
        testIns.setModificationFlag(IModificationFlags.NEW);
        long key = objectStorageService.saveWorkInstruction(testIns, null, "test-proxy", null);

5.通過Filter從數據庫檢索對象

        ObjectRetrieval objectRetrievalService = proxyFactory.getObjectRetrievalProxy();
        DFilter filter = new DFilter();
        filter.setObjectType(IObjectTypes.TYPE_ACCOUNT);
        filter.setObjectSource(IObjectSource.ACTIVE);
        DFilterSearchConstraint cont0 = new DFilterSearchConstraint();
        cont0.setAttribute(IAccountFilterAttributes.LASTMODIFIEDTIME);
        cont0.setComparisonOperator(IFilterComparisonOperators.LESS_THAN);
        cont0.setValues(DataConverter.fromCalendarArray(new Calendar[] { new GregorianCalendar()}));
        filter.setSearchConstraints(new DFilterSearchConstraint[] { cont0 });
        DAccount[] objs = objectRetrievalService.getAccounts(filter, null);

發佈了50 篇原創文章 · 獲贊 65 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章