Я использую 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, я был бы очень признателен.
Спасибо