[转帖]如何解决 Portal 日志中的错误信息 EJPSG0015E?

当访问某些 portlet 的时候,日志中报出如下错误: 

[08-3-21 17:11:16:000 CST] 00000041 WCM_Workspace W IWKCW1006X: 连接到用户存储库时发生错误。原因:IWKMU1062X: 消息:EJPSG0015E: 数据后端问题 com.ibm.websphere.wmm.exception.AttributeNotDefinedException: 没有为成员类型“Person”定义属性“uid”,原因:com.ibm.wps.util.DataBackendException: EJPSG0015E: 数据后端问题 com.ibm.websphere.wmm.exception.AttributeNotDefinedException: 没有为成员类型“Person”定义属性“uid”。无法返回成员 id: cn=测试,cn=users,dc=sh,dc=ibm,dc=com 
attributeSubset: null 
memberIdentifier: [cn=测试,cn=users,dc=sh,dc=ibm,dc=com / 18f298bfdc1a1b41a3e950c5e36f92af] 
attributes: {sn=sn:测试, userAccountControl=userAccountControl:66048, cn=cn:测试, createTimestamp=createTimestamp:2006-12-25 11:38:50.0, samAccountName=samAccountName:31000002, modifyTimestamp=modifyTimestamp:2007-07-03 02:58:57.0, givenName=givenName:31000002, displayName=displayName:测试} 
objectID: [ExtIDImpl '9eAeH1EC6P47OHOC6IDCH9O23HH6H9O6JI57L1C6MQKCJHDCMS861JP0' [18f298bfdc1a1b41a3e950c5e36f92af / USER, Domain: [Domain: rel]]] 
descriptor: com.ibm.wps.datastore.impl.PrincipalDescriptorImpl@a94f83a1 
objectID: [ExtIDImpl '9eAeH1EC6P47OHOC6IDCH9O23HH6H9O6JI57L1C6MQKCJHDCMS861JP0' [18f298bfdc1a1b41a3e950c5e36f92af / USER, Domain: [Domain: rel]]] 
created: 1167102764984 
lastModified: 1206090655500 
distinguishedName: cn=测试,cn=users,dc=sh,dc=ibm,dc=com 
resourceType: USER 
hasLoggedOut: true 
lastLoginTime: 1206090655500 
markupData: {html=<Placeholder: LazyLoad String(1)>} 

stack: com.ibm.wps.puma.User 
 
[08-3-21 17:11:16:031 CST] 00000041 WCM_InitTag W com.ibm.workplace.wcm.api.WCM_InitTag 处理请求时捕获异常。原因:p_user cannot be null. 
[08-3-21 17:11:16:031 CST] 00000041 WCM_InitTag W com.ibm.workplace.wcm.api.WCM_InitTag 
java.lang.NullPointerException: p_user cannot be null. 
at com.aptrix.util.CodeIntegrityUtils.checkNotNull(CodeIntegrityUtils.java(Compiled Code)) 
at com.presence.connect.wmmcomms.UserManagementUtils.setUser(UserManagementUtils.java:159) 
at com.ibm.workplace.wcm.api.WCM_Workspace.<init>(WCM_Workspace.java:206) 
at com.ibm.workplace.wcm.api.WCM_Repository.getWorkspace(WCM_Repository.java:115) 
at com.ibm.workplace.wcm.api.WCM_InitTag.doStartTag(WCM_InitTag.java:107) 
at com.ibm._jsp._view._jspService(_view.java:250) 
at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:91) 
... 
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code)) 

解答: 

这是因为uid属性没有正确配置导致的。 

解决方法如下: 

    1. 备份并修改  <WP_root>\wmm\wmmLAAttributes.xml  ,增加如下行: 
    <attributeMap wmmAttributeName="uid" 
    pluginAttributeName="uid" 
    applicableMemberTypes="Person" 
    dataType="String" 
    valueLength="256" 
    multiValued="true"/> 


    2. 拷贝下面文件: 
    i.  <WP_root>\config\work\wmm\bin\setenv.bat拷贝后的副本文件名为mySetenv.bat(如果是Unix或者Linux平台,则为.sh文件); 
    ii.  <WP_root>\config\work\wmm\bin\attributeLoader.bat拷贝后的副本文件名为myAttributeLoader.bat(如果是Unix或者Linux平台,则为.sh文件); 

    3. 修改mySetenv.bat(如果是Unix或者Linux平台,则为.sh文件),增加或者修改下面行: 

    set WP_root=E:\WebSphere\WPS 
    set WAS_root=E:\WebSphere\WAS 
    set SERVER_NAME=WebSphere_Portal 
    set DB_PASSWORD=db2admin 
    call %WAS_root%\bin\setupCmdLine.bat 
    set CS_HOME=%WP_root%\cloudscape\ 

    注意:请用于您的环境匹配的值替换上面的值,这里给出的值只是例子。 

    4. 修改myAttributeLoader.bat(如果是Unix或者Linux平台,则为.sh文件),修改下面的行: 

    set TRACE_LOG=%WP_root%\config\work\wmm\bin\attrloader.log 
    echo Usage: myAttributeLoader.bat "%WP_root%\wmm\wmmLAAttributes.xml" 

    5. 打开一个命令窗口,进入<WP_root>\config\work\wmm\bin\目录,并且执行: 

    myAttributeLoader.bat <WP_root>\wmm\wmmLAAttributes.xml 

    6. 确认在第4步中设置的attrLoader.log中有如下信息: 

    ...Loading attribute: newAttr 
    attribute newAttr is created with id=10105 
    memberType P is created for 10105 
    LookAside Attribute: newAttr is loaded. 

    如果执行的过程中报出如下错误信息:
...Loading attribute: uid 
COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver][DB2/NT] SQL0803N INSERT 语句、UPDATE 语句或由 DELETE 语句导致的外键更新中的一个或多个值无效,因为由 "2" 标识的主键、唯一约束或者唯一索引将表 "DB2ADMIN.WMMLAATR"的那些列限制为不能具有重复行。 SQLSTATE=23505 
at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(SQLExceptionGenerator.java:275)
at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(SQLExceptionGenerator.java:217)

表示数据库中已经有这个属性的配置,这时候可以重新启动Portal Server.

    7. 确认属性已经加入WMMLAATR表中。
    注意:WebSphere Portal6.0中XML Parser Factory在utils.jar中,在执行myAttributeLoader.bat的时候您可能会遇到  "ClassDefNotFoundError" 的错误,请用utils.jar替换attributeLoader.bat中xerces.jar 。另外,还有两个jar文件必须加在  WMM_CP  的尾部,它们是  %WAS_root%\lib\bootstrap.jar 和 %WAS_root%\lib\emf.jar。 

    8. 重新启动Portal Server. 

你可能感兴趣的:(linux,unix,IBM,db2,websphere)