jdbc配置代理伺服器
① JDBC與JNDI這兩種連接方式有什麼區別
jdbc是資料庫中間代理商為了是java連接資料庫而定的一個協議 或者說是方法,通過jdbc-odbc的方法進行資料庫連接,是連接一次創建一次的做法 1,由資料庫驅動和協議組成連接數據的方法,調用中間商提供的類包,進行創建連接 2.再由連接去調用3種狀態. 3.由狀態來提供對資料庫的操作 jndi是一種命名樹的方式,把需要的類都列成目錄的樣式,需要哪個只要根據命名直接去 調用,是一種比較快潔的思想和行為. 當你要操作資料庫的用jdbc 操作命名服務用jndi Java Database Connectivity (JDBC)是一個標準的Java API,它由一組類和介面組成,Java應用程序開發人員使用它來訪問資料庫和執行SQL語句 JNDI(Java Name Directory Interface),可不僅僅是進行資料庫定位的, 它是給當前應用伺服器所管理的所有資源一個唯一的標識,包括資料庫,網頁,文件, 連接池等等。
配置 JNDI綁定
此處綁定的數據源是以 DBCP 為實現。首先必須將資料庫驅動(這里用了MYSQL資料庫)和DBCP所需要的 Jar 包復制到 Jetty 根目錄的 lib 目錄下。DBCP主要需要以下3個文件:
Commons-dbcp.jar
Commons-pool.jar
Commons-collections.jar
jdbc和jndi區別
Connection conn = null;
try{
Class.forName("com.mysql.jdbc.Driver",true,Thread.currentThread().getContextClassLoader());
conn = DriverManager.getConnection("jdbc:mysql://MyDBServer?user=***&password=****");
.....
conn.close();
}
catch(...){...}finally{
if(conn!=null){
try{
conn.close();
}
catch(...){...}
}
}
存在的問題?
1、資料庫伺服器名稱MyDBServer 用戶名和口令可能需要修改,由此引發JDBC URL修要修改;
2、資料庫可能該用別的產品;
3、隨著實際終端的增加,原配置的連接池參數可能需要調整;
解決辦法
程序員不必關心資料庫級別的事情,只需要知道如何引用即可
JNDI出現了。
定義數據源,也就是JDBC引用參數,給這個數據源設置一個名稱;
在程序中通過數據源名稱引用數據源,從而訪問資料庫;
//jndi連接
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/webtest");
conn = ds.getConnection();
//jdbc連接
Class.forName("com.mysql.jdbc.Driver",true,Thread.currentThread().getContextClassLoader());
conn = DriverManager.getConnection("jdbc:mysql://localhost/mismain?user=root&autoReconnect=true");
程序員開發時,知道要開發訪問MySQL資料庫的應用,於是將一個對 MySQL JDBC 驅動程序類的引用進行了編碼,並通過使用適當的 JDBC URL 連接到資料庫。
就像以下代碼這樣:
Connection conn=null;
try ...{
Class.forName("com.mysql.jdbc.Driver", true, Thread.currentThread().getContextClassLoader());
conn=DriverManager.getConnection("jdbc:mysql://MyDBServer?user=qingfeng&password=mingyue");
......
conn.close();
} catch(Exception e) ...{
e.printStackTrace();
} finally ...{
if(conn!=null) ...{
try ...{
conn.close();
} catch(SQLException e) ...{}
}
}
這是傳統的做法,也是以前非Java程序員(如Delphi、VB等)常見的做法。這種做法一般在小規模的開發過程中不會產生問題,只要程序員熟悉Java語言、了解JDBC技術和MySQL,可以很快開發出相應的應用程序。
沒有JNDI的做法存在的問題:1、資料庫伺服器名稱MyDBServer 、用戶名和口令都可能需要改變,由此引發JDBC URL需要修改;2、資料庫可能改用別的產品,如改用DB2或者Oracle,引發JDBC驅動程序包和類名需要修改;3、隨著實際使用終端的增加,原配 置的連接池參數可能需要調整;4、……
解決辦法:程序員應該不需要關心「具體的資料庫後台是什麼?JDBC驅動程序是什麼?JDBC URL格式是什麼?訪問資料庫的用戶名和口令是什麼?」等等這些問題,程序員編寫的程序應該沒有對 JDBC 驅動程序的引用,沒有伺服器名稱,沒有用戶名稱或口令 —— 甚至沒有資料庫池或連接管理。而是把這些問題交給J2EE容器來配置和管理,程序員只需要對這些配置和管理進行引用即可。
由此,就有了JNDI.
用了JNDI之後的做法:首先,在在J2EE容器中配置JNDI參數,定義一個數據源,也就是JDBC引用參數,給這個數據源設置一個名稱;然後,在程序中,通過數據源名稱引用數據源從而訪問後台資料庫。
具體操作如下(以JBoss為例):
1、配置數據源
在JBoss 的 D:\jboss420GA\docs\examples\jca 文件夾下面,有很多不同資料庫引用的數據源定義模板。將其中的 mysql-ds.xml 文件Copy到你使用的伺服器下,如 D:\jboss420GA\server\default\deploy。
修改 mysql-ds.xml 文件的內容,使之能通過JDBC正確訪問你的MySQL資料庫,
如下:
Connection conn=null;
try ...{
Class.forName("com.mysql.jdbc.Driver", true, Thread.currentThread().getContextClassLoader());
conn=DriverManager.getConnection("jdbc:mysql://MyDBServer?user=qingfeng&password=mingyue");
......
conn.close();
} catch(Exception e) ...{
e.printStackTrace();
} finally ...{
if(conn!=null) ...{
try ...{
conn.close();
} catch(SQLException e) ...{}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/lw</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>rootpassword</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
這里,定義了一個名為MySqlDS的數據源,其參數包括JDBC的URL,驅動類名,用戶名及密碼等。
2、在程序中引用數據源:
Connection conn=null;try ...{
Context ctx=new InitialContext();
Object datasourceRef=ctx.lookup("java:MySqlDS"); //引用數據源 DataSource ds=(Datasource)datasourceRef; conn=ds.getConnection();
......
c.close();
} catch(Exception e) ...{
e.printStackTrace();
} finally ...{
if(conn!=null) ...{
try ...{
conn.close();
} catch(SQLException e) ...{ }
}
}
直接使用JDBC或者通過JNDI引用數據源的編程代碼量相差無幾,但是現在的程序可以不用關心具體JDBC參數了。
在系統部署後,如果資料庫的相關參數變更,只需要重新配置 mysql-ds.xml 修改其中的JDBC參數,只要保證數據源的名稱不變,那麼程序源代碼就無需修改。
由此可見,JNDI避免了程序與資料庫之間的緊耦合,使應用更加易於配置、易於部署。
② JDBC鏈接資料庫的方法有幾種各自的優缺點
它代表最低級別的持久性策略。本地框架各不相同,但大多數有著相似的特徵。 大多數 JDBC 解決方案把所有的數據訪問包裝在數據訪問對象中,對象中包裝有一個關系表。從那裡,您可以把數據留在結果集或者選擇把結果集中的每一行映射到一個對象。Java 技術開發人員傾向於映射到輕值對象(light value objects)。一個特殊的替代方案是 Martin Fowler 的有效記錄設計模式,這種設計模式提供針對數據表中行的包裝程序。每一個有效記錄都有訪問每一列的方法,以及保存、刪除或更新行的方法。 長處 基於JDBC 的解決方案提供良好的控制能力。您要寫更多的代碼來解決預料中的問題,但是您有訪問資料庫的所有權利,並且可以讓它只做您想要它做的事。純 JDBC 給予您非常好的靈活性。 弱點 關系資料庫和對象並不是一回事 —— 這里有一點分歧。您不得不處理一些面向對象的概念,如繼承。您還必須自己管理每一個對象,寫查詢程序來完成創建、讀取、更新或刪除操作。如果要提升性能,需要提供您自己的緩存。 總結 對於那些技術不好但了解 SQL 的 Java 程序員來說,JDBC 是一個很好的選擇。如果您需要更好的訪問 SQL 或者在進行批處理計算或報告,那麼 JDBC 也能勝任。 變種 有幾個框架和工具可以幫助您擴展 JDBC。一些工具,像 Velocity 和 MiddleGen,會生成數據訪問對象,給出資料庫表的描述。Spring 提供依賴注入和面向方面的編程,這使得服務和依賴關系的集成更加容易。但是總得來說,應用程序結構和策略應該保持一致。 對象關系映射程序 OOP 和關系資料庫基於根本不同的基礎。通常,很難把兩者混合起來。如果您有一個現有的關系模式或一個可能頻繁改變的關系模式,那麼 ORM 框架也許正是您需要的。大多數的 ORM 試圖讓您透明地處理對象。您提供一個 POJO,然後,通過使用代碼生成(EJB)、位元組碼操縱(JDO)或反射(Hibernate),框架與持久性相關聯。每種技術都有它的長處和弱點,因此大多數的框架使用多種方法來完成工作。 您需要告訴應用程序如何映射資料庫表到應用程序的類。您可以用一個獨立的 XML 文件或程序代碼中的注釋來達到目的。這些注釋可以採取 Java 5 注釋的形式(使用 XDoclet 之類的工具)。如果模式和對象模型不會走到一起,我一般會將代碼和配置文件分離。 持久性框架讓您從資料庫載入一系列的對象。您可以顯示它們,或操縱它們並把它們存回到關系資料庫。大多數的 ORM 框架提供擴展,比如兩級緩存。一般來說,第一級緩存保證事務的完整性,第二級保證跨集群中機器的一致性。盡管有多種實現,但是您應該准確理解緩存策略。 您需要用於管理配置和依賴性的策略。您的應用程序可能需要選擇一個事務策略並使用數據源和連接池。正如在前面的章節中所學到的那樣,Spring 和 ORM 能很好地為您處理這些問題。這里有一些可用的 ORM。 EJB 企業級 JavaBean 提供兩種標准化的持久性策略,EJB 1.x 標准 和 2.x 標准。第二個標准做的更好,但仍然過於復雜。EJB 專家組承認這一事實並將提供第三個標准,即 EJB 3 JSR;但是該標准將對所有的 Java Enterprise Edition (JEE) 用戶可用,不僅僅是對 EJB 用戶可用。因此,EJB 持久性標准實際上是一條死路,因為新的應用程序想要目標方案接近期望的 JSR 220 標准。 Hibernate Hibernate 很快變成了持久性的事實上的標准。它快速,有效,而且是免費的。因為 Hibernate 讓您制定任意的 POJO 持久性,所以它必須有一種方法把持久性關聯到一個對象而不必改動代碼。Hibernate 主要通過反射來提供透明性,但是它通過動態代理混合在一些運行時位元組碼操縱中。使用反射,Hibernate 可以在事務完成前後查看對象的狀態。如果狀態發生改變,Hibernate 可以把它保存到資料庫中。代理幫助 Hibernate 實現一些其他的特性,比如懶散載入(lazy loading)。(把動態代理想像成一個坐在目標對象前面的對象,它有一個與目標對象相同的介面。每當您調用某些方法或訪問實例變數時,代理都可以自由地調用持久層。) Hibernate 僅支持關系資料庫,而且它與 SQL 結合的緊密程度比大多數其他的持久性框架要高。Hibernate 使用類似於 SQL 的查詢語言,這種相似性對用戶的幫助很大。如果需要,您也可以在 Hibernate 中直接使用 SQL。 像JDO 一樣,Hibernate 擁有兩級緩存。第一級緩存叫做會話,給您一個存放持久性對象的地方。您可以把對象載入緩存並操縱它們。然後決定何時通過在會話上調用刷新(flush)或提交(commit)來將更改持久存儲到資料庫中。 Hibernate 幫助您管理關系。如果您定義一個關系,比如雇員屬於部門,Hibernate 將對其進行管理。如果您載入一個部門的信息,您可以決定是在載入一個部門時載入所有的雇員信息(熱切載入),還是等待載入雇員信息(懶散載入)。 長處 Hibernate 有一個靈活的映射機制。一些場景比其他場景付出更多的努力來映射,但是如果您能在一個關系模式中表示它,那麼也許在 Hibernate 中有一種方法來映射到它。Hibernate 的性能比大多數的框架要好而且還在不斷提升。文檔很優秀,收購 JBoss 後,支持也在改善。JBoss 小組也把 Hibernate 放置在一個合適的位置以搶在競爭者之前實現 JSR 200 持久性標准。 對Hibernate 來說,與其他開放源碼框架和商業框架的集成比其他的替代框架要好。一般來說,Spring 與 Hibernate 的集成比與其他任何一個持久性框架的集成要好。 Hibernate 是一個創新的框架。在推動與 SQL 的集成上,它比大多數其他的框架走的更遠。它具有一些其他框架不支持的特性,比如會話過濾。還有一支強大的公共和商業開發人員團隊為其工作。 弱點 如果您是一家大公司,那麼您可能要用不支付許可費來彌補支持上的欠缺。Hibernate 比替代框架更加難以管理。例如,您沒有 SolarMetric 的 Kodo JDO 產品提供的豐富的管理控制台。您也沒有 Versant 的 JDP 產品提供的豐富的用戶界面工具。 最後,Hibernate 不像一些持久性框架那麼專業。例如,對於一些邊緣情況,比如管理懶散載入,Kodo JDO 有非常好的錯誤信息和更加可預測的行為。 JDO 如果您想要帶持久性框架的 Betamax,JDO 1.x 就足夠了 —— 雖然時運似乎在轉向 JDO 2,更不用說 JSR 220 持久性標准了。在過去三年左右的時間里,最好的技術持久性框架來自 JDO 社區。JDO 通過位元組碼增強機制實現了透明性。JDO 2 多少會放鬆這個限制。 JDO 提供一種叫做 JDO QL 的查詢語言。對緩存和提取定義了懶散/熱切提取場景的組(可以在每次查詢的基礎上定義這樣的場景),它有正式的性能擴展。JDO 還為分離式處理(detached processing)提供一個模型,以便您能夠從一個 JDO 會話(叫做 PersistenceManager)分離一個對象,改變並重新附加該對象。然後資料庫應用所有更改。 JDO 還為任意的數據存儲提供透明的持久性。在現實世界中,大多數的數據是非關系型的,JDO 自己就能很好地為該社區提供解決方案。 長處 JDO 的各種供應商各有長處。Kodo 產品在需要極限持久性場景的利基市場賣得很好。Kodo 執行快速,並得到廣泛的認同:它對任何一個 JDO 產品都有最好的映射支持。(我要說,就現在來看,它的映射支持是業界最好的。)Kodo 還在可管理性方面領先。(Versant 產品也有著非常快的速度。)顯然,它的最大優點是針對映射支持的用戶界面。 弱點 對JDO 弱點的任何處理都必須從市場份額開始。作為一個標准,JDO 應當得到更好的保護,但是到目前為止,這個標准並不是非常成功。具有諷刺意味的是,JSR 220 持久性標準的出現很可能會對 JDO 造成打擊。許多 JDO 供應商已經宣布在他們的產品中支持 JSR 220。您將會看到一個更強大的標准,而且好的 JDO 供應商將能夠在那些市場中佔有一席之地。JSR 220 標准將會開放,而且新的標准將從那裡快速產生,您將會看到顧客使用同樣的標准來嘗試 JDO。由於疲弱的市場表現, JDO 需要在開放源碼社區中更好地表現。Versant 向 Eclipse 小組捐贈它的產品是在正確的方向上前進了一步。 其他 Top Link、OJB 和 Cayenne 正在追趕 Hibernate,但是它們不可能趕上了(出於許多因素)。在接下來的幾期文章中,我將用其他的語言如 Ruby 或 Python 來探索幾個框架。 混合解決方案 本文將在介紹完一種混合解決方案後結束。大多數的 ORM 解決方案把一個類映射到一個關系資料庫模式,而諸如 iBATIS 之類的混合框架則把類映射到一個 SQL 查詢的結果。 對於iBATIS,您提供一個 XML 文件,它指定查詢和從那些查詢到對象的映射。您能得到 ORM 的一些好處,比如一致緩存策略、獨立於代碼庫的 SQL 和限定的關系管理。 長處 iBATIS 還有一些 ORM 框架沒有的優點。您有對 SQL 的嚴格控制的權利,不必擔心對象/關系的不匹配,也不必投入幾個月來學習一個對象/關系映射框架。 弱點 iBATIS 不會給予您 ORM 所做的一切。您需要編碼查詢來完成每一次的資料庫訪問,而不是您自己來完成訪問。與資料庫的結合更加緊密。並依靠您選擇的 SQL 方言。
③ lotus domino中怎麼用jdbc連接關系資料庫請真正懂的人進,高分。
客戶端也要放jar包的,不然你編譯保存時候會報錯,必須在客戶端編譯通過才行的
你在客戶端的Lotus\Notes\jvm\lib\ext里也放一下包試試,就是開發的那台~
④ oracle.jdbc.proxy.annotation.post怎麼用
#include <stdio.h>
/* input to output; 2nd version */
main()
{
int c;
while ((c = getchar()) != EOF)
putchar(c);
}
⑤ oracle odi獨立代理和j2ee代理的區別
ODI11g:建立一個海外代理
目的
本教程將引導您完成所需的步驟設置和安裝一個甲骨文數據集成器(ODI) 代理
時間來完成
大約20分鍾
概述
使用海外執行常見的任務,是建立海外開發和安裝代理。 ODI場景創建後, 他們可以安排和策劃使用一個海外代理,這是一個輕量級的Java海外開發流程,協調執行場景。。 本教程將引導您完成所需的步驟設置和安裝海外代理。 對於這個示例, 您使用OBE題為ODI創建過程創建一個海外開發過程來創建並填充一個關系表。 你也在海外運營商驗證程序的執行。
場景
琳達是一個全球企業資料庫管理員。 在全球企業,琳達負責 執行資料庫管理和集成任務在組織內的各種資源。 特別是,琳達負責數據載入、轉換和驗證。 琳達開始工作在她的項目,創造了新的主存儲庫 和工作存儲庫。 琳達還創建了項目和程序創建一個關系表,用數據填充它。 現在琳達需要設置和安裝一個海外代理服務。
軟體和硬體要求
下面列出的軟體要求:
安裝系統應該包括以下產品:
Oracle資料庫11 g
Oracle的數據集成器11 gr1一起
如果沒有做過,開始資料庫Oracle 11 g的服務和組件
先決條件
在你開始任務之前,確保你的系統環境符合下列要求:
1。
已經安裝了Oracle 11 g的資料庫。 如果沒有做過,開始資料庫Oracle 11 g的服務和組件
2。
已經安裝了Oracle的數據集成器11 gr1一起嗎
3所示。
本OBE之前,您應該已經成功地完成了以下ob:
ODI11g:創建和海外開發連接到主存儲庫。要訪問這個OBE,單擊在這里。
ODI11g:創建一個海外開發項目和程序來創建和填充一個關系表。 要訪問這些ob,單擊在這里。
驛碼海外代理密碼
在創建一個海外代理之前,您必須運行編碼密碼命令生成一個加密的密碼並粘貼到odiparams。 蝙蝠參數文件。 為此,執行以下步驟:
1。
導航到ODI_HOME目錄,ODI安裝並打開代理\ bin子目錄:甲骨文(C:\ \中間件代理\ Oracle_ODI1 \ oracledi \ \ bin)。 導航到odiparams。 bat文件,右鍵單擊該文件,並選擇編輯和一個文本編輯器打開它。 離開這個編輯器中打開,您將運行一個批處理文件從命令窗口並返回這個結果復制到odiparams文本編輯器。 bat文件。
解釋:您需要編輯odiparams。 bat文件設置為海外代理使用存儲庫連接信息。 密碼信息存儲作為一個加密的字元串。 你將在命令窗口生成加密的字元串。
Screenshot for Step
2。
離開打開文本編輯器,打開命令窗口(開始- > - > cmd)運行,將目錄更改為ODI_HOME \代理\ bin目錄:
C:\ Oracle中間件\ Oracle_ODI1 \ oracledi \ \代理\ bin
Screenshot for Step
3所示。
生成加密的密碼字元串,您將使用代理命令:編碼<密碼>。因為你的密碼是「oracle1」這個詞,在命令窗口中輸入並執行下面的命令:
編碼oracle1
保持打開命令窗口,你會回到編輯odiparams後。 bat文件。
Screenshot for Step
4所示。
從命令窗口復制生成的加密密碼(從命令窗口的下拉菜單中,選擇編輯>標記,然後用滑鼠強調密碼)並將其插入到odiparams。 bat文件ODI_MASTER_ENCODED_PASS的值 參數。 核實,如有必要,編輯設置其他從下表參數,保存odiparams.bat文件中,然後關閉它。 代理的連接已經建立起來了。
參數
價值
ODI_MASTER_DRIVER
oracle.jdbc.OracleDriver
ODI_MASTER_URL
jdbc:oracle:薄:@localhost:1521:李艾科
ODI_MASTER_USER
snpm1
ODI_MASTER_ENCODED_PASS
插入您的編碼的密碼。
ODI_SECU_WORK_REP
WORKREP1
ODI_SUPRVISOR_ECODED_PASS
離開默認值。
ODI_USER
離開默認值。
ODI_ENCODED_PASS
離開默認值。
ODI_JAVA_HOME
C:\ jdk1.6.0_18
注:
用戶snpm1RDBMS模式/ user(Oracle 11嗎g對主存儲庫)。 這是為OBE和隨後的ob」創建和連接到ODI主人和存儲庫工作」。
庫的名字叫WORKREP工作。
因為每次當你編碼的密碼,不同的價值觀,你的編碼密碼將不同於一個提供的截圖。
做不改變ODI_USER和ODI_ENCODED_PASS參數的默認值。 這些參數是在海外安裝指令。
Screenshot for Step
Screenshot for Step
Screenshot for Step
海外發展研究所創建物理和邏輯代理
現在您已經生成了一個編碼的密碼,並將其粘貼到odiparams。 bat文件,您需要創建ODI物理和邏輯代理定義。
1。
如果不開始,開始Oracle數據集成商:開始>程序> Oracle > Oracle dat積分器> ODI工作室。 點擊「連接到存儲庫」。 從登錄選擇WORKREP1名稱下拉列表。 對於密碼,輸入:SUNOPSIS。 單擊OK。
Screenshot for Step
Screenshot for Step
Screenshot for Step
2。
單擊拓撲選項卡。 在拓撲結構,選擇物理架構面板。 右鍵單擊代理節點。 選擇新代理。
Screenshot for Step
3所示。
填寫以下欄位:
名稱:localagent
主持人:網路機代理的名稱或IP地址已經啟動。 驗證這個參數設置本地主機。
埠:監聽的埠使用的代理。 默認情況下,這個埠是20910。 離開默認值。
Web應用程序的Web應用程序上下文:名稱對應於J2EE代理部署在應用程序伺服器上。 獨立代理,應該設置為這個領域oraclediagent。
這個代理支持的最大會話數量設置為250。
單擊Save按鈕。
Screenshot for Step
4所示。
現在你必須插入一個邏輯代理邏輯架構,並將其映射到新創建的物理代理。 單擊邏輯體系結構選項卡。 右鍵單擊代理和選擇新的邏輯代理。 在屏幕上,「localagent設置名稱。 「物理代理localagent。 從文件菜單中點擊保存,然後關閉邏輯代理選項卡。
Screenshot for Step
Screenshot for Step
Screenshot for Step
從命令行開始海外代理和測試連接
現在,您已經創建了代理和海外開發定義了物理和邏輯代理,你可以直接從命令行啟動代理。 你也測試連接海外獨立的代理。
1。
切換回該命令在海外窗口你離開打開_家裡\代理\bin目錄(C:\ Oracle中間件\ Oracle_ODI1 \ oracledi \ \代理\ bin)。 執行代理。 bat文件使用以下命令:
代理- name = localagent
Screenshot for Step
代理現在開始。 驗證成功啟動海外代理。 最小化窗口命令提示符-代理名稱= localagent。
請注意:這個命令窗口應該在實驗室保持開放的心態。
Screenshot for Step
2。
在海外,點擊測試圖標來驗證連接海外發展研究所的代理localagent。 單擊OK。
Screenshot for Step
Screenshot for Step
你成功地創建並連接到海外代理。
執行ODI與海外代理對象
與海外代理,拓展項目執行PRGcreate-populate_table程序創建和填充一個關系表。 這個過程是在OBE題為創建 海外開發一個程序來創建和填充一個關系表。 要訪問這個OBE,單擊在這里。
1。
在海外開發設計器中,右鍵單擊PRGcreate-populate_table程序和選擇執行。 在出現的窗口中,單擊代理下拉列表,並選擇localagent。 點擊好吧來 執行的工作localagent代理。 當屏幕顯示的信息」會議開始」的信息,點擊好吧。
Screenshot for Step
Screenshot for Step
Screenshot for Step
2。
單擊ODI符選項卡打開海外運營商。 在海外運營商,點擊會話列表選項卡,然後單擊刷新圖標。 擴展:物理代理>localagent 1>PRD_CREATE_POPULATE_TABLE,並查看 PRD-create-populate-table程序的執行結果。 驗證過程PRD-create-populate-table成功執行。
Screenshot for Step
總結
<包括一個簡短的摘要的用戶通過以下的所有步驟。 您可能還包括額外的信息,你認為是相關和有用的,可選的額外練習 用戶更多地了解相關功能和相關主題的鏈接,下面的參考資料部分中描述。
在本教程中,您已經了解了如何:
驗證的先決條件
海外開發編碼密碼
建立海外代理
執行一個ODI與海外代理對象
⑥ jdbc如何通過代理伺服器訪問資料庫
B伺服器部署數據訪問層的程序,可以用Web Service或可以用JNDI訪問到的組件如EJB等
C伺服器上面的程序調用Web Service發布的功能,或通過JNDI訪問EJB上的Remote介面來獲取數據
⑦ java用jdbc訪問資料庫,驅動路徑等怎麼弄,
java連接mysql資料庫
首先創建一個User 類,定義private屬性變數,設置屬性方法(),和獲得屬性方法()
再
import java.sql.Connection;
import java.sql.DriverManager;PrePpP
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DAO{
public static void main(String args[])throws ClassNotFoundException, SQLException{
Class.forName("com.mysql.jdbc.Driver")//聲明驅動
Connection con=DriverManager.GetConnection("jdbc(子協議):mysql(定位資料庫)://localhost:3306(埠)/mydb(資料庫名)");//建立連接
PreparedStatement ps=con.prepareStatement("insert into 表名( 欄位名1,欄位名2.,....)value(?,?,?)");// 獲得代理
ps.setString(1,u.getUsername()); //這里的1表示第一個?表示的是第一個欄位的值, 在 User類中定義一個u的實體,並getUsername()中獲得值
ps.executeUpdate(); //執行代理中的語句
ps.close(); //關閉代理
con.close();//關閉連接
}
}
⑧ 用java的動態代理模式寫jdbc 求代碼 謝謝
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
private final String DRIVER="com.mysql.jdbc.Driver";//mysql資料庫驅動
private final String URL="jdbc:mysql://localhost:3306/test";//url
private final String USERNAME="root";//用戶名
private final String PASSWORD="root";
Connection conn=null;//定義對象
public DBConnection(){//初始化
try{
Class.forName(DRIVER);
conn =DriverManager.getConnection(URL,USERNAME,PASSWORD);//
System.out.println("連接成功!");
}
catch(ClassNotFoundException e){
e.printStackTrace();
}
catch(SQLException e){
e.printStackTrace();
}
}
public Connection getConnection(){
return this.conn;
}
public void distory(){//用完資料庫關閉
try{
conn.close();
}
catch (SQLException e){
e.printStackTrace();
}
}
}
用的時候直接調用conn這個變數就可以了!!!!
⑨ java使用jdbc連接資料庫問題
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionFactory
{
private static ConnectionFactory ref=new ConnectionFactory();
private static Connection conn=null;
private ConnectionFactory()
{
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection()
{
String url="jdbc:sqlserver://localhost:1433;DatabaseName=Test";
try {
conn=DriverManager.getConnection(url,"sa","");
return conn;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
}
如果這樣還不能連接說明你的sa沒有啟用
⑩ 如何在Java代理中使用JDBC的連接池
/**
13 * 使用代理創建連接池
14 * @author ASUS
15 *
16 */
17 public class ProxyConnUtils {
18
19 private static LinkedList<Connection> pool = new LinkedList<>();
20 private static String url;
21 private static String user;
22 private static String password;
23 private static String driverClass;
24 //private static Connection conn;
25 static{
26 try {
27 Properties properties = new Properties();
28 InputStream in = ProxyConnUtils.class.getResourceAsStream("/db.properties");
29 properties.load(in);
30 url = properties.getProperty("url");
31 System.err.println(url);
32 user = properties.getProperty("user");
33 password = properties.getProperty("password");
34 driverClass = properties.getProperty("driverClass");
35 Class.forName(driverClass);
36 for(int i = 0;i<3;i++){
37 final Connection conn = DriverManager.getConnection(url, user, password);
38 //對connection做代理
39 Object connProxy = Proxy.newProxyInstance(ProxyConnUtils.class.getClassLoader(),
40 new Class[]{Connection.class},
41 new InvocationHandler() {
42
43 @Override
44 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
45 //判斷是否是close方法 回收連接
46 if(method.getName().equals("close")){
47 synchronized (pool) {
48 System.err.println("不能關閉");
49 pool.addLast((Connection) proxy);
50 pool.notify();
51 return null;
52 }
53 }else{
54 //若果調用的不是close方法 直接放行
55 return method.invoke(conn, args);
56 }
57 }
58 });
59 // 將代理對象添加到池中去
60 pool.add((Connection) connProxy);
61 }
62 } catch (Exception e) {
63 e.printStackTrace();
64 throw new RuntimeException(e);
65 }
66 }
67
68 //獲取connection連接
69 public static Connection getConnection(){
70 synchronized (pool) {
71 if(pool.size() == 0){
72 try {
73 pool.wait();
74 } catch (Exception e) {
75 e.printStackTrace();
76 throw new RuntimeException(e);
77 }
78 }
79 Connection connection = pool.removeFirst();
80 return connection;
81 }
82 }
83 }