内嵌 QVS 使用说明
本文档适用于已经掌握了云服务部署的知识,希望进一步学习 QVS 其他用法的用户。
使用 QVS 服务时,除了可以部署 QVS 服务器,还可使用内嵌 QVS 方式。相对于部署 QVS 服务器,内嵌 QVS 使用更加便捷,只需要配置 ecloud-********.jar 与 qvsConfig.xml 文件即可。
使用内嵌 QVS 时,是通过 Qconnect(url:v,wt,it) 函数来连接 QVS 的,此时 url 参数必须省略。
例如我们需要通过内置 QVS 来连接 GCE 上的 QVA,然后申请 QVM 执行 GCS 远程存储桶 unbucket100 下的脚本文件 employee-cursor.splx,下面通过示例来演示内嵌 QVS 的使用,这里我们默认 QVA 与 QVM 是启动状态:
应用中使用内嵌 QVS
将 ecloud-********.jar 部署到用户应用里,用户应用启动时调用 com.scudata.ecloud.server.QVS.init(configFilePath) 即可,其中参数 configFilePath 是 QVS 配置文件 qvsConfig.xml 的路径,该路径可以是绝对路径,也可以是相对路径,相对路径时相对于应用项目的类路径。下面以 QJDBC 为例,用法如下:
1, 部署 QJDBC
首先在用户的项目应用中集成 QJDBC,具体操作可参考【企业版 JDBC】。
2, 加载 ecloud-********.jar
在启动项目应用时,需要加载 QVS 所需的 ecloud-********.jar 包,该 jar 文件在【集算器根目录】/esProc/lib 目录下可找到。在 web 应用下,可以把 jar 包放在 WEB-INF/lib 目录下。
3,配置集算器系列号
在 raqsoftConfig.xml 中配置集算器系列号。
[安装目录] /esProc/q-server/webapps/qvs/WEB-INF/home/raqsoftConfig.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Config Version="3">
<Runtime>
… …
<Esproc>
… …
<serialNo>O1XEHMFHBZG4S</serialNo>
</Esproc>
… …
</Runtime>
</Config>
4,配置 qvsConfig.xml 文件
qvsConfig.xml 可以在 [安装目录] /esProc/q-server/webapps/qvs/WEB-INF/home 下找到,根据实际环境配置完成后,可放在任意路径下,这里我们放置于【应用根目录】/config 目录下,
<?xml version="1.0" encoding="UTF-8"?>
<qvs>
<runMode>0</runMode>
<locale language="zh" country=""/>
<cacheSystem cachePath="cache" blockSize="1024" minFreeSpace="2" />
<verifies>
<verify code="GCP-35.236.6.87">
<QVA user="admin" xpwd="88888888" url="http://35.236.6.87:8090/QVA"/>
<store type="GCS">
{"credentials":"scudata-891de5fb1bc9.json"}
</store>
</verify>
</verifies>
</qvs>
其中用到的 GCS 远程存储连接文件 scudata-891de5fb1bc9.json 放在应用项目的类路径下。
了解更多 qvsConfig.xml 的配置可参考【QVS 配置】。
5,设计并部署脚本文件
创建 splx 文件如下,保存为 Qcon.splx:
A | B | |
1 | =Qconnect(:"GCP-35.236.6.87",30,300) | 通过内嵌 QVS 向 GCE 上的 QVA 申请分配 QVM。使用内嵌 QVS 时,参数 url 省略 |
2 | =A1.exec@x("unbucket100/employee-cursor.splx";100) | 通过 QVS 执行 GCS 上的脚本文件, 使用 @x 选项,返回执行结果后自动关闭 QVM |
可将上面的 Qcon.splx 放到应用项目的类路径下,也可以放到 raqsoftConfig.xml 中配置的寻址路径或主目录中,这里我们放置于主目录下。
6, 在 java 中调用脚本文件
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import com.scudata.ecloud.server.QVS;
public class qconnect {
Connection con = null;
java.sql.PreparedStatement st;
public void testDataServer(){
try{
//建立QJDBC连接
Class.forName("com.esproc.jdbc.QDriver");
Driver d = DriverManager.getDriver("jdbc:esproc:q:local://");
con = d.connect("jdbc:esproc:q:local://", null);
//调用Qcon.splx脚本文件
st=con.prepareCall("call Qcon()");
st.execute();
//获取结果集
ResultSet set = st.getResultSet();
ResultSetMetaData meta = set.getMetaData();
while (set.next()) {
for(int i=0; i<meta.getColumnCount(); i++){
System.out.print(set.getObject(i+1) + "\t");
}
System.out.println();
}
}
catch(Exception e){
System.out.println(e);
}
finally{
//关闭连接
if (con!=null) {
try {
con.close();
}
catch(Exception e) {
System.out.println(e);
}
}
}
}
public static void main(String[] args) throws Exception {
//调用com.scudata.ecloud.server.QVS.init(configFilePath),将qvsConfig.xml的相对路径作为参数传递
QVS.init("config/qvsConfig.xml");
qconnect tds = new qconnect();
tds.testDataServer();
}
}
执行结果如下:
集算器 IDE 中也可使用内嵌 QVS,集算器安装包中已内置 ecloud-xxxxxxxx.jar, GCS 远程存储连接文件 scudata-891de5fb1bc9.json 放到类路径下(如:[集算器安装根目录]/esProc/lib)。启动 IDE,在【工具 - 选项 - 内嵌 QVS】菜单中指定 qvsConfig.xml, 重启 IDE 即可启动内嵌 QVS,然后就可以执行 Qcon.splx 脚本:
虽然内嵌 QVS 相对于部署 QVS 比较便捷,但是也存在一些局限性,内嵌 QVS 不支持调试模式、不支持省略 QVA、不能使用全局锁和全局变量。用户可根据实际需求选择使用方式。部署 QVS 可参考《云服务部署说明》 。
英文版