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 }