我在Glassfish 3.1.1上运行Liferay 6.1 CE。
据我了解,Liferay通过网络服务公开其API。我希望使用Liferay的这个功能,因为我希望有一个应用程序 external 到Liferay(在我们的例子中,我们的销售提案应用程序)创建门户网站用户。 我已经尝试了我可以在网上找到的所有内容,但仍然无法获得有效的请求。 作为一个简单的用例,我开始只是尝试使用getUserByEmailAddress服务,我甚至无法完成这项工作。我觉得我最接近的是查询http://localhost:8080/api/secure/axis/Portal_UserService,然后获取
java.rmi.RemoteException:没有用户存在密钥{companyId = 12098,emailAddress = ben2 @ greenportal.com}
对于不存在的用户,即。此回复 有效,并且
java.rmi.RemoteException:PermissionChecker未初始化
对于实际存在的用户。无论我是通过soapUI还是我的JUnit代码运行SOAP请求,我都得到了相同的响应。
我已将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服务,我将非常感激。
由于
答案 0 :(得分:1)
尝试按照这些说明查看所有步骤是否正确(这是关于tomcat的LR5.3教程,但对于您的场景将是相同的) - 页面是意大利语;为方便起见谷歌翻译 - :
答案 1 :(得分:0)
我通过删除并重新创建Liferay数据库来修复此问题。
我的“lportal”数据库中肯定会出现某种情况。我删除了数据库并删除了我的portal-setup-wizard.properties& portal-ext.properties文件。服务器重新启动并完成设置向导后,我重新尝试了Junit测试并完成了工作!没有代码更改或任何东西,只是数据库擦除和重新创建,现在一切都很好。太令人沮丧了!
显然,这不是一个理想的解决方案,而且一旦我们投入生产,它就会让我非常担心Liferay会如何表现。