java - 如何通过 Alfresco Javascript API 连接到 Oracle 数据库

标签 java javascript database oracle alfresco

因此,我一直在与 Alfresco 合作开展我目前正在进行的一个项目,该项目的最新要求之一是我从 Oracle 数据库中提取序列号,并在 Alfresco 的空间内填充自定义属性.

var conObj = new ActiveXObject('ADODB.Connection');
var connectionString = "Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=IP ADDRESS)(PORT=XXXX)))(CONNECT_DATA=(SID=your_SID)(SERVER=DEDICATED)));User Id=username;Password=pwd;"
                                conObj.Open(connectionString);

var rs = new ActiveXObject("ADODB.Recordset");
var caseID;

sql = "INSERT INTO case(mod_dt,mod_user) values(sysdate,’user’) RETURNING id"

rs.Open(sql, conObj);

caseID = rs(0);
logger.log("The new case id is: " + caseID);

rs.close;

然而,这返回说:

由以下原因引起:org.mozilla.javascript.EcmaError:ReferenceError:“ActiveXObject”未定义。 (工作空间://SpacesStore/b3145512-e54d-4d9e-9655-0b6ae678e39b#141)

这让我意识到 Alfresco 的 Javascript API 并不具备 Javascript 的全部功能。我读过一些关于创建自己的 java 类并从 Alfresco javascript 中调用它们的内容,但我还没有看到任何好的例子。有没有人有这方面的经验,或者他们可以演示一个创建 java 类以从 Alfresco Javascript 中调用的简单示例吗?

最佳答案

ActiveXObject 是 IE 特定的东西,它在非 IE 浏览器中不可用,因此它在服务器端 JavaScript 中不可用也就不足为奇了!

据我了解,您正在编写要按规则运行的 JavaScript,因此它将在 Alfresco 存储库层中执行。这让生活稍微轻松一些。您可能想要做的是使用 Oracle 的 Java API(JDBC 或类似的)编写一些 Java 代码来处理 Oracle 的连接和查询。

在存储库中运行时,您的 JavaScript 已经具有访问权限 to a large number of "root" objects ,可用于对存储库执行各种操作。您需要做的是将新的 Java 类作为附加类注入(inject),以便您的规则脚本在运行时可以使用它。

(如果您正在编写网页脚本,那么您可以安排让 java 对象可用于网页脚本的 JavaScript 模型。但是,当您执行规则时,这不是一个选项)

为此,请让您的新类扩展 BaseScopableProcessorExtension 。然后,当您为其定义 spring bean 时,设置 extensionName 属性来控制它在 JavaScript 中显示的名称。 Alfresco 本身有很多示例,您可以查看一下,ScriptSiteSevice(bean id siteScriptService)是您想到的一个。

如果您是 spring 和 Alfresco 的新手,我建议您要么将整个内容打包为一个模块(AMP),要么稍微作弊,将上下文文件放入新的 alfresco/中Tomcat 共享类下的 extensions 目录。您的文件将类似于:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
  <bean id="myOracleQueryBean" parent="baseJavaScriptExtension" 
        class="com.my.comany.namespace.alfresco.OracleScriptQuery">
    <!-- What it should be called in JS -->
    <property name="extensionName">
        <value>oracleQuery</value>
    </property>
    <!-- Inject any other things that your bean needs here -->
    <!-- eg some Oracle stuff from Spring -->
</bean>

关于java - 如何通过 Alfresco Javascript API 连接到 Oracle 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12698265/

相关文章:

PHP : Retrieve multiple data from mysql, 更简单的方法?

sql - 存在外键时违反外键约束

MySQL MIN 查询不适用于计算距离

java - 没有参数的 WSDL 生成方法

javascript - jquery window.load() 函数不会在 ios5 上触发

NetBeans : How can I set the splash screen and ico image of . exe程序中的Java native 打包?

javascript - 修改处理div的宽度

javascript - jQuery 菜单 > 折叠所有不在当前树中的内容

java - JAXB 编码子类继承

java - 在同一系列的 hbase 行中存储多个版本 : qualifier but different timestamps.