如何检索使用SOAP服务的用户所属的所有组/角色?

如何检索使用SOAP服务的用户所属的所有组/角色?,soap,liferay,remote-access,Soap,Liferay,Remote Access,我正在尝试使用SOAP服务收集一些用户信息 我能够获得给定用户的职务,但我不知道如何检索用户拥有的组和角色列表 我可以简单地使用GroupServiceSoap.getUserPlaces(长用户名,字符串[]类名,int max)方法吗?还是有其他方法可以得到这些字段 当前我的代码: private static URL _getURL(String remoteUser, String password, String serviceName) { final String LIFE

我正在尝试使用SOAP服务收集一些用户信息

我能够获得给定用户的职务,但我不知道如何检索用户拥有的组和角色列表

我可以简单地使用
GroupServiceSoap.getUserPlaces(长用户名,字符串[]类名,int max)
方法吗?还是有其他方法可以得到这些字段

当前我的代码:

private static URL _getURL(String remoteUser, String password, String serviceName) {
    final String LIFERAY_PROTOCOL = "http://";
    final String LIFERAY_TCP_PORT = "8080";
    final String LIFERAY_FQDN = "localhost";
    final String LIFERAY_AXIS_PATH = "/api/secure/axis/";
    try {
        return new URL(LIFERAY_PROTOCOL + URLEncoder.encode(remoteUser, "UTF-8") + ":"
                        + URLEncoder.encode(password, "UTF-8") + "@" + LIFERAY_FQDN
                        + ":" + LIFERAY_TCP_PORT + LIFERAY_AXIS_PATH + serviceName);
    } catch (MalformedURLException e) {
        return null;
    } catch (UnsupportedEncodingException e) {
        return null;
    } 
}

[...]
public static void main(String[] argv){

    public final String LIFERAY_USER_SERVICE="Portal_UserService";
    public final String LIFERAY_COMPANY_SERVICE="Portal_CompanyService";
    public final String LIFERAY_GROUP_SERVICE = "Portal_GroupService";

    //company.default.web.id property
    public final String LIFERAY_DEFAULT_COMPANY_ID = "liferay.com";

    UserServiceSoap userService = new UserServiceSoapServiceLocator().getPortal_UserService(_getURL(USER_IDENTIFIER,USER_PASSWORD, LIFERAY_USER_SERVICE));

    //This code is usefull if you want to use SOAP setter.
    //((Portal_UserServiceSoapBindingStub) userService).setUsername(USER_IDENTIFIER);
    //((Portal_UserServiceSoapBindingStub) userService).setPassword(USER_PASSWORD);

    CompanyServiceSoap companyService = new CompanyServiceSoapServiceLocator().getPortal_CompanyService(_getURL(USER_IDENTIFIER, USER_PASSWORD, LIFERAY_COMPANY_SERVICE));
    long companyId = companyService.getCompanyByMx(LIFERAY_DEFAULT_COMPANY_ID).getCompanyId();

    // Here I retrieve my user, and can access some properties, but not them all ! 
    UserSoap user = userService.getUserByEmailAddress(companyId, target_user_mail);

    //TODO : I got hte JobTittle that I want, later I will do something more util thant just print it, I swear it my precious !
    System.out.println(user.getJobTitle());

    GroupServiceSoap groupService = new GroupServiceSoapServiceLocator().getPortal_GroupService(_getURL(USER_IDENTIFIER, USER_PASSWORD, LIFERAY_GROUP_SERVICE));

    //this one return an empty array
    GroupSoap[] userPlaces = groupService.getUserPlaces(new String[]{"Group", "Role"}, 150);

    //this return an array of size 1, but the only GroupSoap seems to be a structural groups without any usefull properties to me.
    GroupSoap[] userPlaces = groupService.getUserPlaces(null, 150);

}

使用此方法获取用户角色和组用户id

UserServiceSoap.getRoleUserIds
UserServiceSoap.getGroupUserIds

这只是一个部分答案

要获得所有用户角色,可以执行以下操作:

RoleServiceSoap roleService =  new RoleServiceSoapServiceLocator().getPortal_RoleService(_getURL(USER_IDENTIFIER, USER_PASSWORD, LIFERAY_ROLE_SERVICE));
RoleSoap[] userRoles = roleService.getUserRoles(user.getUserId());
带有用户变量的UserSoap实例


SOAP访问必须由管理员用户完成,才能访问角色列表。用户自己无法访问此功能。

这些方法与我的需要相反!看到编写的API:public static long[]getgroupuserid(long groupId)抛出RemoteException返回属于该组的所有用户的主键。我想要完全相反的。我需要从用户Id中检索组Id。可以详细说明您需要什么吗?我有一个用户Id,我需要获取用户所在的组和角色的列表。