1. 程式人生 > >tomcat 配置 quercus記錄:php使用連線池訪問資料庫

tomcat 配置 quercus記錄:php使用連線池訪問資料庫

JNDI
(Java Naming and Directory Interface)是SUN公司提供的一種標準的Java命名系統介面,JNDI提供統一的客戶端API,通過不同的訪問提供者介面JNDI SPI的實現,由管理者將JNDI API對映為特定的命名服務和目錄系統,使得Java應用程式可以和這些命名服務和目錄服務之間進行互動。

正題
在quercus中可以隨意使用mysql_connect與mysql_pconnect兩個方法來連線資料庫。
當在web.xml定義得有database相關的訊息時,mysql_connect與mysql_pconnect都會自動忽略裡面的引數設定,直接使用web.xml的定義。

新增jndi設定:
vim WEB-INF/web.xml

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <web-appxmlns="http://caucho.com/ns/resin">
  3.   <description>truth application</description>
  4.   <databasejndi-name="jdbc/mysql">
  5.     <drivertype="com.mysql.jdbc.Driver">
  6.       <url>jdbc:mysql://192.168.1.5:3306/truth?
    useUnicode=true&amp;characterEncoding=utf-8</url>
  7.       <user>你的使用者名稱</user>
  8.       <password>你的密碼</password>
  9.       <init-paramuseUnicode="true"/><!--實踐證明這個是不管用的,因為quercus寫土了,全用的latin1字符集,後面再說-->
  10.     </driver>
  11.   </database>

使用的是resin4,需要繼續在web.xml的servlet段裡增加:

  1. <init-param>
  2.   <param-name>database</param-name>
  3.   <param-value>jdbc/mysql</param-value>
  4. </init-param>

這裡注意,param-value與上面的jndi-name對應,mysql_connnect函式在web.xml裡有這個init-param的定義的時候,將使用對應的jndi的設定。由此可得到連線池的好處。

上面的例子只使用了jdbc的基礎驅動,如果向下面的配置,自然就得到了pool:
例子1:

  1. <database>
  2.   <jndi-name>jdbc/mysql</jndi-name>
  3.   <driver><type>com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource</type>
  4.     <url>jdbc:mysql://localhost:3306/dbname</url>
  5.     <user>username</user>
  6.     <password>password</password>
  7.     <init-paramuseUnicode="true"/>
  8.   </driver>
  9. </database>

例子2:

  1. <database>
  2.       <jndi-name>jdbc/mysql</jndi-name>
  3.       <drivertype="org.gjt.mm.mysql.Driver">
  4.         <url>jdbc:mysql://localhost:3306/test</url>
  5.         <user></user>
  6.         <password></password>
  7.        </driver>
  8.        <prepared-statement-cache-size>8</prepared-statement-cache-size>
  9.        <max-connections>20</max-connections>
  10.        <max-idle-time>30s</max-idle-time>
  11.      </database>

這些簡單的配置,都可以讓php輕鬆跑在連線池上。
問題所在:
quercus寫土了,沒有在使用者設定為unicode的時候來解析使用者的輸入,到處是hard code的latin1。(本來在GAE裡使用這東西的人挺多的,可惜吧,AGE被盾了,然後quercus反饋latin1問題的人也不多,唉。)

  1. com.caucho.quercus.lib.db.JdbcConnectionResource: 94348
  2. com.caucho.quercus.lib.db.Mysqli:229

上面三處修改為utf8即可。

相關推薦

tomcat 配置 quercus記錄php使用連線訪問資料庫

JNDI (Java Naming and Directory Interface)是SUN公司提供的一種標準的Java命名系統介面,JNDI提供統一的客戶端API,通過不同的訪問提供者介面JNDI SPI的實現,由管理者將JNDI API對映為特定的命名服務和目錄系統,使得Java應用程式可以和這些命

Tomcat配置連接c3p0連接

oid 文件 ext version ges isa scrip Coding trac 一、Tomcat配置JNDI資源 JNDI(Java Naming and Directory Interface),Java 命名和目錄接口。 JNDI的作用就是:在服務器上配置資源

【Java】Spring和Tomcat自帶的連線實現資料庫操作

@[toc] 前言 前面我們已經用Spring和傳統的Jdbc實現資料庫操作、Spring和JdbcTemplate實現資料庫操作。但是這些都是基於直連的資料來源進行的,現在我們將介紹基於連線池的資料來源進行資料庫操作。前面幾個步驟都相同。 建立資料庫 首先建立我們的資料庫(這裡我使用的是Mysql)

問題記錄執行緒批量下載檔案

在一個視訊網上找到了喜歡的線上視訊資源,沒有下載按鈕,只能自己下載了,看了 一下network,是ts分片的檔案,好在是命名挺規範的,都是 xxxx + index + .ts的格式,方便了 我下載。 一開始我用單執行緒下載,下了半天只下了200個 分片,總共有800個,因此想到了執行緒池,

記一次c3p0連線死鎖的問題

       在公司的專案開發中,我負責資料層介面的程式碼編寫工作,其中,就涉及到mysql資料庫的查詢介面。為提供效能,也使用了C3P0這個連線池技術。配置簡單,也好用。這裡說一下,我們的使用環境;由於是給中介軟體層使用,而中介軟體並沒有向web層那樣,有配置spring

PHP連線實現的一種想法

雖然現在名義上是PHP開發,不過做這資料分析的事,平時工作大部分用的是JAVA。C語言出身,學的語言比較多,JAVA還算熟悉,不過之前一直都沒用連線池。第一次遇到連線池是在學校的時候女朋友用連線池出現問題了,找我,我看了下覺得沒必要,直接就刪了。那時候用的是第三方擴充套件,

記錄php上傳圖片至伺服器 並返回顯示圖片地址

前端上傳圖片主要程式碼:upload_test.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&g

MySql 8小時解決方案proxool連線

最近做的專案用的mysql資料庫,前天掛在伺服器上,昨天早晨上班一來,同事就說API資料介面訪問不了了,我馬上mstsc登陸伺服器看,報錯了。馬上重啟tomcat,結果還能正常執行,當時沒管,今天過來又出現相同的問題,錯誤程式碼網上一查,原來是MySql8小時的問題。 M

Spring Boot (四) Druid 連線密碼加密與監控

在上一篇文章《Spring Boot (三): ORM 框架 JPA 與連線池 Hikari》 我們介紹了 JPA 與連線池 Hikari 的整合使用,在國內使用比較多的連線池還有一個是阿里開源的 Druid 。本篇文章我們就來聊一聊 Druid 的一些使用姿勢。 1. Druid 是什麼? 我們先來

記錄mac的瀏覽器訪問任何域名、網址都跳轉到本地127.0.0.1或固定網址

net 偏好設置 配置 一個 更改 協議 pro proxy post 新年上班第一天,剛開機就遇到了個小坑,問題是這樣,打開瀏覽器,輸入任何網址都跳轉到本地的一個項目,該項目在本地Apache配置下,監聽的端口是8888,本機訪問的形式是127.0.0.1:8888。

c3p0連線操作資料庫亂碼

今天使用c3p0 xml 配置檔案操作資料庫一直出現中文亂碼  在網上找了好久 終於找到了解決辦法 如果你的程式執行沒有問題 只是出現亂碼的情況  那麼只要在 這個後面加上 &amp;useUnicode=true&amp;characterEncodin

tomcat配置CORS,支援JS跨域訪問

1. Place the CORS JAR and its dependency in the CLASSPATH Download the cors-filter-<version>.jar file and itsjava-property-utils-<version&g

php連線遠端mysql資料庫例項

下面把localhost改成遠端IP即可了 例項 $conn=mysql_connect('150.125.221.25','root','123'); 配置項:重點: 第一步:進去mysql(mysql/bin mysql -u root -p); 第二步:輸入密碼 第

springboot整合druid連線資料庫密碼加密)

<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.20</version

php連線sql server資料庫(sqlsrv)完整解決方案

平生最煩的就是交接別人亂寫的專案 一次性交接四五個半成熟專案我也是真心頭大 最近老闆讓我交接了一個專案與工行e支付做對接,由於連線測試app頻頻出現問題,並且溝通成本比較大。甲方爸爸一怒之下要求直接上正式環境,於是出現了下面一系列心酸史 環境:window

使用jsp的JSTL標準標籤配合資料庫連線資料庫進行互動

前言 昨天因為有事情,沒有時間來做實驗。今天接著前面的來做了一下,前面已經完成了資料庫與開發環境的連線配置。今天要做的就是寫一個簡單的demo來通過網頁操作資料庫裡面的資源。幾個互動的網頁那當然是一下子就寫完了,程式碼將會在下面給出。在這次的小實驗當中,最令我困惑的就是如何

基於express框架下Node.js+MySQL連線資料庫增添操作

題記: 這幾天一直在學習Node以及關係型資料庫的知識,剛剛接觸到了express框架,就想利用express框架,實現一個通過ajax操作來向資料庫內增添資料的功能。 正文: 話不多說,現在我們就來一起看看吧!我們需要了解哪些知識,做哪些基本工作!

JDBC之連線 Tomcat 8.5 MySQL資料庫連線配置與使用

簡介 本文以MySQL資料庫為例,介紹Tomcat 8.5環境下,其預設的資料庫連線池DBCP配置與使用. 連線池簡介 資料庫連線池是在使用者和資料庫之間建立一個”池”,這個池是用來存放資料庫連線物件。回收和重用已存在的資料庫連線比新建一個連線更高效。當用戶想要連線資料庫,

spring jdbc --注c3p0資料庫連線或druid連線使用配置整理

是Maven配置檔案:pom.xml的程式碼內容: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sch

tomcat自帶連線dbcp配置以及優化說明

轉自:http://www.totcms.com/html/201602-29/20160229114145.htm 一個網站每天大概有20萬的訪問量,使用的tomcat自帶dbcp連線池,一般網站訪問很好,速度也很快,但是過一段時間後,總是報timeout waiting for idl