intra-mart配置多数据源与查询SQL样例

server/2025/1/11 5:55:04/

一、前言

在这里插入图片描述
intra_mart框架是一种基于Java语言的企业级应用开发框架。配备有标准工作流、文档管理、企业内部门户等可开发组件,
能够融合顾客实际业务,按需求进行自定义开发,实现短期间、低成本的系统构筑。

个人感觉主要是供企业管理使用的框架,自带工作流、每个网页权限设置、用户角色权限设置等功能,层层审批方便,先搭建框架,再根据不同企业真实环境需求进一步开发。

其中,Solr是一个开源的全文搜索服务,搜索用的;Resin类似tomcat,容器,启动项目用的;Cassandra是一个非关系型数据库,因为框架自带IMbox功能(聊天盒子),聊天信息非常多,存到非关系型数据库比较合适;PostgreSQL 是一个对象关系数据库,类似MysqlLocal Storage是本地缓存,就是Session缓存之类的。

本文总结下,intra-mart配置多个PostgreSQL 数据库链接的方法。(其他数据库链接也类似)

二、PostgreSQL准备工作

1.创建用户组

首先创建一个用户组,点击Login/Group Role:

在这里插入图片描述

名称写test,点击ok,就创建了一个用户组。

在这里插入图片描述

用户组如下:
在这里插入图片描述

2.创建用户

然后创建一个用户,同样点击Login/Group Role,注意:
用户名称,自定义,本人填写的是imart
在这里插入图片描述

用户密码,本人填写的也是imart

在这里插入图片描述

这里要选上可以登录,这样创建的才是用户,否则创建的还是组:

在这里插入图片描述

关系,选择这个用户属于test组:

在这里插入图片描述

点击ok,用户就创建完毕了。

3.创建数据库与表

右键database,点击创建:

在这里插入图片描述
数据库名输入为了imart_test,选择所属test组,点击ok创建:

在这里插入图片描述

然后创建表,右键点击table创建,测试用的表名是test,列是id(bigint类型,主键)与name(character varying类型),值如下图(1a,2b,3c):在这里插入图片描述

三、intra-mart代码

1.resin-web.xml

首先找到\resin-pro-4.0.66\webapps\imart\WEB-INF\resin-web.xml文件,内容如下:

	<database jndi-name="jdbc/default"><driver><type>org.postgresql.ds.PGConnectionPoolDataSource</type><url>jdbc:postgresql://localhost:5432/imart</url><user>postgres</user><password>root</password><preparedStatementCacheQueries>0</preparedStatementCacheQueries></driver><max-connections>20</max-connections><prepared-statement-cache-size>0</prepared-statement-cache-size></database><database jndi-name="jdbc/imart_test"><driver><type>org.postgresql.ds.PGConnectionPoolDataSource</type><url>jdbc:postgresql://localhost:5432/imart_test</url><user>imart</user><password>imart</password><preparedStatementCacheQueries>0</preparedStatementCacheQueries></driver><max-connections>20</max-connections><prepared-statement-cache-size>0</prepared-statement-cache-size></database>

其中,一个数据源的名字是jdbc/default,链接的本地PostgreSQL数据库imart,用户名是postgres,密码是root

另一个数据源的名字是jdbc/imart_test,链接的本地PostgreSQL数据库就是新创建的imart_test,用户名是imart,密码是imart

2.data-source-mapping-config.xml

找到\resin-pro-4.0.66\webapps\imart\WEB-INF\conf\data-source-mapping-config.xml文件,内容如下:

<system-data-source><resource-ref-name>java:comp/env/jdbc/default</resource-ref-name><!-- WebSphere<resource-ref-name>jdbc/default</resource-ref-name>--></system-data-source><shared-data-source><connect-id>imart_test</connect-id><resource-ref-name>java:comp/env/jdbc/imart_test</resource-ref-name></shared-data-source><tenant-data-source><tenant-id>default</tenant-id><resource-ref-name>java:comp/env/jdbc/default</resource-ref-name><!-- WebSphere<resource-ref-name>jdbc/default</resource-ref-name>--></tenant-data-source>

intra-mart有三种数据库链接:

system-data-source是系统数据源,这个是框架内部使用的数据源,开发者不能使用;配置的java:comp/env/jdbc/default末尾部分,jdbc/default要与resin-web.xml中的保持一致,意思就是使用这个数据库链接;

tenant-data-source是租户数据源,用来保存租户的数据,这个官方文档写着可以配置多个,但是使用的时候本人没有找到获取方法。其中tenant-id设置为了defaultresource-ref-name设置为了jdbc/default,也使用本地imart数据库

shared-data-source是共享数据源,用来保存系统框架外的数据(例如和外部系统连携时,保存外部系统用的数据),这个可以配置多个,使用的时候可以根据connect-id获取到指定数据源。其中,connect-id设置为了imart_testresource-ref-name配置为了jdbc/imart_test,使用上方创建的本地imart_test数据库

3.test.xml

\resin-pro-4.0.66\webapps\imart\WEB-INF\conf\routing-jssp-config文件夹下,创建一个test.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<routing-jssp-configxmlns="http://www.intra-mart.jp/router/routing-jssp-config"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.intra-mart.jp/router/routing-jssp-config routing-jssp-config.xsd"><authz-default mapper="welcome-all" /><file-mapping path="/test/testSQL" page="test/testSQL" /></routing-jssp-config>

这个是设置路由的文件,其中<authz-default mapper="welcome-all" />表示页面默认没有权限,都可以访问;<file-mapping path="/test/testSQL" page="test/testSQL" />中配置了url路径为/test/testSQL,页面位置为test文件夹下的testSQL文件(本文用到了testSQL.html和testSQL.js文件)。

4.testSQL.html

\resin-pro-4.0.66\webapps\imart\WEB-INF\jssp\src\下创建一个test文件夹,在文件夹中创建一个testSQL.html文件,内容如下:

data is <imart type="string" value=data />.

这个测试页面,会显示数据库查询到的数据,value=data表示参数的名字是data,下方会写到。

js_148">5.testSQL.js

在testSQL.html文件相同位置,创建一个testSQL.js文件,内容如下:

var data;function init(request) {//这个方法,获取到的是<tenant-id>default</tenant-id>的数据源//var database = new TenantDatabase();//测试了这样不行,获取到的还是<tenant-id>default</tenant-id>的数据源,获取不到<tenant-id>imart_test</tenant-id>的数据源//官网也确实没有这个写法,所以TenantDatabase只能配置1个?//var database = new TenantDatabase("imart_test");//这个方法,可以获取到<connect-id>imart_test</connect-id>数据源var database = new SharedDatabase("imart_test");var result = database.execute("select * from test limit 10");//这个是日志打印方法var logger = Logger.getLogger();logger.info('hello');logger.info('arguments=[{}]', result);logger.info('arguments=[{}]', result.data[0]);data = result.data[0].name;
}

其中,new SharedDatabase("imart_test");就可以根据名称,获取到配置的共享数据源<connect-id>imart_test</connect-id>sql语句查询到多条后,使用result.data[0]可以获取到第一条数据,再使用.name就可以获取到name列的值。(上方创建的数据库表test的name列)

6.配置快速跳转按钮

现在,页面可以通过http://localhost:8080/imart/test/testSQL访问到;

为了方便,也可以配置一个快速跳转按钮。

点击右边的图标-设置:

在这里插入图片描述

点击添加页面按钮:
在这里插入图片描述

输入名称,url,点击创建:
在这里插入图片描述
创建好后,刚才的页面就会出现按钮,点击就可以跳转到测试页面。

在这里插入图片描述

四、测试

页面可以通过http://localhost:8080/imart/test/testSQL访问,或者点击跳转按钮:
在这里插入图片描述

其中,a就是测试数据库imart_test.test表里的name字段。

五、备注

tenant-data-source的获取方法只有new TenantDatabase();,不管加不加入参,获取的都是default的数据库链接,所以其实tenant-data-source只能配置一个?

shared-data-source的获取方法有new SharedDatabase("imart_test");,可以根据名称获取不同的数据源,shared-data-source可以配置多个。

官网地址:

https://document.intra-mart.jp/library/iap/public/development/script_programming_guide/texts/application/database/index.html

http://www.ppmy.cn/server/157385.html

相关文章

【Flink】flink或java异常日志输出不完整问题解决

flink或java异常日志输出不完整问题解决 1.问题 flink submit job&#xff0c;报错查看日志&#xff0c;只有Caused by: java.lang.ClassCastException&#xff0c;异常详情没有&#xff0c; 2.网上参考 参考了网上的几个解决方案&#xff0c;比较精准的如下&#xff1a; https…

Objective-C 是一种面向对象的编程语言

Objective-C 是一种面向对象的编程语言,主要用于苹果公司的操作系统 iOS 和 macOS 的开发。以下是关于 Objective-C 的介绍: 一、历史与发展 Objective-C 是在 20 世纪 80 年代初由 Brad Cox 和 Tom Love 开发的。它是 C 语言的超集,添加了面向对象编程的特性。Objective-…

特制一个自己的UI库,只用CSS、图标、emoji图 日后慢用!!!

图片&#xff1a; emoji图标库 --emoji.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Emo…

案例解读 | 香港某多元化综合金融企业基础监控+网管平台建设实践

PART01 项目背景 01客户简介案例客户是一家创立20多年的香港某多元化综合金融企业&#xff0c;其业务范围涵盖证券、期货、资产管理、财富管理等&#xff0c;凭借广泛的业务网络和多元化的金融服务产品&#xff0c;在市场中拥有显著的影响力。02痛点分析随着业务版图的持续拓展…

EFCore HasDefaultValueSql

今天小伙伴在代码中遇到了有关 HasDefaultValue 的疑问&#xff0c;这里整理澄清下... 在使用 Entity Framework Core (EFCore) 配置实体时&#xff0c;HasDefaultValue 方法会为数据库列设置一个默认值。该默认值的行为取决于以下条件&#xff1a; 1. 配置 HasDefaultValue 的…

芯片详细讲解,从而区分CPU、MPU、DSP、GPU、FPGA、MCU、SOC、ECU

目录 芯片的概念结构 芯片的派系划分 通用芯片&#xff08;CPU&#xff0c;MPU&#xff0c;GPU&#xff0c;DSP&#xff09; 定制芯片&#xff08;FPGA&#xff0c;ASIC&#xff09; 芯片之上的集成&#xff08;MCU&#xff0c;SOC&#xff0c;ECU&#xff09; 软硬件的匹…

【更新中】Mysql问题分析

WHERE条件包含 LIKE CONCAT(‘%’,…, ‘%’) 的情况 使用场景影响索引利用情况 当CONCAT函数用于构建一个完整的、固定值&#xff08;如CONCAT(‘fixed_prefix’, column_name)或CONCAT(column_name, ‘fixed_suffix’)&#xff09;&#xff0c;并且在WHERE子句中作为比较条…

游戏语音趋势解析,社交互动有助于营造沉浸式体验

语音交互的新架构出现 2024 年标志着对话语音 AI 取得了突破&#xff0c;出现了结合 STT → LLM → TTS 模型来聆听、推理和回应对话的协同语音系统。 OpenAI 的 ChatGPT 语音模式将语音转语音技术变成了现实&#xff0c;引入了基于音频和文本信息进行端到端预训练的模型&…