Ошибка при запуске кода documentum

Я получаю сообщение об ошибке при запуске кода documentum по адресу:

config.setString("primary_host", docbroker); 

в приведенном ниже коде:

IDfClient client = DfClient.getLocalClient();
// getting the config object of local client
IDfTypedObject config = client.getClientConfig();
config.setString("primary_host", docbroker);
IDfLoginInfo li = new DfLoginInfo();

и ошибка, которую я получал, приведена ниже:

Ошибка:

        java.lang.IllegalStateException: Reference count is already zero
    at com.documentum.fc.impl.util.ReferenceCountManager.decrement(ReferenceCountManager.java:47)
    at com.documentum.fc.client.impl.docbroker.DocbrokerMapUnion.decrementReferenceCount(DocbrokerMapUnion.java:43)
    at com.documentum.fc.client.impl.docbroker.DocbrokerMapUnion.removeEntry(DocbrokerMapUnion.java:37)
    at com.documentum.fc.client.impl.docbroker.DocbrokerMap.removeEntries(DocbrokerMap.java:176)
    at com.documentum.fc.client.impl.docbroker.DocbrokerClient$PreferencesObserver.update(DocbrokerClient.java:251)
    at com.documentum.fc.common.impl.preferences.TypedPreferences.notifyObservers(TypedPreferences.java:559)
    at com.documentum.fc.common.impl.preferences.TypedPreferences.setString(TypedPreferences.java:168)
    at com.gsk.rd.datacoe.dataspider.FetchDocumentumStats.connectToDocumentum(FetchDocumentumStats.java:357)
    at com.gsk.rd.datacoe.dataspider.FetchDocumentumStats.run(FetchDocumentumStats.java:92)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Пожалуйста, кто-нибудь может мне помочь. Я новичок в документуме.


person Akhil    schedule 23.03.2018    source источник


Ответы (1)


По моему опыту, лучше всего использовать интерфейс IDfClientX и работать с ним. Возможно, этот пример поможет вам:

// This is just an example. You might want to encapsulate this functionality in a class of your own 

import com.documentum.com.DfClientX;
import com.documentum.com.IDfClientX;
import com.documentum.fc.client.IDfClient;
import com.documentum.fc.client.IDfSession;
import com.documentum.fc.client.IDfSessionManager;
import com.documentum.fc.client.IDfTypedObject;
import com.documentum.fc.common.DfException;
import com.documentum.fc.common.IDfLoginInfo;

public class Main {

    public static void main(String[] args) throws DfException {
        IDfClientX clientX = new DfClientX();
        IDfClient client = clientX.getLocalClient();
        IDfTypedObject clientConfig = client.getClientConfig();
        IDfLoginInfo loginInfo = clientX.getLoginInfo();
        IDfSessionManager sessionManager = client.newSessionManager();
        IDfSession session = connect(clientConfig, loginInfo, sessionManager, "<your host here>", 1489, "<your docbase here>", "<your username here>", "<your password here>");
        // Do something with session
    }

    public static IDfSession connect(IDfTypedObject clientConfig, IDfLoginInfo loginInfo, IDfSessionManager sessionManager, String host, int port, String docbase, String user, String password) throws DfException {
        clientConfig.setString("primary_host", host);
        clientConfig.setInt("primary_port", port);
        loginInfo.setUser(user);
        loginInfo.setPassword(password);
        sessionManager.clearIdentities();
        sessionManager.setIdentity(docbase, loginInfo);
        return sessionManager.getSession(docbase);
    }
}
person Miguel Lopes Martins    schedule 24.04.2018
comment
спасибо @miguel lopes martins за вашу помощь, на самом деле я получаю много сеансов с помощью потоков, поэтому я получил, что ошибка счетчика ссылок уже равна нулю, я попробовал ваш код, но он не работает, пожалуйста, предложите мне, что делать, Обязательно ли устанавливать основной хост и основной порт?? - person Akhil; 25.04.2018
comment
Если я правильно помню, необязательно устанавливать основной хост и основной порт, хотя, если вы их не установите, они будут получены из файла C:\Windows\dmcl.ini в разделе DOCBROKER_PRIMARY. - person Miguel Lopes Martins; 26.04.2018
comment
Я удалил строки настройки хоста и порта из кода, он работал нормально, но я не использую файл dmcl.ini, я использую файл dfc.properties, это правильный способ сделать это??, Обязательно ли использовать файл dmcl.ini?? Или я могу обойтись с помощью dfc.properties?? - person Akhil; 26.04.2018
comment
Я не могу сказать наверняка. В моем случае, если у меня нет файла dmcl.ini и я не установил основной хост и основной порт, это дает мне следующее исключение: [DM_DOCBROKER_E_DMCL_INI_WIN32_MISSING]ошибка: соединение с DocBroker не удалось (без dmcl.ini). Правила поиска: 1) %%DMCL_CONFIG%% указывает файл 2) текущий каталог 3) %%DOCUMENTUM%% указывает каталог с dmcl.ini 4) каталог Windows. Может быть, они изменили поведение в более поздних версиях Documentum DFC? Я не знаю наверняка. - person Miguel Lopes Martins; 26.04.2018
comment
работает ли ваш код, удалив файл dmcl.ini и добавив dfc.properties?? - person Akhil; 27.04.2018
comment
Кажется, это не работает, нет. Но я использую Documentum 5.3. По-видимому, вы можете установить два свойства: dfc.docbroker.host и dfc.docbroker.port, но ни одно из них не работает для меня. Опять же, возможно, это связано с тем, что я использую более старую версию Documentum. - person Miguel Lopes Martins; 27.04.2018