Как мне получить внешнее приложение для использования веб-сервисов Liferay? - PullRequest
0 голосов
/ 09 марта 2012

Я использую Liferay 6.1 CE на Glassfish 3.1.1.

Насколько я понимаю, Liferay предоставляет свой API через веб-сервис. Я надеюсь использовать эту функцию Liferay, поскольку мне бы хотелось, чтобы приложение, которое external для Liferay (в нашем случае, наше приложение для предложений по продажам), создавало пользователей портала. Я перепробовал все, что смог найти в Интернете, и до сих пор не могу получить действительный запрос В качестве простого варианта использования я начал с попытки использовать службу getUserByEmailAddress, и я даже не могу получить эту работу. Самое близкое, что я чувствую, это то, что я запросил http://localhost:8080/api/secure/axis/Portal_UserService, и получил

java.rmi.RemoteException: пользователь не существует с ключом {companyId = 12098, emailAddress=ben2@greenportal.com enj

.

для пользователя, который НЕ существует, т.е. этот ответ является действительным и получает

java.rmi.RemoteException: PermissionChecker не инициализирован

для пользователя, который действительно существует. Я получаю тот же ответ, независимо от того, выполняю ли я запрос SOAP через soapUI или мой код JUnit.

Я изменил свой portal-ext.properties, чтобы иметь соответствующие (?) Записи:

#for web service access
axis.servlets.hosts.allowed=127.0.0.1,SERVER_IP,localhost,XXX.XXX.XXX.XXX
axis.servlet.https.required=false

(XXX.XXX ... это фактический IP-адрес моей машины) И соответствующая часть моего кода:

UserAdmin.java

...
static UserServiceSoap proxy = null;

public UserAdmin() {
    try {
        proxy = PortalProxy.getProxy();
    } catch (MalformedURLException e) {
        logger.error("Malformed URL encountered when generating proxy in UserAdmin constructor");
        e.printStackTrace();
    } catch (ServiceException e) {
        logger.error("Service Exception encountered when generating proxy in UserAdmin constructor");
        e.printStackTrace();
    }
}

public UserSoap getUser(long companyId, String emailAddress) {
    UserSoap requestedUser = null;
    String possibleError = null;

    //if proxy hasn't been created yet, create it now.
    checkProxyConnection();
    try {
        requestedUser = proxy.getUserByEmailAddress(companyId, emailAddress);
        logger.debug("Found user for "+emailAddress);
    } catch (RemoteException e) {
        requestedUser = null;
        possibleError = e.getMessage();
    }
    if(requestedUser != null) {
        logger.info("Returning requested user: " + requestedUser.getEmailAddress());
    } else {
        logger.info("Requested user for email address \""+emailAddress+"\" not found. Returning null.");
        logger.info(possibleError);
    }
    return requestedUser;
}

...

PortalProxy.java

...
    public static UserServiceSoap getProxy()
        throws MalformedURLException, ServiceException {

    UserServiceSoapServiceLocator svc = new UserServiceSoapServiceLocator();
    UserServiceSoap userSoap = svc.getPortal_UserService(new URL("http://localhost:8080/api/axis/Portal_UserService"));

//      makes no difference if these are commented or uncommented       
//      ((Portal_UserServiceSoapBindingStub)userSoap).setUsername(Constants.LIFERAY_USERNAME);
//      ((Portal_UserServiceSoapBindingStub)userSoap).setPassword(Constants.LIFERAY_PASSWORD);

        return userSoap;
    }
...

Все сообщения форума Liferay, которые я нахожу на эту тему, не принесли ничего полезного, большинство из них относится к комплекту Tomcat. Возможно ли, что это особая проблема Glassfish? Я боролся, время от времени, с этим вопросом в течение нескольких недель, и у меня совершенно нет идей. Если у кого-нибудь есть какие-либо советы, помощь, ссылки, учебные пособия и т. Д. Для использования услуг Liferay, я был бы очень признателен.

Спасибо

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Попробуйте следовать этой инструкции, чтобы увидеть, что все ваши шаги выполнены правильно (это учебник LR5.3 для tomcat, но он будет таким же для вашего сценария) - страница на итальянском языке;гугл переведен для удобства -:

http://translate.google.com/translate?sl=it&tl=en&js=n&prev=_t&hl=it&ie=UTF-8&layout=2&eotf=1&u=http%3A%2F%2Fblog.d-vel.com%2Fweb%2Fblog%2Fhome%2F-%2Fblogs%2Fesporre-un-web-service-con-liferay-e-consumarlo-da-remoto%3F_33_redirect%3D%252Fweb%252Fblog%252Fhome%253Fp_p_id%253D33%2526p_p_lifecycle%253D0%2526p_p_state%253Dnormal%2526p_p_mode%253Dview%2526p_p_col_id%253Dcolumn-1%2526p_p_col_pos%253D1%2526p_p_col_count%253D2%2526_33_struts_action%253D%25252Fblogs%25252Fsearch%2526_33_redirect%253D%25252Fweb%25252Fblog%25252Fhome%2526_33_groupId%253D12536%2526_33_keywords%253DLiferay%252Bweb%252BService&act=url

0 голосов
/ 13 марта 2012

Я исправил это, отбросив и заново создав базу данных Liferay.

Что-то, должно быть, попало в мою базу данных lportal.Я удалил базу данных и удалил мои файлы portal-setup-wizard.properties & portal-ext.properties.После перезапуска сервера и завершения работы мастера установки я повторил тест Junit, и ЭТО РАБОТАЛО!Никаких изменений кода или чего-либо еще, просто очистка и воссоздание базы данных, и теперь все отлично работает.Так расстраивает!

Очевидно, что это не идеальное решение, и это заставляет меня очень нервничать по поводу того, как Liferay будет вести себя, как только мы доберемся до производства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...