oracle - 在 Quercus/Tomcat 上使用 Zend 并连接到 Oracle

标签 oracle tomcat jdbc zend-db quercus

我在 Quercus/Tomcat 上使用 Zend,我想使用 Zend_db 连接到 Oracle。

(a)如何让Quercus连接Tomcat JNDI数据源到Oracle数据库

(b) 如何让 Zend_db 连接到那个数据源

PDO::getAvailableDrivers() 显示以下输出

0->mysql

1->pgsql

2->Java

我找到了 (a) 的一些步骤,但我不确定如何验证它。 3->jdbc

最佳答案

这就是我为 zend 连接到 oracle 所做的,它工作得很好

在 Zend\Db 目录下的 Zend 库中,我创建了一个名为 Dbname.php 的文件

<?php
date_default_timezone_set("Europe/London");
require_once 'Zend/Registry.php';

/**
 * Class for creeating an Oracle SQL Dbname.
 *
 * @Author     Chris Robinson cghrmauritius@gmail.com
 */
class Zend_Db_Dbname
{
 public static function get($arr) {

     $enviroment = Zend_Registry::get("enviroment");

     if(isset($arr[$enviroment.":db"])){

         $retArray = $arr[$enviroment.":db"];

         $dbName = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)
                        (HOST={$retArray['host']})(PORT={$retArray['port']})))";

         $dbName .= "(CONNECT_DATA=";

         if(isset($retArray['pooled'])){
             if($retArray['pooled'] == 1)
                $dbName .= "(SERVER = POOLED)";
         }
         if(isset($retArray['sid'])){
            $dbName .= "(SID={$retArray['sid']})))";
         }else if(isset($retArray['serviceName'])){
            $dbName .= "(SERVICE_NAME={$retArray['serviceName']})))";
         }

         $retArray['dbname'] = $dbName;

         unset($retArray['pooled']);

         return $retArray;
     }
     return "Missing '".$this->enviroment.":db' from application.ini";       
 }
}


?>

我还有一个 ini 文件('myfilename.ini'),它包含我们的开发和生产数据库的所有数据库连接详细信息,如下所示

[global]

salt    = "qZPJeZbQv])7fnKxS’U0\2V^Eg.|})+obZ:H6|y.[#EBqo;Evp"
api     = "d5f75f4ddc0a5cead40b4269ca28b217b71ed893";

[production]

debug = false

[production:db]

host    = xx.xx.xx.xxx
username    = myusername
password    = mypassword
port    = xxxx
charset     = "WE8ISO8859P1"
pooled  = true
sid     = mysid

[development]

debug = true

[development:db]

host        = xx.xx.xx.xxx
username    = myusername
password    = mypassword
port        = xxxx
charset     = "WE8ISO8859P1"
pooled      = false
sid         = mysid
debug       = true

然后在我的网站代码或类中建立连接

Zend_Registry::set("enviroment", "production");
$arr = parse_ini_file('myfilename.ini',true);
$options = Zend_Db_Dbname::get($arr);
$db = Zend_Db::factory('Oracle', $options);

我发现使用这种方法非常有用并且可以快速创建新的类/页面/api 等,并且可以在开发和生产服务器之间快速切换。

如果您需要任何进一步的帮助,尽管提出来。

关于oracle - 在 Quercus/Tomcat 上使用 Zend 并连接到 Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10936722/

相关文章:

oracle - 管道破裂迭代?

java - Tomcat java.io.IOException : Invalid keystore format when loading keystore via Classloader 异常

java.lang.ClassNotFoundException : com. mysql.jdbc.driver 错误,jar 文件已导入

java - tomcat在包路径找不到servlet

java - 指定类文件目的地

java - 在Java中设置Oracle 10g数据库连接超时

java - 在查询中设置为 null 的准备好的语句不返回任何记录

oracle - TO_char 将数字转换为字符串后返回斜杠值

mysql - ACID 事务,持久性

java - Google App Engine 无效公共(public) ID : -//Oracle Corporation//DTD Web Application 2. 3//EN