以下是我识别和使用的一种简单方法: 步骤(1):基于现有外部数据库将实体定义/Map到service.xml。如果不存在表,请手动创建所有表和字段,因为liferay service builder不会生成sql代码来自动在外部数据库中创建表。如果要使用名称空间,请在实体下面手动Map,并在数据库中定义相同的名称空间。 服务.xml
package com.demo4.external.data.source.spi;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import com.liferay.portal.kernel.dao.jdbc.DataSourceFactoryUtil;
import com.liferay.portal.kernel.dao.jdbc.DataSourceProvider;
import com.liferay.portal.kernel.util.PropsUtil;
public class DataSourceProviderImpl implements DataSourceProvider {
@Override
public DataSource getDataSource() {
DataSource dataSource = null;
try {
dataSource = DataSourceFactoryUtil.initDataSource(PropsUtil.getProperties("jdbc.mydb.", true));
//**Note:**Sometimes above line dosn't work in some environments, then follow below approach. In this case above Step(5) is not required because it's directly making lookup into server's context.
// InitialContext initialContext = new InitialContext();
// dataSource = (DataSource) initialContext.lookup("java:comp/env/jdbc/myDataSource");
} catch (Exception e) {
e.printStackTrace();
}
return dataSource;
}
}
1条答案
按热度按时间5gfr0r5j1#
以下是我识别和使用的一种简单方法:
步骤(1):基于现有外部数据库将实体定义/Map到service.xml。如果不存在表,请手动创建所有表和字段,因为liferay service builder不会生成sql代码来自动在外部数据库中创建表。如果要使用名称空间,请在实体下面手动Map,并在数据库中定义相同的名称空间。
服务.xml
步骤(2):将以下内容放入liferay home\tomcat-9.0.17\conf\server.xml中
步骤(3):将以下内容放在context下的liferay home\tomcat-9.0.17\conf\context.xml中
步骤(4):要连接oracle或任何专有数据库,需要以下两个JAR:
oracle驱动程序:获取驱动程序并放在liferay-ce-portal-7.2.1-ga2\tomcat-9.0.17\lib\ext下
外部数据库支持库:下载最新的
liferay门户数据库一体式支持jar
来自maven存储库
https://mvnrepository.com/artifact/it.dontesta.labs.liferay.portal.db/liferay-portal-database-all-in-one-support/1.2.1
下载jar liferay-portal-database-all-in-one-support-1.2.1.jar并放在liferay home\tomcat-9.0.17\webapps\root\web-inf\lib下
步骤(5):在portal-ext.properties中定义以下内容
步骤(6):在*-service下创建datasourceproviderimpl类:
步骤(7):用jdkspi(服务提供者接口)注册上述实现。为此,请在*-service下创建以下文件夹/文件
在此文件下放置以下行:
全部完成。只需构建服务,进行梯度刷新并启动服务器。这将非常有效。
学习愉快!