在wso2is-5.7.0 debian软件包安装中找不到WSO2CarbonDB

时间:2019-01-17 18:43:38

标签: wso2 wso2is wso2carbon

我已经从debian软件包中安装了wso2is-5.7.0。我的数据源使用在tomcat / Catalina-server.xml中定义的jdbc / WSO2CarbonDB使用了WSO2_Carbon_DB。当我运行wso2server.sh启动时,它失败并显示以下日志行:

TID:[-1234] [] [2019-01-17 12:33:25,611]错误{org.wso2.carbon.user.core.inter nal.Activator}-无法启动User Manager Core捆绑包 java.lang.RuntimeException:查找数据源时出错:名称[WSO2CarbonDB]在此上下文中未绑定。找不到[WSO2CarbonDB]。

在配置中,我没有引用WSO2CarbonDB。以下是我的user-mgt.xml内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  <UserManager>
    <Realm>
        <Configuration>
        <AddAdmin>false</AddAdmin>
            <AdminRole>wso2admin</AdminRole>
            <AdminUser>
                <UserName>admin</UserName>
                <Password>admin</Password>
            </AdminUser>
            <EveryOneRoleName>everyone</EveryOneRoleName> <!-- By default users in this role sees the registry root -->
            <Property name="isCascadeDeleteEnabled">false</Property>
            <Property name="dataSource">jdbc/WSO2CarbonDB</Property>
        </Configuration>
        <AuthorizationManagerclass="org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager">
            <Property name="AdminRoleManagementPermissions">/permission</Property>
            <Property name="AuthorizationCacheEnabled">true</Property>
            <Property name="GetAllRolesOfUserEnabled">false</Property>
        </AuthorizationManager>
<UserStoreManager class="org.wso2.carbon.user.core.ldap.ReadOnlyLDAPUserStoreManager">
        <Property name="TenantManager">org.wso2.carbon.user.core.tenant.CommonHybridLDAPTenantManager</Property>
        <Property name="ReadOnly">true</Property>
        <Property name="Disabled">false</Property>                       
        <Property name="MaxUserNameListLength">100</Property>
        <Property name="ConnectionURL">ldap://ldap.xyz.com:389</Property>
        <Property name="ConnectionName">uid=ldapadmin,ou=People,dc=xyz,dc=com</Property>
        <Property name="ConnectionPassword">secret</Property>
        <Property name="passwordHashMethod">PLAIN_TEXT</Property>
        <Property name="UserSearchBase">ou=People,dc=xyz,dc=com</Property>
        <Property name="UserNameListFilter">(objectClass=account)</Property>
        <Property
        name="UserNameSearchFilter">(&amp;(objectClass=account)(|(uid=?)(mail=?)))</Property>
        <Property name="UserNameAttribute">uid</Property>
        <Property name="ReadGroups">true</Property>
        <Property name="GroupSearchBase">ou=Group,dc=xyz,dc=com</Property>
        <Property name="GroupNameListFilter">(objectClass=posixGroup)</Property>
        <Property name="GroupNameSearchFilter">(&amp;(objectClass=posixGroup)(cn=?))</Property>
        <Property name="GroupNameAttribute">cn</Property>
        <Property name="SharedGroupNameAttribute">cn</Property>
        <Property name="SharedGroupSearchBase">ou=Groupshare,dc=xyz,dc=com</Property>
        <Property name="SharedGroupNameListFilter">(objectClass=posixGroup)</Property>
        <Property name="SharedTenantNameListFilter">(objectClass=organizationalUnit)</Property>
        <Property name="SharedTenantNameAttribute">ou</Property>
        <Property name="SharedTenantObjectClass">organizationalUnit</Property>
        <Property name="MembershipAttribute">memberUid</Property>
        <Property name="UserRolesCacheEnabled">true</Property>
        <Property name="ReplaceEscapeCharactersAtUserLogin">true</Property>
        <Property name="MaxRoleNameListLength">100</Property>
        <Property name="MaxUserNameListLength">100</Property>
        <Property name="SCIMEnabled">false</Property>
        <Property name="MultiAttributeSeparator">,</Property>
        <Property name="ReadTimeout"/>
        <Property name="RetryAttempts"/>
    </UserStoreManager>
</Realm>
</UserManager>

我如何摆脱或引用[WSO2CarbonDB]参考?我试过为其添加数据源,并为其添加一个jndi定义,但是没有运气。

1 个答案:

答案 0 :(得分:0)

即使您使用的是LDAPUserStoreManager,仍需要在Realm配置(在user-mgt.xml中)下定义的JDBC数据源来存储权限信息。有关更多信息,请参考doc

  

根据WSO2产品中的默认配置,用户,   角色和权限存储在同一存储库中(即   默认为嵌入式H2数据库)。但是,您可以更改此   以一种将用户和角色存储在一个方式中的方式进行配置   信息库(用户存储)和权限分别存储在单独的位置   存储库。

     

用户存储可以是典型的RDBMS,LDAP或外部Active   目录。

     

存储权限的存储库应该始终是RDBMS。的   user-mgt.xml文件(存储中)中的授权管理器配置   / repository / conf /目录中)连接系统   到这个RDBMS。

您在user-mgt.xml中定义了以下条目,

  <UserManager>
    <Realm>
        <Configuration>
                <Property name="dataSource">jdbc/WSO2CarbonDB</Property>

您必须在master-datasource.xml文件中定义相应的数据源信息(存储在/ repository / conf / datasources目录中)

例如:

    <datasource>
        <name>WSO2_CARBON_DB</name>
        <description>carbon db</description>
        <jndiConfig>
            <name>jdbc/WSO2CarbonDB</name>
        </jndiConfig>
        <definition type="RDBMS">
            <configuration>
           <url>jdbc:mysql://localhost:3310/carbondb</url>
           <username>dbuser</username>
           <password>password</password>
           <driverClassName>com.mysql.jdbc.Driver</driverClassName>
                <maxActive>50</maxActive>
                <maxWait>60000</maxWait>
                <testOnBorrow>true</testOnBorrow>
                <validationQuery>SELECT 1</validationQuery>
                <validationInterval>30000</validationInterval>
                <defaultAutoCommit>false</defaultAutoCommit>
            </configuration>
        </definition>
    </datasource>
  

我如何摆脱或引用[WSO2CarbonDB]参考?我有   尝试为它添加一个数据源和一个jndi定义,没有   运气。

确保在master-datasources.xml中定义的JNDI名称与在dataSource中配置的user-mgt.xml名称完全匹配。