WSO2 API Manager API名称中文化改造

问题

1、WSO2 API Manager使用的数据库修改成了mysql,初始化数据库的时候数据库格式设置成了latin1。(如果数据库编码设置成utf-8,在执行项目提供的mysql脚本时,会报索引长度超过3072byte的错误)
2、现在有新需求是:要求支持发布中文名称的api,并且不影响统计分析功能。

解决办法

源码下载地址: WSO2
源码下载地址: siddhi
需要修改源码

  • 第一处:
    修改org.wso2.carbon.apimgt.impl.utils.APIUtil#executeQueryOnStreamProcessor方法
    原始代码:
String responseStr = EntityUtils.toString(entity);

修改后:

String responseStr = EntityUtils.toString(entity,"utf-8");
  • 第二处:
    如果不使用api analytics,此处可忽略。
    修改siddhi-store-rdbms-4.0.35.jar 包下
    \siddhi-store-rdbms-4.0.35\component\src\main\resources\rdbms-table-config.xml 文件中,标签内容
    修改前:
<database name="mysql">
        <tableCreateQuery>CREATE TABLE {{TABLE_NAME}} ({{COLUMNS, PRIMARY_KEYS}})</tableCreateQuery>
        <tableCheckQuery>SELECT 1 FROM {{TABLE_NAME}} LIMIT 1</tableCheckQuery>
        <indexCreateQuery>CREATE INDEX {{TABLE_NAME}}_INDEX ON {{TABLE_NAME}} ({{INDEX_COLUMNS}})</indexCreateQuery>
        <recordExistsQuery>SELECT 1 FROM {{TABLE_NAME}} {{CONDITION}} LIMIT 1</recordExistsQuery>
        <recordSelectQuery>SELECT * FROM {{TABLE_NAME}} {{CONDITION}}</recordSelectQuery>
        <recordInsertQuery>INSERT INTO {{TABLE_NAME}} ({{COLUMNS}}) VALUES ({{Q}})</recordInsertQuery>
        <recordUpdateQuery>UPDATE {{TABLE_NAME}} SET {{COLUMNS_AND_VALUES}} {{CONDITION}}</recordUpdateQuery>
        <recordDeleteQuery>DELETE FROM {{TABLE_NAME}} {{CONDITION}}</recordDeleteQuery>
        <recordContainsCondition>({{COLUMNS}} LIKE {{VALUES}})</recordContainsCondition>
        <stringSize>254</stringSize>
        <batchEnable>true</batchEnable>
        <batchSize>1000</batchSize>
        <typeMapping>
            <binaryType>BLOB</binaryType>
            <booleanType>TINYINT(1)</booleanType>
            <doubleType>DOUBLE</doubleType>
            <floatType>FLOAT</floatType>
            <integerType>INTEGER</integerType>
            <longType>BIGINT</longType>
            <stringType>VARCHAR</stringType>
        </typeMapping>
    </database>

修改后:

<database name="mysql">
        <tableCreateQuery>CREATE TABLE {{TABLE_NAME}} ({{COLUMNS, PRIMARY_KEYS}})</tableCreateQuery>
        <tableCheckQuery>SELECT 1 FROM {{TABLE_NAME}} LIMIT 1</tableCheckQuery>
        <indexCreateQuery>CREATE INDEX {{TABLE_NAME}}_INDEX ON {{TABLE_NAME}} ({{INDEX_COLUMNS}})</indexCreateQuery>
        <recordExistsQuery>SELECT 1 FROM {{TABLE_NAME}} {{CONDITION}} LIMIT 1</recordExistsQuery>
        <recordSelectQuery>SELECT * FROM {{TABLE_NAME}} {{CONDITION}}</recordSelectQuery>
        <recordInsertQuery>INSERT INTO {{TABLE_NAME}} ({{COLUMNS}}) VALUES ({{Q}})</recordInsertQuery>
        <recordUpdateQuery>UPDATE {{TABLE_NAME}} SET {{COLUMNS_AND_VALUES}} {{CONDITION}}</recordUpdateQuery>
        <recordDeleteQuery>DELETE FROM {{TABLE_NAME}} {{CONDITION}}</recordDeleteQuery>
        <recordContainsCondition>({{COLUMNS}} LIKE {{VALUES}})</recordContainsCondition>
        <stringSize>200</stringSize>
        <batchEnable>true</batchEnable>
        <batchSize>1000</batchSize>
        <typeMapping>
            <binaryType>BLOB</binaryType>
            <booleanType>TINYINT(1)</booleanType>
            <doubleType>DOUBLE</doubleType>
            <floatType>FLOAT</floatType>
            <integerType>INTEGER</integerType>
            <longType>BIGINT</longType>
            <stringType>VARCHAR</stringType>
        </typeMapping>
    </database>
  • 修改项目自带的数据库脚本,如下目录:
    * IDN_SCIM_GROUP
    把下图标记的字段,长度修改为512
    在这里插入图片描述

  • 把mysql数据库编码修改为utf-8,然后删除原有的表,重新执行脚本。

然后重新启动项目,测试下效果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值