Получение статей с портала Liferay - PullRequest
3 голосов
/ 16 марта 2012

Наша цель - извлечь часть контента из Liferay Portal через сервисы SOAP с использованием Java.Мы успешно загружаем статьи прямо сейчас с помощью JournalArticleServiceSoap.Проблема в том, что для этого метода требуются и идентификатор группы, и идентификатор записи, и нам нужно получить все статьи из определенной группы.Следовательно, мы пытаемся сначала получить идентификаторы, используя AssetEntryServiceSoap, но это не удается.

AssetEntryServiceSoapServiceLocator aesssLocator = new AssetEntryServiceSoapServiceLocator();
    com.liferay.client.soap.portlet.asset.service.http.AssetEntryServiceSoap assetEntryServiceSoap = null;

    URL url = null;
    try {
        url = new URL(
                "http://127.0.0.1:8080/tunnel-web/secure/axis/Portlet_Asset_AssetEntryService");
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }

    try {
        assetEntryServiceSoap = aesssLocator
                .getPortlet_Asset_AssetEntryService(url);
    } catch (ServiceException e) {
        e.printStackTrace();
    }
    if (assetEntryServiceSoap == null) {
        return;
    }

    Portlet_Asset_AssetEntryServiceSoapBindingStub assetEntryServiceSoapBindingStub = (Portlet_Asset_AssetEntryServiceSoapBindingStub) assetEntryServiceSoap;
    assetEntryServiceSoapBindingStub.setUsername("bruno@7cogs.com");
    assetEntryServiceSoapBindingStub.setPassword("bruno");

    AssetEntrySoap[] entries;
    AssetEntryQuery query = new AssetEntryQuery();

    try {
        int count = assetEntryServiceSoap.getEntriesCount(query);
        System.out.println("Entries count: " + Integer.toString(count));
        entries = assetEntryServiceSoap.getEntries(query);
        if (entries != null) {
            System.out.println(Integer.toString(entries.length));
        }
        for (AssetEntrySoap aes : assetEntryServiceSoap.getEntries(query)) {
            System.out.println(aes.getEntryId());
        }
    } catch (RemoteException e1) {
        e1.printStackTrace();
    }

Хотя getEntriesCount () возвращает положительное значение, например 83, getEnries () всегда возвращает пустой массив.Я очень новичок на портале Liferay, но это выглядит очень странно для меня.

Кстати, здесь мы явно не ищем производительности, ключ в том, чтобы просто извлечь какой-то конкретный контент с портала удаленно.Если вы знаете какое-либо рабочее решение, ваша помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 12 июня 2012

Обычно AssetEntryQuery содержит немного больше информации, например:

AssetEntryQuery assetEntryQuery = new AssetEntryQuery();
assetEntryQuery.setClassNameIds(new long[] { ClassNameLocalServiceUtil.getClassNameId("com.liferay.portlet.journal.model.JournalArticle") });
assetEntryQuery.setGroupIds(new long[] { groupId });

Таким образом, это вернет все AssetEntries для указанной группы, которые также являются JournalArticles.

Попробуйте и посмотрите, хотя, как вы говорите, метод Count возвращает положительное число, так что это может не иметь значения, но попробуйте! :)

...