PUMA SPI简介

本文介绍了PUMA(Portal User Management Architecture)及其SPI(Services Provider Interface),详细解释了PUMASPI如何提供对门户用户及组的档案访问,并展示了如何在Java环境中利用PumaHome接口获取当前登录用户的信息及所属组。
 

PUMA== Portal User Management Architecture

SPI==Services Provider Interface.

PUMA SPI提供对portal用户或组的profiles访问。可以CRUD用户和组。当前登陆用户的Profiles信息可以获得。每个portal中的资源都有一个ObjectIDPUMA这里就是在portal用户注册表中的用户或者组。PUMA SPI提供的接口继承了ModelSPIcom.ibm.portal.Identifiable接口的getObjectID()方法。这个方法就是获得ObjectID用的。

PUMA中的一些Provider对象:

PumaProfile------包含了对usergroup属性和标识符的只读访问。可以用这个接口来获取当前登陆的用户信息。

PumaLocator------包含了查找usergroup的方法。可以用这个接口来获得当前用户所在的所有组的组列表。

PumaController------包含了创建,删除usergroup的方法,还有修改usergroup档案和成员。

 

portlet能够使用这些接口之前,它必须先找到合适的home接口作为入口点。

Standard portlet

com.ibm.portal.um.portletservice.PumaHome

IBM portlet

com.ibm.portal.um.portletservice.legacy.PumaHome

Portal application (for example, theme or skin)

com.ibm.portal.um.PumaHome

 

上述接口如何使用在JavaDoc中有详细介绍,下面是一个JSR168标准portlet如何获得用户id的

PortletServiceHome psh;
try{
   javax.naming.Context ctx = new javax.naming.InitialContext();
   psh = (PortletServiceHome) 
         ctx.lookup("portletservice/com.ibm.portal.um.portletservice.PumaHome");
   if (psh != null){
      PumaHome service = (PumaHome) psh.getPortletService(PumaHome.class);
      PumaProfile pp = service.getProfile(request);
      User user = pp.getCurrentUser();
      String user_objid = pp.getIdentifier(user);
   }
}
catch (PumaException pe){
   // ... error handling ...
} catch(javax.naming.NameNotFoundException ex) {
   // ... error handling ...
} catch(javax.naming.NamingException ex) {
   // ... error handling ...
}

PUMA SPI不能够被用于WSRP和远程Portlet.

Remote PUMA SPI 则提供了远程访问Portlet的方法。他通过REST架构模型实现。

 

 

下面再给一例子,这个例子我从网上找到的:

 

     String groupName = "";
        String userName = "";
        PortletServiceHome psh;
        try {
            javax.naming.Context ctx = new javax.naming.InitialContext();
            psh = (PortletServiceHome) ctx.lookup("portletservice/com.ibm.portal.um.portletservice.PumaHome");
           
            if (psh != null){
                PumaHome service = (PumaHome) psh.getPortletService(PumaHome.class);
                PumaProfile pp = service.getProfile(request);
                User user = pp.getCurrentUser();
                userName = pp.getIdentifier(user); 
                userName = user_id.substring(3,user_id.indexOf(","));
                System.out.println("userName = " + userName);
                PumaLocator pl = service.getLocator(request);
                List li = pl.findGroupsByPrincipal(user, true);
                Iterator iterator = li.iterator();
                int size = li.size();
                int count = 0;
                while(iterator.hasNext()) {
                    Group group = (Group) iterator.next();      
                    if (size != 1) {
                        if (count != size) {
                            groupName += group.getName() + ",";
                        } else {
                            groupName += group.getName();
                        }
                    } else {
                        groupName = group.getName();
                    }
                    System.out.println("groupName = " + group.getName());
                    count++;
                }
               
            }
        } catch(javax.naming.NameNotFoundException e) {
            e.printStackTrace();
        } catch(javax.naming.NamingException e) {
            e.printStackTrace();
        } catch (PortletServiceUnavailableException e) {
            e.printStackTrace();
        } catch (com.ibm.portal.um.exceptions.PumaException e) {
            e.printStackTrace();
        }

【复现】并_离网风光互补制氢合成氨系统容量-调度优化分析(Python代码实现)内容概要:本文围绕“并_离网风光互补制氢合成氨系统容量-调度优化分析”的主题,提供了基于Python代码实现的技术研究与复现方法。通过构建风能、太阳能互补的可再生能源系统模型,结合电解水制氢与合成氨工艺流程,对系统的容量配置与运行调度进行联合优化分析。利用优化算法求解系统在不同运行模式下的最优容量配比和调度策略,兼顾经济性、能效性和稳定性,适用于并网与离网两种场景。文中强调通过代码实践完成系统建模、约束设定、目标函数设计及求解过程,帮助读者掌握综合能源系统优化的核心方法。; 适合人群:具备一定Python编程基础和能源系统背景的研究生、科研人员及工程技术人员,尤其适合从事可再生能源、氢能、综合能源系统优化等相关领域的从业者;; 使用场景及目标:①用于教学与科研中对风光制氢合成氨系统的建模与优化训练;②支撑实际项目中对多能互补系统容量规划与调度策略的设计与验证;③帮助理解优化算法在能源系统中的应用逻辑与实现路径;; 阅读建议:建议读者结合文中提供的Python代码进行逐模块调试与运行,配合文档说明深入理解模型构建细节,重点关注目标函数设计、约束条件设置及求解器调用方式,同时可对比Matlab版本实现以拓宽工具应用视野。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值