孤傲苍狼

只为成功找方法,不为失败找借口!

JNDI学习总结(一)——JNDI数据源的配置

一、数据源的由来

  在Java开发中,使用JDBC操作数据库的四个步骤如下:

      ①加载数据库驱动程序(Class.forName("数据库驱动类");)
      ②连接数据库(Connection con  = DriverManager.getConnection();)
      ③操作数据库(PreparedStatement stat = con.prepareStatement(sql);stat.executeQuery();)
      ④关闭数据库,释放连接(con.close();)
  也就是说,所有的用户都需要经过此四步进行操作,但是这四步之中有三步(①加载数据库驱动程序、②连接数据库、④关闭数据库,释放连接)对所有人都是一样的,而所有人只有在操作数据库上是不一样,那么这就造成了性能的损耗。
  那么最好的做法是,准备出一个空间,此空间里专门保存着全部的数据库连接,以后用户用数据库操作的时候不用再重新加载驱动、连接数据库之类的,而直接从此空间中取走连接,关闭的时候直接把连接放回到此空间之中。
  那么此空间就可以称为连接池(保存所有的数据库连接),但是如果要想实现此空间的话,则必须有一个问题要考虑?
      1、 如果没有任何一个用户使用连接,那么那么应该维持一定数量的连接,等待用户使用。
      2、 如果连接已经满了,则必须打开新的连接,供更多用户使用。
      3、 如果一个服务器就只能有100个连接,那么如果有第101个人过来呢?应该等待其他用户释放连接
      4、 如果一个用户等待时间太长了,则应该告诉用户,操作是失败的。
   如果直接用程序实现以上功能,则会比较麻烦,所以在Tomcat 4.1.27之后,在服务器上就直接增加了数据源的配置选项,直接在服务器上配置好数据源连接池即可。在J2EE服务器上保存着一个数据库的多个连接。每一个连接通过DataSource可以找到。DataSource被绑定在了JNDI树上(为每一个DataSource提供一个名字)客户端通过名称找到在JNDI树上绑定的DataSource,再由DataSource找到一个连接。如下图所示:
  
  那么在以后的操作中,除了数据库的连接方式不一样之外,其他的所有操作都一样,只是关闭的时候不是彻底地关闭数据库,而是把数据库的连接放回到连接池中去。
  如果要想使用数据源的配置,则必须配置虚拟目录,因为此配置是在虚拟目录之上起作用的。需要注意的是,如果要想完成以上的功能,在Tomcat服务器上一定要有各个数据库的驱动程序。

二、JNDI+Tomcat配置数据源的两种方式

2.1、全局jndi配置

  此种配置需要在server.xml中配置数据源,具体的配置步骤如下:

  1、在tomcat服务器的lib目录下加入数据库连接的驱动jar包

  aaarticlea/png;base64,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" alt="" />

  2、修改tomcat服务器的conf目录下server.xml配置文件

  aaarticlea/png;base64,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" alt="" />

  打开server.xml配置文件,可以看到里面自带的一个全局JNDI配置,如下图所示:

  aaarticlea/png;base64,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" alt="" />

  编辑server.xml文件,添加全局JNDI数据源配置,配置如下:

 1 <!-- Global JNDI resources
2 Documentation at /docs/jndi-resources-howto.html
3 -->
4 <GlobalNamingResources>
5 <!-- Editable user database that can also be used by
6 UserDatabaseRealm to authenticate users
7 -->
8 <Resource name="UserDatabase" auth="Container"
9 type="org.apache.catalina.UserDatabase"
10 description="User database that can be updated and saved"
11 factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
12 pathname="conf/tomcat-users.xml" />
13 <!--
14 |- name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称,
15 为了不与其他的名称混淆,所以使用jdbc/oracle,现在配置的是一个jdbc的关于oracle的命名服务。
16 |- auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效
17 |- type:此名称所代表的类型,现在为javax.sql.DataSource
18 |- maxActive:表示一个数据库在此服务器上所能打开的最大连接数
19 |- maxIdle:表示一个数据库在此服务器上维持的最小连接数
20 |- maxWait:最大等待时间。10000毫秒
21 |- username:数据库连接的用户名
22 |- password:数据库连接的密码
23 |- driverClassName:数据库连接的驱动程序
24 |- url:数据库连接的地址
25 -->
26 <!--配置Oracle数据库的JNDI数据源-->
27 <Resource
28 name="jdbc/oracle"
29 auth="Container"
30 type="javax.sql.DataSource"
31 maxActive="100"
32 maxIdle="30"
33 maxWait="10000"
34 username="lead_oams"
35 password="p"
36 driverClassName="oracle.jdbc.driver.OracleDriver"
37 url="jdbc:oracle:thin:@192.168.1.229:1521:lead"/>
38
39 <!--配置MySQL数据库的JNDI数据源-->
40 <Resource
41 name="jdbc/mysql"
42 auth="Container"
43 type="javax.sql.DataSource"
44 maxActive="100"
45 maxIdle="30"
46 maxWait="10000"
47 username="root"
48 password="root"
49 driverClassName="com.mysql.jdbc.Driver"
50 url="jdbc:mysql://192.168.1.144:3306/leadtest?useUnicode=true&amp;characterEncoding=utf-8"/>
51
52 <!--配置SQLServer数据库的JNDI数据源-->
53 <Resource
54 name="jdbc/sqlserver"
55 auth="Container"
56 type="javax.sql.DataSource"
57 maxActive="100"
58 maxIdle="30"
59 maxWait="10000"
60 username="sa"
61 password="p@ssw0rd"
62 driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
63 url="jdbc:sqlserver://192.168.1.51:1433;DatabaseName=demo"/>
64
65 </GlobalNamingResources>

  经过以上的两个步骤,全局JNDI数据源就配置好了,在上述的server.xml文件中,分别配置了Oracle、MySQL、SQLServer这三种数据库的全局JNDI数据源。

2.2、全局jndi数据源测试

  1、创建一个JNDI测试项目JNDITest,在web.xml中添加JNDI配置的资源引用

  aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZQAAAE3CAIAAAACLyC3AAAgAElEQVR4nO2de3QV1b3Hzz/+n7XatVrvWl0qaqt13aJUbW2VePtQxHvrva6LVas3XuvrihVIa4ECJkRAVCiIAkEkARUFJQqEaHjYgDxtWRAQIWpLEgjkdQKHPM6Zk5N03z9Gx2H2Y/bMmTOz9znfz9rrrJl99v7tPcnZX777ZOZHjAhZt2aZuAEAAERCLOoJAACAH1zEC84LAKAmuRWv5uaGsurq4uqGsurq5uYG+1sHFv/kmsd3K/6azbUDAHJKDreNzc0NxQ0NJQ0N27dvX7nyjeLqBrt+XfP4bvVL7n44AIAsCdJ5HaqZahVCSFlDQ0l1Q3VDdUNzWUNDdUlZQ0lZtdXYdDcqFzgvAFQmMOfVuG7q+adTiqsbtm/f3tBQUlZdXFZdXFxWXFxSbTWIXJvgvADQGoZ4rf/okymVdXRZ/9EndOPFM59bPPO5xTPnDnZWDXZWJZuXxA+9cHLHjM82Tiqrri6rbiirLisrKS4pKykuKSsrK7M6Ws6LOS1BPf0WswbOC4D8hiFeUyrrmE2Z9c9Nmz/7xX3k3Ed0aW5uKK5uKK5uMD1XcUm14Dsvew2xiRTvgHlsf/Vkr+C8ANAOtngNDWWGh78sQ0OZoaHBVLKPJ2qlk14i3bWMYv61say6uKShvLyc+ddGnhKR82WIPmCKDl2TjXjBeQGgMmzxSqUGUqmBVKo/lepPJvvPJbpPtX7OE6/fPrqMnHqDXfiInRcJSLwcY9ET4M0HzgsAxWGL18DAudj5NH9x2BQv8++P9te7SqpI8xLSvKTk4RUPPLTigYeqHnjIPFhR8tCKBx5eUWIeP7zigYdWWKOInZdDd+gDGfESd4fzAkBr2OLV23smkYj39LTHu093dZ482fLZF0f385zX2HtXk8+fM8ud97+2oXWYV/7rvtetXmLnFZR40cPRo9Nx4LwAUB+2eLW1fvb3poNNn3x87PDeo4f2HN6//eC+rTzxKv7vt8mnM8inM35515q1R421nxprj6bXHjVfrWL8ctwaey9X55X9tpFuIB4OzgsAjWCL1+H9DXv+8u5H9Wt21L+1o/6t7R+8uXPL2zzxuu5XNeTQUzfcUVO1u7dqd++KPb1Ve3qrdvdW7eldsbu3ak9v1Z7eG/5znaOXQJ6sBsRmwRy9BJVM6yTwYkw7BucFgOJke58XIeQHt60fOXbDorr4orr4ove7F9V1L3o/vqiue9H73WbNyLHr6V6m87JOeRYpwgLnBYDKBHOH/RW31AoKs0vk2iRTAvnhAAByQWQpcfBsIwAgGyJLRhi5NsF5AaA1kYlX5Lm6ZF6j+uEAAFzJ1bYRKVgBADkFOewBAFqirvN6ZPSoLCMAAPKY6J3XzheutwohpOLWC+kS9RwBAMoRpPPyencrIaTmicvspycPbq649cLB5JaOPS/Pu/8W8wDiBQCgCdJ5ecpiSAjZOft6o6PS6KhMNC3saJzbsn3K2eY9Fbde2LHn5cPvlD8yepR5APECANAE6by8ZjHcNnuUkdhnL1PvuLni1gvn3X/LI6NHmWXe/bdU3Hohvv8CADgI2Hl5ymK4rWyU0bHeXoaSzda28ZHRo8TbRnu6MevUfuBoFuCVAgAiJ2Dn5SmL4aayUUbLSqvUlI4UFMbUKT2iRco6hXgBkGcE7Lw8ZTGsKb3KaFpolprSkUZLJbN0NM5lihdhmSy6QVBXBwBQioCdl6cshqufuMxomms0za0pHWke0EWgXF9fA99eQbwAyFcCdl6eshhWlXzHaJxSUzrSaCxnFrFyMb/z4u0loWIA5BlR3ue14M4La0pHGo1TmEXGcwEACpaI/UjVI98TlGjnBgBQGXWfbQQAAAH4JggAoCWRpYEGAIBsUG7bCLkEAMiAbSMAQEvyx3lNuvFb/joCAHREY+fVUHHNjj/9q1VeGneR/bSh4pqoJwgAyCFKOC8fWQwJITsmX/VFQ9Wpj1ed+njVgXdeqJp4t/10x+SrmL2yvOFepq9McNenMsW98MwAAEosAK9ZDE0anvr+qY9Xpc9t7Tn05rH6pVUT77afNjz1fUHfbFZ+UKrhLw7yZABgooTz8prF0GTrpO+f+nhVz6E3ew69eWxzpSle1unWSRAvAPIZJRaA1yyGJh/87ooD77xwrH7psc2Ve1dWTL3jZvvpB7+7QtBXMhcYs0asGvYGjkfHeXEk94DMXpAwULCo4rw8ZTEkhEy68VsvjbuoauLdZpl6x81msWpeGneR4O+PtJr4OJAJLhlHPqaP+QCQlyjxufeaxdDk3d9ebv+GfuodN9tP3/3t5YK+PCvkEBSH02H2FQeHeAGQI1RxXp6yGJqsfeBSwRf2ax+4VNCX57zoGogXAGqixOfeaxZDk9X3jRB8Yb/6vhHMXo7NKV3PbMms4akG82spcRx6aPHMmb0AKCiUcF7+7vN67Z4R9m/oqybebT997R62eIUABAWAENB4me1+ZtTKey6xykvjLrKf7n4m7P/qEVYIgDBRwnkFAp5tBKCggE0AAGhJ/jgvAEBBkT/iBbkEoKAoxG3jxuevZpao5wUA8EAhOq/35l6THhxylCMb/w/6BYBGFKLzWvfsKFq8Pv9w+qfQLwD0QW/n5e/u1jVzfphKD5llb2vPFQ8uGb9wW8u+BZ9/OP3IxsfWzv4hsxfzvnwfBBUn2FC+J6BgKFAg6P2J8ZfF8I1nrh1IZQZSmaSRscRrwMgkjcyAkVk961pex5jc44Su61AyjmSQLOP4GxGAyNHbedmzGMZiMckshtUV1/UlM33JTG/ya/HqG8j0DWT6kpmVFdfxOiorXuEA8QJKoffH0Z7FMBaLSWYxfLXsukRfJtE3mOj/WrwS/YOJvszZ/syrZdfzOjJFh36mmt7HZdOGNxZPShxtHEF4O01eDd1R0MV1dB7i+diD0PXiyCCP0d55ec1iSAhZOuNH8d7BnnOD8d60JV7xc4M9veme3sEl03/EG44WDqaU0OswmwNeHOa6zXIsT9fl70p5MAfy94MCBYLev3h7FsNYLCaZxXDRtB93nk13nk13Jr4Wr85EuiuR7kykX5p2A68jb0nTloTu6LAMknGYDXIhXrwZMoPzaoISL8L5iYnbgEJDe+dlZTGMxWKSWQz/PPmG02eMva09j6/c/fjK3aZ4ne5Jnz5jtPcY8yd7EK/cOS9Bd8GI2dsrXo1Ms9w5L8KScsnIIF/R+xfvL4vh3D/+9GS3sbe1Z3TpW6ZytXUbJ7uNk3HjZHf6uT/+lNmLtieCeoFpkowjCGtft7w4dAN6aHEoT8ElRyd8rRH/NJgdeT9JUCDo7bz83ec1+/c3tnYarV3GB4fbPjjc1tpltHYZLV1Ga6fR2pWa9YcbQ5g5cAABAl4pxE/MzEk3NnekjncYzR2p5i9fU80dqeMdqeMdqYpJEK/wgHUCvtHbefmjbOJN0yaMnj5x9PSJo6fZXqdPGD19wuiyiTdFPUEAgDv4Fw8AoCWF6LwAAHkAxAsAoCXYNgIAtERR55Voqm9ZWZRoqs8mCAAgj1HUebWsLErsu6JlZVHUEylEFs+41SxRTyRI8vKiCpwgnZe/W0aZNJYXtawsEpuvGB9mA5k4XueZJbxx6Tvdw5wVc4XTlZYW8ERBrBSWmog1RUZ0HG0EkSFe+USQq8JrasDYw/XXT393ZHntFc9s/vYLu4sW/PWCxZ/EHq4n1rZx+xUtlS7my7HOXQ9kuksSiKbIBFFBvMQtBdLmoy9zJrxmdBvJgEB3gnReXlMDfuvW6cxivttYXpTYfnHTwgDES2y7pK8vyL6egugoXvJxIF7AHwE7L6+pAX+w+AFeMXeOTQtdvrand1jiGmYEXhfHAXNPygsluRtl7hmZYR2ReTPntWFeFxMZG0Xv1HiVYiTdmUw05rbR03BALwJ2Xl5TA15QPmZK/XS6XFA+JtFU3zi3qKP+4qa5IvNFOy9xjXwc5gGvC92YfnUdVzIy4QicjzZMXG0ULU9MyxOmeMn4MskpAV0I2Hl5TQ14QfkYXiGENJYXddRf3FjuTbyYBzIw1cf+Lk8L7A3s7oYXShCEF5l3wJwAr42klPsTL3/fjgciXvJvQbzyiYCdl6fUgDtKi8XF3Dk2TnH5myN9LK9izO6Ev7HiteedehIv3mxlLseTwPEmY+LbefGaeR1LPKhrBEEviFc+EbDz8pQa8MPHrv181SRe+fCxaxNN9fumFHWs//a+KU7zxdslWWJBw5wDr4HYVTnq6WZETryYk6QHoi0V84pkrtpVuYjct++O2xHo2yZoLyYZlm4geS8F824JmUsDmhKk8/J6n9f7d1925PnbzfLJ+QefPH/7+3dfRggRiJeMifBN7iJHi6R45d8dUq4iCLQjyiW6/rZvmmXDbd9cP+arcts314/5soYQsm9KkVlCm1VONTFC/F2XamueafdAYRKk8wqkIwAAyJCHFgMAUAjkynkBAEBOwbYRAKAl2DYCALREUeeFZIQAADGKOi8kIwQAiInyJlUBPpIReh1CPqzMQJ7a0PWONgFdSt7eagsACfzxIE/1gScjDIoY69kj8XCS05BpBsUBQIaAH8yONhlhUMSoBxLpGn/TgHgBEBQBO69okxGS87dd9NaPbsOL6WjjujmV3MAy94zMS6Bny5ySoA1vi8q8Ligm0I6AnZcKyQi9HvBienJevCnJvEWLF33go41kZO5lAKA2ATuvaJMREpZtcW3jGpNZIz8l17f8SQzzSl0j09cO2wU0JWDnpVoyQsLaKNFteDHlrQpzCB+zlRxUXuAEp5JvAaAmATuvCJMRWqeuloRpQJjvWsZN3MXR0bUBMzgvDi8sHY33oxBUylwXAGoSpPPKp2SEAADFiXLxq5mMEACgBUE6r0A6AgCADNh2AQC0JFfOCwAAcgq2jQAALcG2EQCgJYo6LyQjBACIUdR5IRkhAEBMlDepCnBNRujp1vBo72gVDC24e16mu7/JBBUKgGgJ+PEgT/VZJiOMCR/ro5tFiPiZoWy6A1CwBPxgtpWMcHg4k+tkhBAvAAqZgJ2XlYwwlerPdTJCwYPHdBveRsw6dm0j8+SzTBv6KpjXJQgiP2depWA43sUCoBoBO68wkxFai9NRw6vktWGKRY4OeFchrvQ9Z6ZUufbiTRUApQjYeVnJCOPdp3OdjJC3XGkr4ehFGxk6Mq9Nlr0EVyGolAzoel3MyMyfGCQMqE/AzstKRnjs8N5cJyOUX9KCU681YvFy7SWeHq+9p9Gz/GnIvAWACgTsvMJMRmgZBIfdYJ7SzsLeV2Cj5McS1/CkxIFMWNc58waVqRRPGAB1CNJ5hZmMEABQ4ET5ryuSEQIAfBOk8wqkIwAAyIDvNQAAWpIr5wUAADlFuW2jfMcD9RO2LP3u5iWX1y++/INFl9e9eGntgks3zh+xYd6IA/UT/I0OANAFjbeNW5Z+95/DZ/85eHo49dlw71+HejYPd6wdaluWaZm3Zel3o54dACC35Ivzeumyuhcv3bRgxMb5IzbMuwTOC4C8R2PndbytZ+ri+uPtfecG0ucG0oODg+cGjOPtfVMX1x9v64l6dgCA3KKE8/KRxXBXY/O81btOdCfj51J9SaMvaaTS6b5kuvtc6kR3ct7qXbsam8WDerqD3NNN57g3HYAQUGKZec1iSAhZVfu3NduOnownz/QZKSOdMtLDQ4MpI32m12iLJ9dsO7qq9m9Zzor5/E2WMQEAQaGE87JnMYzFYq5ZDAkhs17d+pcDJ090J7vPGf1Jo/9r52W0didPdffPenWrv5lbQLwAUBklVqM9i2EsFpPJYvjk8+u7zxl1Ww4UXX3vy1V1Z872FV19byo9ZNXsFm4bXR+f5j3D7HotvCefHcd48hmALFHFeXnNYvi/5Wt7+tJFV997tvts0dX39qWGrFezZvv+f4gHdYiXuIGgmWRkWr8AANmgxCqyZzGMxWIyWQyDFS8izE0qqJGPTKsYACAbVHFeVhbDWCzmmsWQEPLk8+s7ziZfrqozN4lnBzJFV9+bGMhYNeJtI5FwW7lzXjJBAABilFhIXrMYEkJmvbr1w/1N8d50T1+6p2/wq5Lu6UvHe9Onus+6fmEv/s7LXu9o4CpDPOfFGwUA4AMlnJeP+7xW1f6tfseOE+3Hj7W2H26JH26JH2o+c6g5frS1/WR7c/2OHa63SuROQaBNAISArstsV2Nz5drNQ70Hk2cPJ+JHE/GjZ7qbEj1Hk4nDQ70HK9du5t2kmjvvA1elCvSvQPBLkf99ef3NMtu7BpGfvOR8ZJrp+aFVwnn567irsXnyoo3lS2tnVm6cWblxZuWGmZUby5fWTl600fX2epCHWCuQeeAqAWYbunhq7OjiSUYFDbxOntdGPChvaJkrjQItFRcANvZFKBYR+i0Z1WA2Fge3JiO5/n2LqeucBVMV/BACMa25QTnnBfKWLaVfr8AjhJAjtmOLI853rbLc1u7I8q/rS7ecN4p4kdPN7PpC42O1C7q7ypx4Sp4Uiqdr4suEeIXTEckItaRri1OezlOf88XryPn1seXOllu6vjwT+BR58yJwOsxeXndSApWk50NPT9DSHlksXtaBpBnUV7xUBskItcQhXkdYIsUQL0JIFym1K9354mVBr0Dxvkm8yOmWTIEQdxQMJBjFVVx48xGIl+vcmG9Jylzo5IvzQjJCXXCKl7mdtCyVQLy+2i0esbV0iJdj9dISw5Mbgd7x2hPOwraaid0fb/HLuDPBfOgIjgkIggT4Viho7LyQjFBLaPE6T4aE4kW3tIsXz0O5iper2XG0J3yJkXF2rs5LUkbpmK7Oi6mtYg+lr3gpe5Nq9skIg8LfvV0yvfLzljGGeJmWqpR0kazEy0Jgr+h68SLnRXZ1Xq6T4cVnaqWgvWM+RE68mN3FQ3h6KxSUWB4qJCPMRin89c1PbXKFKV7m91nLj/gXL7FposXLbrjsbehjO7zV7qpH4uKYj0x75nx8i5f4kmVmEgVKOC8VkhFCvEKCLV5Wvet3XqZBI6Iv7B0HzFNme7H8SaoGL77rTOh3xbpDv5sj8ZKZahQosX5CTkbIfMRa8FQ2swuvI93LUckbjjlJ8XyYzVSHJ16EkOUxUlrKFy+JvzbSfsr+FhOePNG9XMVLclxJ8eLJpdfIkuJFqGtxnW3UHzxVnFeYyQiZq51WiqAOXCPLzFMmsh58/bdFWp7st616vM/LDi1Drs5IRvJohfLqbng1gndj/A2a5DXyDBodPM/EKxzCT0Yo0BRHG09SJehFD+RJvGQiK421Thh3RdjYcr7zsheZO+zppUj4a9X+rg/xcjVlgrACeHNwFUGe+3PMx4rGE0SeejJLpKjivMJPRkg41sZxGtSBILKn6ekqXrnGkz2xHzv0TrA+BcbEdWgZCWBqovhUfCwWWR6Cn5i4ZegosQBCTkZo35zS9cxm9vYO+0MbImYvwQR4MsRzXoLIwBuuC1Vm5Qf4W3DIqHgsntXitc87lHBekSQjVB9oEwACdF0evpMRqg9cFQAyKOG8/IFkhAAUMvjnHQCgJRo7LwBAIQPxAgBoCbaNAAAtgfMCAGhJ9M5r5wvXWyXquQAAtCFI5+XjXtOaJy4TnAqw35suuENdcJO65EAAADUJcg17zSm4c/b1Rkel0VGZaFrY0Ti3ZfuUpvUTd86+3l54Y8mIF/Mt388GQu8AUIognZc9p+DwcMY1p+C22aOMxD5B2TZ7FHfeEC8ACpuAnZeVUzCV6nfNKbitbJTRsV5QqkouFk2dtQF01NBtZHrJxAEAREvAzstTTsFNZaOMlpVWqSkdKSiMqVO2i3ZVvAOvvQicFwCKEbDzsnIKxrtPu+YUrCm9ymhaaJaa0pFGSyWzdDTOlRcvh0UK6oBAvABQjICdl5VT8Njhva45BVc/cZnRNNdomltTOtI8oAtPuYjQQ9E1EC8A8oyAnZennIJVJd8xGqfUlI40GsuZRaBchPNtPe28eKd0PR2HHhESBoAiRHmf14I7L6wpHWk0TmEWsXIBAAqciH1E1SPfE5Ro5wYAUJlcPdsIAAA5Bd/gAAC0BM4LAKAlyokX5BIAIAO2jQAALYHzAgBoicbOC1kMAShklHBeIWcxdNxh73iSnFlj9XWNzLyJP8ZBcs4AABol1k/IWQyZjwfZD+hXRzMB9GNGrgcAAB8o4bzsWQxjsViusxjyxIunO3RfAbxnJMVjAQC8osQSsmcxjMViOc1iyBMvWpiYp3QX8daSKV7YMwKQPao4r9CyGDK3hDLOS9Ix8XrBeQEQLEosIXsWw1gsltMshgLxYra0n8qYJknxAgBkiSrOy8piGIvFcprFUCxe4g0gs54ZX9AL4gVAICixkMLMYkiLF/PbK+YpfeyI7IjjOKbDAgB8o4TzQhZDAIBXdLUAyGIIQIGjhPOKdkQAgI7o6rwAAAWOcs4LAABkUE68IJcAABmwbQQAaAmcFwBASzR2XkhGCEAho4TzCjkZIf3KuzNecCs8rxf9Fu6qByAXKLGiQk5G6HiVPBBEo0+9xgEAeEUJ52VPRjg8nMl1MkLCES+7vvgWL9fIAIBAUGJR2ZMRplL9OU1GSFhPR7vW8DaAMuKFPSMAuUAV5xVaMkLC91mBOC+C1IMAhIISi8qejDDefTqnyQiJUKromkDECwAQOKo4LysZ4bHDe3OajJDI+azAv7AHAASLEksrzGSEhPVtveP7LObXW3QQXi9yvgWDfgGQC5RwXkhGCADwiq6mAMkIAShwlHBe0Y4IANARXZ0XAKDAUc55AQCADMqJl+8RobMAFBTYNgIAtATOCwCgJYXovJDFEIA8QG/nFXIWQ+bt8o7HjHA/PQDhoPdKCzOLoYmrNkG8AAgHvZ1XmFkMTSBeACiC3ist5CyGhJ990FEDCQMg12jvvMLMYkiEmb8cp9AvAHKK3gss5CyGBOIFgDJo77zCzGJIIF4AKIPeCyzMLIZ09kHC+oYL33kBEA56Oy9kMQSgYCk4g4AshgDkB3o7r0A6AgB0pOCcFwAgP8gf5wUAKCjyR7xy2nHOnDnt7Ud5Zdy4cf6GBgD4BttGKebMmSN4F/oFQPjAeck6L3ED6BcAIQPnJYWreC1btmzy5Mm4NxWA0IDz8ua8Pv38eOor+vv7U6nUwMDAe9sPtrcfXbZsmVi8PEmbpzv1IZqgAMGHXgpLvOLxeCaTyWQyfX198T//2Dxe+NYWQsj+/fuzFBHXBycBABZwXt6cV3t7ezKZ7Ovr63z6Xzo2VfT19SWTyYrl7xGIFwDhgrUhhSVera2tiUQiHo+3trbG4/GTJ0+eOXPmD/NfI27ixXt+W/CMN5ETL15CRMcxHhcHeQacFyNnoeN17Kwaezl9+vT9M5b+Ztrix+asOH369Nyq9x4qf5lIOC+HeIkbCJpJRqb1C4B8Ap9pd4p+Ns1e2traHp21/J6pLz06a/n/zFjS0tJyV+mzxKN4EY5jEnfxFBmZxUB+A+cl1fH+tx60lyfnv2mVeDw+5pHpxLt40ZW5c14yQQDQC3yspYjNGmsvN91Xai/vbdtNvG8beV9y2b+ikvRQPOfFGwWAPADOy73jnt/fQBe6mT/nFQjQJlCA4EPvTt29lxydN9Ze6u69hG7GE6/ceR+4KlDIwHm5d6wbW0QXuln293kBAOTBYpNinBwQLwBCA84L6Q8B0BKIF5IRAqAl2OZIgWSEAKgGnBeSEQKgJXBeUiAZIQCqAecVXjLCoPB3b5dML4gv0Ah8WKXIRTLCbJTCX19oE8gn4LwiS0YI8QIgG/BpliLLZITMR6wFT2Uzu/A60r0ItUmUeZBIZj7MZgBEApxXGMkIec88Mk+zP3CNzMOhd66RAYgQfBbdCSQZoUBTHG08SZWgFz2QJ/GSiQxAhMB5SRFIMkIiTD0YoPPiDZq98xJ3ByBM8HGUIstkhDEbdD2zmb09/d0Tr4Y5Ct1LME9eL15kAKICzsudoJIRqo/u8wcFBT6s7mSZjFB94KqAjsB5uYNkhAAoCBabFEhGCIBqwHkBALQE4gUA0BJscwgh5GDjzpc3zZ9QW/vypvkHG3dGPR0AgDuF5bw2LbyJLgcbd06orf1i/0qjfd+E2tqf1H0C/QJAfQrLeW1aeFN6cMhRVh06RPqbjx1evPsfc+qOvHLP4rd/PWVN1DMFALhQWM5rw59H0+I1obZ23WdHX9++4o33b6ta8YvxM6rvedKneAV1txRuvALAlcJaHjXzi430kFlS6YyRHkqlhybU1v5sR+s9q+tmPPrzp56ceOeT702aNt/3EAEqDsQLAAGF5bzWPP9vA0ZmwMhcOWb8+JnLBlJD42cu2/bhhl+/vuvnC448OGndXQ++fteDzyxf+py/ORCIFwBhUVjL4/W5P+tLZvqSg3Mq37lyzPjeZObKMePnVL7zxbEDpS+88psnFj1eunDZkmeYfe2PNNNPUztOBbpDP27Ne+wZ4gWAgHxzXuLXFbN/kejPJPozif5BU7auHDM+0T9o1lTN/oUgPlO8ZA7EoXiRxREAAIW1PJZW3NLTO2gWU7nmVL7T05s2a5ZW3CLuTvsj2jTJiBdhiRTECwBP5I/zkuHF8jFdibRZLOfVlRg0axaVjRF3l9EXOC8AwqGwlse8GWPbz6Tbz6RN2Wo/Y5gSZlbOmzFW3J3WF8LKlUy7M7q944B+5X0RBgAwKSznNedPt7fFjVPxtPnXxrZ4evzMZVeOGd/WY7TFjWf/dHvuhgYABEth/ateMfk/TnQZJ7qM1i7jRLdxoit1ojvV2mW0dqdau4yKKf8e9QQBALIUlvN6+qlfNXemzNLSmWrpTDV3Gtbp03/8Ve6GBgAES2E5r2l/uENcop4gAECWwnJeAIC8AeIFANCSvNo2IqcgAIWDls5rb90kR/nHsS3IKQhAQaGl89pbN8mekGswMzyYGUZOQQAKCi2d167a36fSGatkhoYzQ8OSOQWZTyPKPGd2SqkAAAK+SURBVLQYMl7HDeGmfNzrD5RCy4/jjg2TzbRcZjGdl3xOQcFD1FE9YJj9KLwHJMMZHYDw0dJ5ffju1N6BjKPI5xT0JF7hENSI/uJAvICOaPmp3bxuWmIgYy/fGHHzN0bcLJNTkHA0y7GR5HUUbDZ5uzZeDW90ZhfX0Xkzd90OS+40xXF48wEgdyjqvMSvdW8/baXlMospXubxgYO7xUP4c16uvXwfMEfkqZKnOOLGgtGZSE4Y+gXCQcvP2fq3Zlppucxiipd5vP6tmeLuIYsX7XQEwXk1vsWLNkQyfo0JM7hghgDkFEWdl5h33ph9+kzaXkzxMo/feWO2uLsn8QrQXvFqZJpl6bzEI/oTL5n5AJA7tPycvbnq2bZ4ui2etgTrGyNufmjil5VvrnpW0JdphXj2ROA17A1i5yNo6SO45OjiXuKLpYPzfnQyP0ZmXwACR0vn9Xr1861dRmuXYRous7yxbqtZ+Xr18yHMswARCxNkC4SMlh+46lfnN3cazZ3GG+u2Wspl1hzvMKpf9f9fxgIaGUsF2wXCR0vntfyVBX9vT/HK8lcWhDBPAEC0aPlPZWXli+IS9QQBADlHS+cFAAAQLwCAlmi5beSBZIQAFA5aOi8kIwQAaOm8kIwQAKCl88omGaGJ5B1JQd27hBugAAgcLRdVlskIPQHdAUBNtHReWSYj9ATECwA10XJlZp+MUPyMsaOe2ZF+LtrfcLzRAQBiFHVeOU1GSHwlnOEdyIiOQ7x470K/AJBHy9WSZTJC4le8mF5MZsJMTycYHQDginLOS4YskxGS7JyXo5dX5yUzKADAFS1XSzbJCAk/Px853xPRVovZ0tGANyI9OjMsAEASLZ2XdskIxcIE2QLAB1ouG12SEcpYKtguAPyhpfNCMkIAgJb/4CMZIQBAS+cFAAAQLwCAlmi5bQQAgP8HCIT8L6+Sh8sAAAAASUVORK5CYII=" alt="" />

  web.xml的配置如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <web-app version="2.5"
3 xmlns="http://java.sun.com/xml/ns/javaee"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
6 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
7 <welcome-file-list>
8 <welcome-file>index.jsp</welcome-file>
9 </welcome-file-list>
10
11 <!--
12 JNDI配置的资源引用:
13 • res-ref-name:表示引用资源的名称
14 • res-type:此资源对应的类型为javax.sql.DataSource
15 • res-auth:容器授权管理
16 -->
17 <!--Oracle数据库JNDI数据源引用 -->
18 <resource-ref>
19 <description>Oracle DB Connection</description>
20 <res-ref-name>oracleDataSource</res-ref-name>
21 <res-type>javax.sql.DataSource</res-type>
22 <res-auth>Container</res-auth>
23 </resource-ref>
24
25 <!--MySQL数据库JNDI数据源引用 -->
26 <resource-ref>
27 <description>MySQL DB Connection</description>
28 <res-ref-name>mysqlDataSource</res-ref-name>
29 <res-type>javax.sql.DataSource</res-type>
30 <res-auth>Container</res-auth>
31 </resource-ref>
32
33 <!--SQLServer数据库JNDI数据源引用 -->
34 <resource-ref>
35 <description>SQLServer DB Connection</description>
36 <res-ref-name>sqlserverDataSource</res-ref-name>
37 <res-type>javax.sql.DataSource</res-type>
38 <res-auth>Container</res-auth>
39 </resource-ref>
40
41 </web-app>

  2、映射JNDITest项目的虚拟目录

  在tomcat的\conf\Catalina\localhost下(没有目录就新建)创建一个xml文件,文件名必须和项目名相同,测试JNDI数据源的web项目的项目名称是:JNDITest,所以xml文件的命名就叫JNDITest.xml,如下图所示:

  aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVoAAABcCAIAAACgHeqIAAAP20lEQVR4nO2cW2wbVRrHB4RQJbTSSiuhldgVFC27CKlCCN7Yh33YR8TTSvuEhOChCNFCQVptoVrUzbZoUYHSRajpktJdFonSNG0TO+TmJk3qu5MmsRM7VztJY8exY+diz4wv47MPk7qTmTNnjj2OPfV8f/0VTc6c+c7x8fl+PnN8YdKbyfve2uvNhMRJaifUTdmWQbyu7mqCeBzXiDHpnJaY/pRatTTxVDouseyqeDWWBtxc2+O0uvdU2xuEcJVuexzX9jU+tWMex7V0OnbPe05ROyqx6ikGcFA3HNTGgIN64cAwlmXvfuIgNGkDg8Hg0KSNQSAQCIQQQohJp9bKTt3zx229YDDYbFbFQaM5BQKB6i3AAQgE2hXgAAQC7QpwAAKBdkWFA1/rS97zL7q/fsH51fPhcJhl2UZ1FwQC7Z+0ceBrfUl6wfAXz7lcLiACCNR8Yj4+8QEBB/dY0Coxsn36TN8nT//0jyetf/9118knrv/tl+FwmOO4KnvAwGcfGqP9G3njP6fG72FDpIED7/kXEfclyny+x3vVceLxM2fOLC4uykNLROrB/jwxmu0aU5QjVmkdZq/KhbXqtqxFZWTKyUDfhKy8ilA0kasIK4vzYM1D5uMTHyQ3VkVv3HMZB+6vX0CJUyh60n7ukMxDnz078M/f9Jx6ynLyV10nn+g6+UQ4HJZHp5h5BnyNalSXKh0utWrKOtjINXyYyuwi94cyTtV1qgtSqwEhj0bVceogDRw4v3oeRT6ynztEihE9iRD67thjZ86ckUenm4X7t0Co84U6I1eaDFUkT61mKrkVVC136oYDbBzAgQYO7OcOocC7vtaX9m4f7DFvfx2h1ktHDxw9elTt8VSaBmoLXbU6sprYf8mRq7uK0Lqyh2oNlQvVIquNleaoas5LtZFXexTYHqoVavaTPD6Uj4KmMzRx1EoqfZbVelhptzVnwn5IAwfDXzyHfIe9519EqBVxX2KdHvgzQq0X33n0yJEj8ujUt6nY2VOHA83OKK9S/qVvi75dQgpRRqOsr3/kNSPTnyWPvFo0zavUekL5r87RqHpC1pkFCCGmzAIsDoY+exb5DtvPHUKoFSVOYR3tehWh1m/efqRWOEC4F1JlNbU6hNaVDKbsjPSAjAPCo1Crhj3bWBwoS2qOA0Q3PpR1NNvFPu9V46CiHtKPIbk/dZAGDmyfPoN8hwfP/A6hVhT5COv5y39EqPXCWw8bZHVAE4e+M8rLKXFAnzbYs3pwoFbHCDioKA5lW9WlH/2/Op/l6iYt9ux+SwMHfZ88jXyHe049hVArCryLtf/Sywi1th5+SLZ3wEgkK8d3BcfyctZh48jK1S5Rq0Mal711ZBFkf9UiY0eA3Dq2fk3qYKspy8kdxo4q9mHKIqv1R3N8GHVhI2N7SOik8iEQOkMYH7UekvtDHgpsB/ZVGjgIh8Plzxp1nHj8yvFf/PCXn3//wc++O/bYpaMHLr7z6DdvP3LhrYdbDz/0yiuvtLS07Fcv645JEMiE0sABy7Iul6ulpeWIllpaWlwu1750EUdNEAhUczHJ5PJ9J3Yt/c4Cy7LhcHhaS/DVJhDoQRcTX1tQGr7gDAKZUEwkPH7fi7sGHIBAJhQz6ulXuuE/4QgGg+tv5qP/xsDmcWJ9DgxWM/Phf6Jg87jhEw5sZAMOzOWGTziwkQ04MJcbPuHABrTT3okQSgAOzOZKJwrDMJoVxDqaNcGGNeDApK50oig/hy8rl9Zs+LQGV2fAgUld0SyRZbgy4ZV0UGICbHwDDkxq+ilCfvGXZb4mOGRu/6FVzQ3PDRMacGBSU84P6ct+Qj29ZWcrWhQAC4xjwIFJXcVcIbAASw16KAALDGLAgUld6UQhbAoobxaqeIsBWGAEAw5Mavopgt0RVLuJ0HnX0PB8MLnv46BhX56iVqm0a6GEBAEJAioWUaFYKhRL+cKuc/lSLl/i8yUuV+JyJZYvsXwpy5eyXCnDCRlW2GGF7aywnRW2MsJWRtjcEdI7QnpbSG0LG1vCxlYxuVlMbBYT6eJ6uhhPFeOp4tpGMbZRjCWL0WRhNVG4myjcXS+sxAvL8cLyWmFprRCJFSKxQjiaX4zmF1fzC6v5+bv5ubv5uZX87Ep+Zjk/s5wPLeWDS7lgJDcdyU2Hc1PhXGAxF1jM+Rdykwu5yfncxHxuYo4fn+PHZ/k7s/zYDD82w4/O8KMh3hfifSHeG+S9Qd4zLZpzT3HuKc4lOsA5A5wzwNUWB4SPEpDvDqrDAbjhBhw0FQ6cfloiVDRLCDiQ/gs4eNANODAuDnxB3htkvVNZlz/jnsq4AhmXP+ueYsk4cNARoaJZotw4ILyhCB83eHANODAiDkZDvHcqe8ub7B1etg4sdvXNWwcWrAPzN/rmLLbwgGPN6c+4AmzdcAA2iQEHRsSBN7DTO7xyozc07AzPzCfuxraSqWw8kVmIbDi8Sx1dgeu984OeDac/qxMHiGHA9G54utbNgAOj4MA7tdM7vNTZEwzOrrNcXjYIglBajW31D821W4I2V8IxmXUGWDkOLkU1vbw4urw4ihhGPABr2lRjBTgwBA7uzLKDrlhnb2hmPiEIJbWh2NziBobnO7pDQ75Nx2TW6WcrxcH05PD05DBiGPEArGlTjdUuDg6+5jj4mkNtFopnCRVogigrUNYn4ECsoIkDsZqIA/HYaDhw+7e6+ud8E6uFoiAdAeb338vGZD2Zud49ZRlcHrmz7ZjMVooDr7PH6+xBDCMegDVtqrFixIRUZmYZAeVTshJsJkvLyTHVcKBsRWoCDqTVsDiQ2VA4GBlNWgdm44mMjAWiyyWlEhJKJd/43avdMzZPyj6RcYgLBGoccBzHcRxiGPHAriVurw4cOGCqv9KxanohhPbggJCfaqlOzl7scgB7rZIsSGt1gG1LuToonzLs6mB8lhtyrw3ZF3L5oowF0gMRB4WisLS6ebV7uscRHxnbtosLBB04wI68KI/HY7PZytOlnCGmkulwgE1gcm6rvfKrnaUhiFrNUmn3AIuD8t4BFgdiYYbds0Aw2t7B+Cx307Xm9C4rWSD7VyiVcgVhLZm50RuyDMeGfFv7jQOe56REMI9MujogJDA2OavDASVT1OqLUJDioFxOwMEuC+5tJRoZBzZnzOFdUo6DbO+gKJT4fDG+kenqm+m6FR30pm9PZPTgwGazEXBgk4iD1UGzqwIc1HB1QChRa1SGA7X1hdTYvYPyzcJBI+0djM9yN12xm7cXlPuIyjuFLF+4G9++0RvqHFq96UnVFgfByPKHfW1v/Pt296BfLOFZNhIOyxYI2E8rEsqVp7Al9ZRmuyZdHdCs2ylf2LERCKGUkWnynP5mQXpVeXUgvtFYLjcIDoZHE529wY1UVsYCtPdOgc8Xt9n8zGKyoztouRW76UmN1AIHU/7p9987gRB645uWlojtTTv76v+OIYTef+9EMLKMEMKuDqS5JE17tQPssfQvvWqFD5o45sIBfXrXBAfkErVohK1E8t6BdCtRZkOtDhwTmx3dwbHJqCCgUgm/d5ArCDtsPrHJjrgjP1qCluFYTVYHPMuKLEAIvfzmj4eudv6hw3no2G7J+++dUNs+kOW2LLE1caBWQqM64MCkqwPNXCW8dNPkfHU4UKKnahyIewflm4Xy0sBQOPBOZ3qGlq93ByIr6UJREC2USqILRYHLFbfZ/MY2H5iJX+ueau9ZsIzE9e8dWK1WJFkddHXP/Pbsn5688Prn/xoUWRBdXUV0q4Na4UC2hifcd6hNa9n9CDaIWutKAQ7wmUleHWjCgh4HsnI97ywoP4ZkQBxMzPGjoeztsXRHz2xXb3BhKcXmClm+wOYK4sEOm0/v8MlNLjC7bukPXe4MXrOt9DiS+t9ZsFqtPM8hhIoF+ceipbJarcrZg13568QB+XJCHGwFWRDljQmsDqSqDAeEs2Q60OMAG0q8UyifIn/uoGzpG40HJXsHog31zsLEHD82w7r92zfd8fafQte7p+8EYtFEJrXNp3b4jW0+kWaXolveidWu3ukfO4NX+yOWW7F+94b+zx1YrdZiIa9JBBEHmnsHNcGB8mW8uld1mn0KWB1IdR8HRpY5vrPAjQazjonNAVe8o3fucpffOhAacoTt3iW7d2nIEbb0z1zpnLpsnWnvi3TdivY4koO+tP5PJba3t/M8VyzkL5y/grX4FLS3tytnj86tRGwJ+RaAppq0AqwOKhICHBgEB+Nz/FiI9Uxlbo9vDrgTllsr1/oXr/bOt/fMX/lp11f7ItdsK5ahaI99/aY3NTK+I/vOwvFLUU3vPvF7cSASQWbpUyDiQMwQbMLL9g4IN/yauwCEC5XVZD2RnVL2CttDMlwAB8aSSXAwPsuPhlh3IGMf3xz0Jvud690jse6RmGU4ahmOWoZj1luxHnu835kc8qVHxncc/qzsC85V4KCtrU3EAXl10NbWVp40NCnUBILVgUFlHhzcmeV9QdYznXVMbI2MpQe9Gzd9KZs7aXMnbZ6UzbMx5EsNj27aJzMOP+b3Do5/G9X07hN/b4qfPXtWxIG4QChvIsgWCGfPnuXgU4nNLgQ4MBoOxmb40RDnnWbdU1mnP+OY3LGPb9vHt2+P79gnMg5/xjmZdQVY7K8hVYGD06dPl3Eg40KZDgih06dPN26WNkawOjCozIYD8ZeUfUHOG+S8Qc49xbqnWPEXU8sHtcLBh9TiYHXQ7EKAA8PioNIfVq8OB5XKCL9BAL93sE9CCDHTYQ7cBEYI1QEHJpR5xgpw0DyuFAdgejc2S+smwEHzuCIcgEBKAQ6ax4ADkE4BDprHgAOQTgEOmseAA5BOAQ6ax4ADkE4BDprHCKHj365qutFTDmRcAQ6ax4ADkE4BDprHgAOQTpFwcPA1B2Uhobwik4Moz4q/a6QnSKUtGtmAA5BOqeJAzAS1ZCv/xJj0WFpYhQktKuOTG5KewuZ/uZCmOZ2PC3AAelCkgQNy/mCPq0sbQgJjgyuTnGwyDvZ1yVNXHFxc1XSjpxzIuMLjgD4ha/JCqpntamlM7jn5UWgig6Y5QxlwANIpDA6wSaL5clpR5sjSUi2ZCTcjaugh3yYoO0/GCnntYDQDDkA6pbE60FwUqKUrtlxzBUFOPMKanwYHlCWAA5BpVSUOaHKvCqsxArs6INTXPKWGpyoQZhwDDkA6RcKB5s1CzdNG87Va856F5hRNi+Q4xjTgAKRTVFuJ2FUAoU7Vpl+6k3OVvpym5oNCBMABSKd04aBuNwuaB9LKyqUEIb7+RYRxDDgA6ZQqDgj31Uoo7PfNgizPsaRQy3/sLY9ai4TOw94BqOkF31loHgMOQDoFOGgeAw5AOgU4aB4DDkA6BThoHgMOQDoFOGgeI4T+enFV042eciDjCnDQPAYcgHQKcNA8BhyAdApw0DwGHIB0CiH0fxShir9NlriQAAAAAElFTkSuQmCC" alt="" />

  编辑JNDITest.xml,配置如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3 jndi配置方法(tomcat):
4 将此文件放置在tomcat\conf\Catalina\localhost下(没有目录就新建)
5 -->
6 <!--映射JNDITest项目的虚拟目录-->
7 <Context docBase="D:/MyEclipse8.5/workspace/JNDITest/WebRoot" debug="0" reloadable="false">
8 <!--引用Oracle数据库的JNDI数据源-->
9 <ResourceLink name="oracleDataSource" global="jdbc/oracle" type="javax.sql.DataSource"/>
10 <!--引用mysql数据库的JNDI数据源-->
11 <ResourceLink name="mysqlDataSource" global="jdbc/mysql" type="javax.sql.DataSource"/>
12 <!--引用sqlserver数据库的JNDI数据源-->
13 <ResourceLink name="sqlserverDataSource" global="jdbc/sqlserver" type="javax.sql.DataSource"/>
14 </Context>

  3、测试从JNDI数据源获取数据库连接

  配置完数据源连接池之后,就可以按照以下的步骤进行访问:

    • 初始化名称查找上下文
    • 通过JNDI名称找到DataSource
    • 通过DataSource取得一个连接
    • 操作数据库
    • 关闭数据库,关闭的时候是将连接放回到连接池之中

  jsp测试页面代码如下:

  1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%@ page import="java.sql.*,javax.sql.*,javax.naming.*" %>
3
4 <!DOCTYPE HTML>
5 <html>
6 <head>
7 <title>JNDI数据源测试</title>
8 </head>
9
10 <body>
11 <%
12 Connection connOracle = null;
13 try {
14 //1、初始化名称查找上下文
15 Context ctx = new InitialContext();
16 //InitialContext ctx = new InitialContext();亦可
17 //2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面跟的是DataSource名
18 /*
19 DataSource名在web.xml文件中的<res-ref-name>oracleDataSource</res-ref-name>进行了配置
20 <!--Oracle数据库JNDI数据源引用 -->
21 <resource-ref>
22 <description>Oracle DB Connection</description>
23 <res-ref-name>oracleDataSource</res-ref-name>
24 <res-type>javax.sql.DataSource</res-type>
25 <res-auth>Container</res-auth>
26 </resource-ref>
27 */
28 DataSource ds = (DataSource)ctx.lookup("java:comp/env/oracleDataSource");
29 //3、通过DataSource取得一个连接
30 connOracle = ds.getConnection();
31 out.println("Oracle Connection pool connected !!");
32 //4、操作数据库
33 } catch (NamingException e) {
34 System.out.println(e.getMessage());
35 } catch (SQLException e) {
36 e.printStackTrace();
37 } finally {
38 //5、关闭数据库,关闭的时候是将连接放回到连接池之中
39 connOracle.close();
40 }
41 %>
42 <hr/>
43 <%
44 Connection connMySQL = null;
45 try {
46 //1、初始化名称查找上下文
47 Context ctx = new InitialContext();
48 //InitialContext ctx = new InitialContext();亦可
49 //2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面跟的是DataSource名
50 /*
51 DataSource名在web.xml文件中的<res-ref-name>mysqlDataSource</res-ref-name>进行了配置
52 <!--MySQL数据库JNDI数据源引用 -->
53 <resource-ref>
54 <description>MySQL DB Connection</description>
55 <res-ref-name>mysqlDataSource</res-ref-name>
56 <res-type>javax.sql.DataSource</res-type>
57 <res-auth>Container</res-auth>
58 </resource-ref>
59 */
60 DataSource ds = (DataSource)ctx.lookup("java:comp/env/mysqlDataSource");
61 //3、通过DataSource取得一个连接
62 connMySQL = ds.getConnection();
63 out.println("MySQL Connection pool connected !!");
64 //4、操作数据库
65 } catch (NamingException e) {
66 System.out.println(e.getMessage());
67 } catch (SQLException e) {
68 e.printStackTrace();
69 } finally {
70 //5、关闭数据库,关闭的时候是将连接放回到连接池之中
71 connMySQL.close();
72 }
73 %>
74 <hr/>
75 <%
76 Connection connSQLServer = null;
77 try {
78 //1、初始化名称查找上下文
79 Context ctx = new InitialContext();
80 //InitialContext ctx = new InitialContext();亦可
81 //2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面的是DataSource名
82 /*
83 DataSource名在web.xml文件中的<res-ref-name>sqlserverDataSource</res-ref-name>进行了配置
84 <!--SQLServer数据库JNDI数据源引用 -->
85 <resource-ref>
86 <description>SQLServer DB Connection</description>
87 <res-ref-name>sqlserverDataSource</res-ref-name>
88 <res-type>javax.sql.DataSource</res-type>
89 <res-auth>Container</res-auth>
90 </resource-ref>
91 */
92 DataSource ds = (DataSource)ctx.lookup("java:comp/env/sqlserverDataSource");
93 //3、通过DataSource取得一个连接
94 connSQLServer = ds.getConnection();
95 out.println("SQLServer Connection pool connected !!");
96 //4、操作数据库
97 } catch (NamingException e) {
98 System.out.println(e.getMessage());
99 } catch (SQLException e) {
100 e.printStackTrace();
101 } finally {
102 //5、关闭数据库,关闭的时候是将连接放回到连接池之中
103 connSQLServer.close();
104 }
105 %>
106 </body>
107 </html>

  运行结果如下:

  aaarticlea/png;base64,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" alt="" />

  除了可以在Jsp页面中编写java代码测试JNDI数据源连接之外,还有一种比较简单的方式就是使用JSTL标签库提供的sql标签进行测试,测试代码如下:

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%--引入JSTL标签库 --%>
3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
4 <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
5 <!DOCTYPE HTML>
6 <html>
7 <head>
8 <title>JNDI数据源连接测试</title>
9 </head>
10
11 <body>
12 <h3>Oracle JNDI数据源测试</h3>
13 <%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource属性指明使用的数据源--%>
14 <sql:query var="rs" dataSource="oracleDataSource">
15 <%--Oracle JNDI数据源测试 SQL--%>
16 SELECT * FROM LEAD_OAMS_DBSOURCES
17 </sql:query>
18 <%--使用c:forEach标签遍历查询结果集rs中的每一行--%>
19 <c:forEach var="row" items="${rs.rows}">
20 <%--${row.字段名}获取字段的值--%>
21 ${row.RESOURCEID}---${row.DBSOURCE_NAME}---${row.DBSOURCE_TYPE}<br/>
22 </c:forEach>
23 <hr/>
24 <h3>MySQL JNDI数据源测试</h3>
25 <%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource属性指明使用的数据源--%>
26 <sql:query var="rs" dataSource="mysqlDataSource">
27 <%--MySQL JNDI数据源测试 SQL--%>
28 select * from ld_user
29 </sql:query>
30 <%--使用c:forEach标签遍历查询结果集rs中的每一行--%>
31 <c:forEach var="row" items="${rs.rows}">
32 <%--${row.字段名}获取字段的值--%>
33 ${row.id}---${row.username}---${row.password}<br/>
34 </c:forEach>
35 <hr/>
36 <h3>SQLServer JNDI数据源测试</h3>
37 <%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource属性指明使用的数据源--%>
38 <sql:query var="rs" dataSource="sqlserverDataSource">
39 <%--SQLServer JNDI数据源测试 SQL--%>
40 select * from t_demo
41 </sql:query>
42 <%--使用c:forEach标签遍历查询结果集rs中的每一行--%>
43 <c:forEach var="row" items="${rs.rows}">
44 <%--${row.字段名}获取字段的值--%>
45 ${row.id}---${row.time}<br/>
46 </c:forEach>
47 </body>
48 </html>

  运行结果如下:

  aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA1UAAAIFCAIAAAC1ZEDSAAAgAElEQVR4nOydd3gU1fr4T0Dxq/d3i3ItqFev3YvlCmJFFAVBRJCq9Kb0Jk26iIAKSEeagIB0CC2QEEiAhJBOGiSkZ5PdzfadviVbzu+P2ZmdurspCHrPeT5PmDnzzjtl24dzZs6A746YhIDuV6M+yYv6JA90vQG63gAfFwfopQF9q8EgHRhmYP9GjTSDYSYwyACGmMAwExjCMcCCQCBk2BEIhJSBRgQCIUL6wyH+KenNoge9LaC7AfTWg9560N0AeltAdwvobgDdtaCLDnTRge5a0N0AuhtAdwvoYgbvFSw+ZBQCePNjta/FWPqu6b6W8+DD38GHv4NPLYPPrYJtfoJtNsK318G318EOP8MOP8P3NqvCBiAQCCEhPjIIxP8st/yDiUDchsg/Jqx98X/VaPOTlKeWwaeWwZbzYItJXvBeAWiTGvQ/9p+oT/KaDTW1GEs3m0TcNdPfch7kFfCJ5fCJ5fC5VfCFtUHabAwgrEQgEAgEAoFANJjnVgUQzrIaxzbJsVbG89Qy0SxrbjyszrWcB++a6rtrqg8MoED7QEMg+Ha/EbyfCXrVgL6lUaMtUaMtYKyNpdkkovkUpvnUurtm+sEMX/PpsPl0yE7fNdPPV7ITbGWLaf67pgciEQgEAoEIQdQkPwKBEMJ+Lli/YuWKJWpCXbPR7ubj6OajiagRDBhOgkEMGE6CwWTUCCZQM8IeYIgVjLCD4STobw50HA+xgiFW0E8LOl0DHcq/3WsA3+zUg/czQferYFBVkGEGMMrEumCzSQRL8ymMGs0mEc3H0UFGEwgEAoFAIBCIxvKFtfkX1uYjLVEjzc2GmpoNNYFBBjCgFgyoBf31AfppA/StBn2rQS8N6KWJ6lEOPi4HHxcH7+jodA28kQUeOvLNTj0AbZPAx+Wg+1XQtzSAQAF5CwwwngzCV461RY22iKwTgUBIMSEQCAQCEZ5BBims6sn0jjM8zvN4WOHrdA10ugbeKwAdsgO8kQXaJoG2SeD+XSAw9X5m1Cd5av7HI3G+qNEWMMoUuBF4mGCnWS1FIBAIBAKB+MNy5yD9mE0Wvc0D61nGbLLcOUjf2CQbLXd+pgX9tKBXzZ19NGPWGfTW+if5oerO9tngjSzQJhW0TQKt48CzR8H9uwB4er+S/+kU/Y93PoH2GcAwsaIOEDRIIhAIFr5xHoFA8LCNGQjE7cqYDaZyvW/GNteIn5z9lzp6fOP4aB7zwddM5znMuzOYd2cw7acx7acxr06iX51EvzKBfv5L+vGhWLuxmoIycswGU9Mk6VUDemnGrDPUVZdbVs4wzR9hmNa/dkIP/ZiPdCM/0H3RWTf8Xd3wd7VD2muHtK/57NWaz16t6fuKpsfz5R8+nte3HVZcMOaHKtAmNeB/T8aDp/eDvy0E4KEjoG0S6JDd7EOp/0WNNAc8j7fAkeYuSzL37p+beaRb5sGOC1d8++T4PGmb3y3/QkEgEAjEH4Jb/euOQIQGQvj1dtfa4+6Np9zLDrhmbXdN2ewat945Zq1z1Grn8J+cw1Y6B/7o+GyZo9d3jm4LmPdmMW0nkk8N0b4y5Ire6mmaJL00oJcGQmhd9TX221p8/0b7tmWWVbPMP0wxLx5nWjTGtGCUce5w49xhxlkDDdM/q53SSz+um27Ee5r+bfO6PBXb/RW9uS7Q/vdiuoL/ga43RI1/w0xRI81RI813TLjxwIK8x3/VvXJU+1P8dMPlLts29+kyoNt7PXuN/rLr4tVLpP53yxtaEIjbkFv+Q4tA3Ibc6l93BCI0EMLRa52bT7u3xdUtP+yet8s1fZtr8s+ucetdo9c4R612jlzlHLrCOfAHR58ljk++cXSazbwxhXx+uPb+LvEQwqZJ0ksDumsghKZFo/FDm4mj2+w7llvXzbOsnG5eNtm0eJzxm9GmBaNM80caZw81zhxYO7WPfsInui86VQ98o+Dj5w+/ej+EELyRBd7IAi+mg3+nC/yvTSp4ryDwkI9+2uAjPQZrwNRrL56Cw3L8G4qTYfkseKPH9K86z/hu7EfTfmEv+Js9d9gt6flle7XVZuX1ip3iYVcPu6EQKzZgJ8MmUYwMvToCgUAgEIiGASEc8L1j+WH3qmj3ot9c07a6JmxwfbnaOWyFc+D3zn7fOXp/6+i+gPl4AdN5DvPeLObt6XS7SWTrkdqHPjov/O1uVJIeWtb/jDMH2Hcsx3avsv28yLJimnnJBNPCL41zhhlmDDRM7Vc7ubd+XHf9uI91X3TWjXhPO+RtzWftCj5pffT1hyCE4PUC8HpBwP+ePRrO/6YU/Pc0HJIFz11dDAs7XTz87LiRXWes+n5sAZxdBNvNiv3biJjX+kz6nf1PUePYiXseWqIYfM9DS/gJFnm8oiCGlUW17UaSM2yk4iZCr3vLPyoIBAKBQPxpgBD2+c4x91fXgt2uaVtdY9e5Rqx0Dlzm7LvY0WO+o8ts5v0ZzNtT6Ten0O0m0W0n0W0m0q+MJ14cpfvXJwnC33FhkrC+IU3C+Z9hah/rurnWDQssK6Y5s5MhhIbpAw2T++rH9dB92UU3/H3t4Le1A9+EEFLno2v6t6nq+8q1ni9Gv/0vqOx/DyeAN7JA+wLwcTnoWw3661n/u2Ns0Z2H/D3T4fXyr3wFb+3e+O+P2z3VYeDC53foO8b4B1/1D0r2vzntOBh8WeJ/ih4T9mhDa43ch/gicTv5KyeJkdQLgyWphNPC5JEchWK9PK3irvIxknWF+6lmrmom2uD3vdoBCgMalvN3++iq7fwfl9AvSoNT3fLjQvwv0huBuK2BEPb4xjFls+urra4JG1yjfnIN/t7Z71tnj/mOrrMdHaczb09l2k2mX5lIvzSefnE889J45uXx5Itf6APqppRE7beVL9IknP/VTuhh+WGKZcVX5iUT+GD9uB66L7vqhnfUDn675rN2fH1Nn5eq+rx8rYeS/wX6fx9OAK8XgI7l4ONy0E8L+uvBQCMYYmo2Jf0/51yVmgWe7NcvbW85rP1f7h94oflIy5ODdz+4yfXfA/7Ps7wdfiFbtFsgeGhxQAHl8gQEvzRqmiX/EVJrtwtbQGTGKdwxdoshEkp2TFEQhcereJjCGuEWw+5w5E2VTfvtrLgnIWQ08pxNq6ohUHw3ht2932ffGrxd+Vurweez8RkQCATizwqEsMtcZtx614QNrtFrXMOWOz9f4uz1jePjuY5Os5gO05jXp9D/nci8MJ55fizz3Bim9TjmxfFk61G6Rz9JhAK1ECYJ/SMOIZQm4fxPP7qLafE485IJpm9GG2cP4+N1IzvphnbQDnidr6np+VxNr9aa3i9e69E6+q1HIYTgzWLwegH4T564/Y/3v9560F8PBhrB55onvjpx9spCT05nQ/Rf/tPuv3d36NfirSl3dpzV/J2pfx9Z/revYd8T3g4bieYvTGg+1AqGmCQKGMJaJL838mnJqYey1i95KijTSiD+YVOMCS1h8h9X4VL5rOL7JnSJMAzKfpuFrik5opvdBNj4/E2V5yZt8fffvcbvZCNf91t1yAgEAnGbAyHsMpcZ8ZNz1CrXiJXOwT84+33n7LnA0XWO4/2ZzNvTmHZT6JcmMs+PZ54eyzw5hnlmLPOfceR/vtA90l3qf3wSCGGIJBBCaZLuQf8zzhthXDDKOG+EceZgw5R+/E+zdsjb/HRNj6druj9Z0+MZTa//XP/kP8feegSy/vdasYr/9aoBA2rZxr/7RhWs2znTd6O/J+H+1z76ELzyBdjsANvdYJcX7HaBTVawvvbhg0TzNY7m/xnTfKgVDLGCAZZgQ2B/s+AXxcyiYhJmtWnhWnyNPIkwJpKNyldnCd2+yOcM2wbJJxRuXbGNkPvNjihtJAHCTTcVahtSPOQIz4Zkh+XxaseouDTyowj9LqrX/oc+5PrmCR0f+ohC54lkfxQ/dw14iesbj0AgELc/EMJ3ptMDf3AMXeEcutw58Htn38WOnt84us5j3p/DvD2TaTedeXEq89wk5qkJjn+Pdzw5jnlmPPnMqNpW3S8Iv5yFSSCEIZJACKVJemhBDy2EUDv0HePMgcbZQ41fDzVMH1g7ta9+Yk/Jd6yu93O6T5/SfvJvbY8nqz99pvDjZ46/0Qry/sc2AbaOA39bCMC/08GbxaCLDvTWg/5m9iHBA38+fjllhufys2uWvgmeHAL6/AIG/AI+iQa994Lee0HP7eCDNeD9H0GH76JeGN98qDWogBzBXxRxjbCwS9Wm1fLIG734aUmwcEPyiaCBqe+ePKdwl1Sb32RbFx6d8CyFODmK5yp0n7Ji5rBbqe8q/IZCnBwoVBPZSROuJa+P8OVQ3Hroo4hkPxVaiFX2XzGV5LUW5ee+BaR5+puB4D8Akv8YhPhKkr4o4vzCbCG2K1lLXiOPVzje+scjEAjEHwII4RtT6N6LHZ8vcw783vn5MmefxY4e3zi6zne8P9fRfjbTbibz4nTHs1MdT052PDbR8fgExxMTqCdG1T7QTeR/wiQQwhBJIITSJL0t7EWE2oFvGCb3Nk7/3DhjoGHa57VT+tRO6KEf25X/mtV//qK+77P6Xk/qezym7/F4Tc8niro9cfy1ByCEoEM5eLsk0AT47FHQcqXY/wZYwBDr38dpV8RsZtLepM78o/nb00DPNWDcwbuGlbcYS/M0H000HxEEDCbBYBIMsPMEf1HENdIfLXGk2lp8jTyJPKcwFV8pn1Dc2xBpQ++SYsKwJfJgxc2p7WEIlNsg1ePrdSqENZJT3bDpEGeAPXth97+++xn5CyqPj/w8hM4TyevIB6sdmmSX1M5z2PMT4g0fyadbLR6BQCD+EEAI206kuy9k+i1xfLbU2X+Js893jh7fOj5a6PhggeOdeY52cxwvfe14dobziWnOR6c6Hp3seHQC/ejI2vs+uggFv/LCJBDCEEkghNIkvS2gtwVCWNOvrX58d8NX/QzTPjN+1d8wtU/tpB6S715D/2cNfZ6o7flobY9HtZ88WtTl0ROv3gchBO1rQHsNeK0YPFUEWseBlisBeLwAdCgHXXSgf8D/Xp5X8Nv51TDu6VHT+4H3vgcz48HaG1EDd7QYUtxiDNF8YMKd38NXzsJ7dsBmB+Bj701rPtIRNYIBgxgwiAmI4GAy+BsgqxH9QogjQ6zF1yjKnOg3Rj1SUoSbkOcRTst3KUSRb11tVyVnQ3EVyRlQPF3C7TY5kt0I/eoo7l6DpxXPgPDc1usQItlPxWBhpcibI4hXm44wTyRHpPb+jPB4b8n5QSACDKAQiNsZCOELY+jOc5ieixx9vnP0XeLo/Z2jx2LnR4scnRY5OnzjeG2B46V5zmdnO5+Y6XxkmvOhKc6HJtAPDDf8veslCKFiEghhiCQQQmmS/gTojUMIqz99QfdF59qJPQ1T+xim9q2d0pv/wjeM7sBO+BnC2O8JY69HDD0e0n380I0PHjjV5u8QQvC+EXSsBu014OVy0DoO3L8egMcLQHsN6KID/c1giBUMJ99dlp57aXTttlf/0msH6PEzWJYLtlSCYw6wCwMbSifmwneSINhNPhgNwbuL7x6ubT7SwRI1guHhv/TlNcLfJ3k9+8sRIo+wno/nZ9XCFOP5tPJ9kxTFQ1PUROH+K24lxDHKt6i2q2xA2F1tEiRnL8JXuZHT8u0KY4QBkR9CJPup9paTx4d+iyrmB4MUpgP/cRIvCotaHr4+RHL5hkLXSJYq7mdTHRcCgUDcVkAInxlFdZhBfzSf6fmtAyqVlxY4n53r+vdsZ6sZzgemOluOp/8x1HhP54vCb2ZJkp6LHd2/dXRd5PhgkeOdRY7XFzn5JBBCaZL+BOhPQAg13Z/RDuugH/tR7aSetZN78TtgGPeBYfQ7xlHB+39NvVoZP3lA17Vl8Xv/OPnSPZD1v/eNoH2NwP+eKgLtNaCLGfS2gOEkGE52Xp5mj31t2vD2907CwTsLwJzLYKfuXxfh/OvwqwL438vwzuOwdRwEH31/35D05uPqmo12NxvtjvrSHfWlO/DVP8Id/NIf4eZn5UslJzHQbCBbhV9RuEjeQiYJEyYRilTo3ZPHC9PK90eSSr51yRbVDkd4BkLkl+/nPbJ2RPmeNAbJ5kK8OmqzoV9Q+eFEvl1hfNidj3A/FWvU9jPsEYU+D5L9V9xuJAcFQzRyhzxvavH1Ot6GxSMQCMTtD4TwsaHU61PoD75mus1XbnZ5aaHzmXmux2a7Hpzhuney869j6L8MNLR4/5LwG1iS5ONvnB994/hwkeP9bx3tFzleW+Tkk0AIpUkGUKA/DSGs+vCxmgGv60Z9oB/bjd967bgPDWPfN3zZ3jjqNfOwl/h608f31nb+6432fzn5QgsIIeiKgS7mgAK2TRL4X3cDGGABw8moEcxbi3PIY22HDejSfKLnnqE5zT5YCKafAXus/4yFf4mB4OdKMCE6qsfKu0ZXN58Cm03wN5vgj5pQFzWhDoz2yX8DWC+M+tItah7jZiX1wnj5ontkvaW8cUpmhTIKxVIl2UPFSGkjJbcnobPxRZIzxD4rbl147PJdDXHG5JFNheLm5K+O2qssOSh5tkjeAGEPP5Kdj3A/FWvqtT+Rnwe1va3vQSl+mhQ/JpG8jg07/03yeiH+pwAjvAjE7QyE8KGB1Mvj6Len0R/MVva/1gtcT89z/Wu26/4Zrr9Nct39BX3nZ4Zm712EEEaeRFikSYa4wUAXhLCy40PVvV/WDnlbN+oDJukMhLB2dKfa0e/XftnBMOpN44i2piGtzQOfhhA6z+42ffQ3fce7b7x+54nnmkHW/7pi4H0jeNMMXkzn+39rQHcLGGBn/e+Br0yFBzotmTb8rTFbRnwXs+fnhXMmvvXe0CnNBx1tNuDAHYPiWow3tJjmZ2k+BTafAqMm+aMm+VkXFH7XszVNizx5iFlJsPynLmxayVGEzlbfzYXeVthFasE347Qj/rgIv1Zu+c4gEELAaB8CcTsDIfznZ9Qzo+g2E+m3ptEdZjIdZjraz2Le+pp5YzbTdo7jxTnOZ2Y7H//a2Wq6894prr+Mc945gm7WtzaqwwUIYdMkGeEFQ9wQwop3/qnp/kx1vzbawW/phnXQDe+gG9ZeP+wt/bA3aoe2NQx+0fj5M6Z+j5t6tTJ9fK+x8190He4serXZ8WejIITgEyrQBPimGbRJBfevB+DhXN7/okYwzUc6mo12d1mefOmnDlfWdtr0zXvzFg17emr2XdN9d830Cwn433QYYEqQW/6dgkAghNzs/5UhEAjEnxII4d962R4djD3/Bf7fcfirE4l2k4g2k8g2k8mXp5KtvyKf+Yp6fCrVajLdcgL91zH0XSOoZoNw0KMGvB3P/5e7kUn4RsTiN/5W1unRik+er+zz36r+r2o+b6fp30bzWZvqz16u6d9a1/cZXa/H9Z+00n/UUt/pr7p379K82Sz/v+DwUyDgf6wCvmnm+n/F/scqYPNxdc3H1bWY5L1rqu+uqb67pvvk/hdaAREIhJBb/i2GQCAQiPqit/ueH1bV8tOqR/pXPTGo5pkh1c8O1Tw9pPqpYTVPDKt5bFjNI8P1DwzTtxxa+7fB+rsH1N7RrzaqZw348NrjPc/y/tfIJGC0D4zw6m2+q92ez36zZfa7j+R2fiK36zO5XZ/N7fJ0Xten8rs8UfDhY4UfPlL4wQNFHVsWdvhb0Vt3F752R/4rUcmtwZF3HocQgt60yP9arhT5HxhM8k2AzUa7m4+razHBLbXA6T6+81dR/m75q4VAIBAIBALReMbudOSVEs9/dvmv78Xe2znxvg/P//PD+Ps6x7f8MKFll8R/fHjhrx9euufDpP/rfLnF+5eav3cp6r3LoP2Fx3vG5xbbxu50ND7JmF8Y1v/GbGXsRXlnOj+//4W/Hn3l3iNt7jvU9p+HXrnvaNuW0W1bHmvzj5Ov/PXUy/ecfun/TrZucfL55qefizr2NDj6zuPm67ljNhBq/qfh/Y/9GxjYeaSj+Tg6YIEsk7wszSd65LDHybYdIhAIIbf8KhYEAoFA1Jc7x3jG/BL+jg1J0dt8Y35h7hzjaWySrdSdI51ghBsMcd85zDlmE1XvJFbvmA3EnZ+Souv/pP7XQwv6acGAWjCglh0IGoywg+Fk89FEgHG0gDr2nl8hYLSPu6ULgUBIuPU3siEQtx+3/IOJQNxmDHGDEV72nl8wiAEDKPC5AwxwggFO8LkD9KdBbzrwl53g6Y2DTzDQGw8s5S/4kyD1v/Ya0F0DOmSDTrlRnfOafZjX7MM88HExS1SPchbQSwN6aEGvmgB9q4PTLD20CAQCgUBERBcNAoEQ0V0Duqt8NDqVg47loGM56MDxbmlgtiMHW/NuKXi7BLxdAt4sDjz2981i8FoxaK9R8b9OuaBTblSn3KjOebwFKsIGRHXOi+LjBSsiEAgJ7IcLgUAIiUIgEDJu4oeOff5b4P7fVrl3tSt9YIL9//pXHD24FYFAIBAIBALx5wN8RID2peCJQ6DlTyL/q+91haigggoqqKCCCiqo/CGKqv9RtDMAI8GhgpNinCTjCEBzMA5SEEaKkecJ1NMcDBOAdlC0cEWGYhiSDkBJ4TOI6kkmAMXQLLLVaYqmSQ7BijTJBOsl2xXEc1A0RdEkD00JYZdSFE1SFBmco/jVA5Hc6nwAGx+ETyhGsC2SpMngLEVGRGCtwEbCxnNhRACSgyJIiqA4JPUC8AAkCx/J1VCKYAHIAASFE8IAEhOhVk/aOSSzAYiQBCOJAOEibSyEmGA9YSMIQT0RQFIfhLARhI0krCwEh2RWDVKMYJFFCMmhuJQgzBxcDW4hcGG9GDwcqpGmJgTHjSyEGpgIaTxmCMDV4LgBx6WzOG7AMQOOGQhcBFuJ80kwLhivZSEwETiHvEZSL4vXC8HFyOuls3YOTAHczhFcRYdjOn4tdlYBO48Wt2sFsw1DK6MGt9co1Wtxuxaz17DgNi1u0+K2GmXsPNViuPpgcDVuEwTYxIjrMQ5BvQa3abDgIg0LV68MHqQqgLUKt1bh4hWDS8VgPNYA7OpYkEoWSTxurcS5RZi1EudQnA1JRQhwDukii4TySLGWY1b12SBlmKUMs3JYeARLFSiVETpAvNRcKiUQVsJiNweQ1PPxdhZLAMxcgplL7BYObvXArKmQBfkf8j/kf8j/kP8h/0P+h/wP+d//jP9ZSpD/If9D/of8D/kf8j/kf8j/kP8h/0P+h/wP+R/yP+R/yP+Q/yH/Q/6H/C+0/wEAQvgfAIAUB98q/wMACP0PACD3PwAA639AXG6h/wEAFP0PqJdb4n8AANbnAAAh/I8N44PV/A8AcLv5HwBAonSKJ//39z/pDhBWyaxaDfI/5H/I/5D/If9D/teo9j8AAO9/AcMT+x/niGH8j18q8T8AQFP5n+JvtqL/8e1/av7HryjxPwBAY/wvhNgF9E7W/gcEjqjW/gcAULQ3hfqm9r8IjggnKTxsgMT/AACK/heIb4T/hdgTif9J2v+Auv9xwVL/AwA0SfsfAIAXOHaa5CSPUJ9Q8z8AgKL/casj/0P+h/wP+R/yv/9J/wv/ix7S/wDvebJ2REkevv0PANAY/wMAsP2/AABJ/y+7SLzz4dv/AAAkLbVJSqyAjW//49IGDE/S/6t45hX9DwDA/gWc7UmmG+x/AACh/ynsj1L7H98ECIRuV5/2P8DKH4WRJAYAkLT/sTVN0v4HQiqdvISQP1lkUAGbvP1PKH/19T8AAEFYuGwWfppt/wNiNUT+h/wP+R/yP+R//0P+J+v8dVCMEwjb9gTyR6r4IqmUJyCLtIOi2cpg/68wf738D3ANdYq7IVwa4fV/AAB+uwAAvlLY/wsAaKT/sRkA17YHhC1/gvY/IG78k/sf4HuEBaoHxM4nmm2c//EX8LE1bPtf6FZA3v/41QHnfwAoNP4BXv5U/E9BAW+O/0XS/sdWkoF4G/+XELcC3uz2v1DnX+B/QNDCBwT+J+z/BVIFRP6H/A/5H/I/5H9/Gv9Tur1DBO2kaCfvbQFdC/bbBpxP7IiiaUrQz8u7Had9gb98OyJXw3Dmx9ZzCshf2BfoJuZquI7awO8c124nvy8EcL3Dapoo9EIgaerj/go7ggHnhcLrAkkxMl0LCqLaTzVFBVwwdOHULdBMyKUNuiAAQOB54t5hmgggtT3JfRu8OBLClj8+IDBNyhfxfiZu3uOFL6B9fAZcAhD5X6DjOJz/BSDIABIRDFTKwrg8CtcFKp556X0hnCYG6gk7AIC/TYRv9gOcDgaET9IcSNgCt2vI6hV2QHK1H2klSJERkgoNgUGZY2fFvb3KMYLeYTOLqv/hXE1ovZPXK89yDkfIapQ9L4DA7RREMLwFhogRGKGSVoqET6p9PAJZxDEDLjM8RdQEMTgbsDc+kle3WtwuTMUJnF2P2wXaJ/G/YI2OsOuC/sepmCyME8GGm5wWt2sJu5aIpN7GoayDMqTBamG8zEkEUSx84fxPon0CmZNoH2+KIs/DrBxsvZVDaoq8qGnEcIYXWMoLHydktkrMVsnXKwQIDE/uc7itErcp6B1nhBUS1DwvMMsbXqBebmzs0kA9bgkg0rsQwhfQO7kmSrQvIuwcEXhhKWYJilpA1+QB5lK7gg4GzI8XO4EIigjoIG+NPOzqpkLsZvufgu1F7H8BiWki/+M7eeU9tgEvEV8XyN8dwgJk7YJA7H+BtZrI/wQJRe15AABW1ARNfSQAgKJJ6e3AwXtylf2Pq2li/5N17IpuB+brg6dd0rzXIP/j42+J/0luEwG/u/8Fmw8FDX78LCt/jfG/oEci/0P+h/wP+R/yP+R/vP8Jr9sT9LqGuqRPoFm/X/sfJWsFpAR/+Xi2hvc/odvdDu1/FFs4/1OMuSX+F9i0iv8F94274C8wK/A/tTdJcN3b0v/k5Za3/4l3Juh/wTOJ2v+Q/yH/Q/6H/A/53+/gfw1o/wsOB9N0/b+h2/94/wMS84ug/YpqhAEAACAASURBVE+ud03if4rtf7z/AQDk7X8gnP9R/J0fTed/QCJ8kuFdAhfzSdv/+KY+2f0foibASNr/grqD2v84YwtMN7r9D/kf8j/kf8j/kP8h/1P2PwX5u838T3CjRvCvpP0vKHyC9j++/xeEu/5PLnyN9z954f2Ps0NSHhOJ/4nvDm6U//H1vK5JdVDmf/zFfwLPk/b/kiRer/5fvgnw9/E/xVdH9Crcfv4nKWpDvQDkf8j/kP8h/0P+h/wvkuv/gKCTt8H+xw8KE3Qdsf9xNY1q/+MMKUz/r/zHUrF5Tz5Wn0QQG+N/lPCxH8F6Uf9vhO1/knog8z8AAEVRTeJ/QN4KqNL+Bzj5AwL/A8J+3uBoglL/4xWQzyNJBSTyd3Pa/4RNgCHa/4Q3EQf1S+B/QHAvcFNd/8dtJSh//E2+QCB/iuO5AADI4PgvwduHFeUP+R/yP+R/yP+Q//0Z/O/uyPxPYmm8yUnqQX38Tzjyi6T9T7BW07T/CccFBErX/wlR9D9Jz68wQC2+vvd/qBWJ/0mKov9x3cckRQkeByKQvybxPyDs9hWPBS1eJPI8IL4iUOJ/wcwSBQyO/xyoCTf+c6T+F/b8C9v/FB8TIqyXKKDkMXH8cDCN9D+520nu/xAGCIeJ4eItigoofxwIUBj8D/kf8j/kf8j/kP/9Mf2vQzn41y65/wVUj6SdJD8WoGg4QEVBlIqdLIwTO+n4z8FxnqW6w0h1UNApzI0OGAyQ6KB4nBfV8QJFz/8Nyp/qc4GlN/8K5EyQR/w4OIriMgTHBRQjHi8w6HlckbcUKqPyPA+FvRWO8MeF8eIlHf9PGsDVs0Vqh2pP+1VHOtqz0lJSerOwTM6kA/5xtsdpIodsIEBlFNvzQowXKBwOkCTC9BrzGseP8xcwPEJKIIx/UkhwxD7R6vV/zi+71CJHaW85I+R9Tmh7uNQLlQb2E48XGHb8P8JEEKYIx/8TeJ4EZe1T0zjVcQElwwFySIb0Cw7yJxnYTxavOCKgQNT4DNKx/RowLqBgeD/l1cOO/ycZOFAyfKDECxUISCeniRzS4QCDAwQqi2AYgv4n0DubUOwk8ZJx/uQD+ykFRKiDQY3jzE8VVuCk8eoD/oUaFzDof5LRAeUj/0nG/2OXiocDxGXDAQZmbQFfDO+FYtTH/As9LmC5FEs5ZinHLRUsAoGTjBco0Tt+dbGocQP+2a3ldvnS+iPRQW5WPv6fSAcFwifyPAGiMOnS4DCBIiQiaDcVsn9vO/9TvI7wtvU/tfGib0//Cww3Lcj3R/c/pdtHbl//I0l7UPgks7ef/5Gydj7kf8j/kP8h/0P+h/wP+R/yP+R/yP+Q/yH/Q/6H/A/5H/I/5H/I/5D/If9D/of8D/kf8j/kf39g/4vs+b8S/5M8/5ekpZ5HilH1wqD/ibywYc//FT7nLeCFnOHJVo/o+b+S7Sp4YeDxvo16/i+/evBGYKXn/4pMUen5v6peqEZ9nv9LBiVSrH0kL5EBJPUCJALHR8oMT0Tw+b8BUROP/yy7/6OBz/9Ve/iv1AvFN3aoR3I3cIiR3thR/+f/SsRO0fPq44WSOzx4I1RYKtA1lfs/JKhpX4gbQSLwv/qCnv+Lnv+Lnv+Lnv8rQ6SDAlETLFVAfg9H6ADx0t//+b+mwlD+d/TgVgQCgUAgEAjEnw9V/4OooIIKKqigggoqqPwZSwT9vwpdwJF0Byt3EEu7iSWdxXSoDmLpWiH7kVV7nGmlzuVgF7Og/5eRdjdLOp3DXUoouZZRNSw4WqG4b5rvnlbZlvI1iOLLEAWd19IubFFHtvxAxAmVL2cU9XEr9XQr9nrzHd884v5ryXEJr2sUbUvU5U2pI9kNdUiFrnNS2oceeTd6ZJ3spPRkNDChOIPShZhKne+UYgd9+As3FZ7aJ+u+lz24RbkfX71nX9y/z3fx85AhuvsVu/7DRipc34mRJCboJA3T3xpJZ2uIvtcQYdIOWeFVd0o9s4p9tcK/Sl23gj5cpS5dfprv4eXqVTp5Q4D6f1H/L+r/vW37f5H/If9D/of8D/kf8j/kf8j/kP8h/1MAI8iy8oq09IyU1NSU1NS09Iyy8gqMIBvpf3aCLC2vSBWntRMk8j/kf8j/kP8h/0P+h/wP+R/yv1vmf1dz8o4cjd6wceOq1atXrFi5cuVPLGvWrl2/YcNve/eejo3NyMyq1FRH4n84SZdVVKakpsWcObNrz56169evWrPmp1Wr+bSrVq9ev3Hj4aPR2Tm5yP+Q/yH/Q/6H/A/5H/I/5H/I/35X/7tedGPvvv2bt2zd+POmdevXL1+1ddbiLSOn7xkyfe/IGbunzl+3+Pv1m7ds2bJ169Ztv2z7ZfuOnb8eOnIk/nzChYtJmVlXM7Ou5l+7npGVnZaZGRcfH3PmzP4DB7fv2Lntl+1bt/2yZdu2TVu2bNi46ect244cPXH02Omj0Se279j1y/Yda9ev3/Dzz5u3bP1t375rRTeQ/yH/Q/6H/A/5H/I/5H/I/5D/3XT/I2nHxUvJu/f89uuu3fsOHp3548m5a5K2HCrYH1Oy98SNX48W7j1xY/+p4m2Hr81fmzxvRUzMmbPHTpzY89ve3/bu27v/wL79B/btP7B33/69+/f/tm8fy959+3/bu++3vftPnDwVfy4h7vylGyUVDpdXcqOKy+0rLa+OP3/h8NGjO3ft2r3nt4tJyQTN3Az/W7QjHoFAIG4ekvH/ikuKEi8lHzt19tipuAAnw5N4Mbm4pFDuo8UlhYkXkyPJIM6WVFxyXa6bxcXXEy8mNSRb8fUQ/nfLXwIE4lYhNsKyG4XZCYkJ0SdiGkBG+uXQAQmJCUWFWY31P5J2JCReOHzk6MFDh9duix6zOHF/XOmh2LKdR4s277+2bk/eut156/bkbdpXsPNo0aEzZQfPlk9Ymrj78IWS0rL8a9cys6+mZWQmX05JSk65cCnpUvLl5JQrGVnZ2Tk5BdcLi0vKLl5KKSgs54XP54NOl8fl9jhdHo/Hz9dfKyo/eerMgUOHDx05cj7xAquATe5/v9Pt16iggsr/Xlkk9r/8/PzklAyT2eRyMU4nFcARBpeTNpmMSZfT8vLzhP6Xn5+XnJJuMhldTjpsEnm2/Pxcof/l5+U2Jltefm4I/7vVrwMqqNyCIvG/3JyMpMspRqPO6cAdDFYv3C4y+kSM20WqBTgduNGou5R8OScnLbz//V+bEjX/S0vPjDl95mz8udnfRy/amXPsQuWmQ9dW7sxZtiVr8abMbzZmfLMxY+HG9MWbMpf9kr1qV+6Ww9dOJGmW7spduCqmtKy8tKyCp6SsXEJc/HmTzQEhdNX5KdpFkA4bRllspMVGmiyEFaMwwkE73K46P4TQgjvj4s/HxcefjIlJS89A/ocKKqjc2lJr9+ZrfJnF7pRrzot5rsQc57ls+lw2fTbLEZfJnEl3xqQxx6/Q5bVuKPO/M3GJBInzF5gEoCOCILEzcYlC/zsTl0iQGEOTlLh/PyxctgSh/52JS2hkNuR/qKAiLBL/Ox17FicsNBV8OlTkMAwWfSKGYbAQMTRlxwnL6TNxDfe/G8Wl5xMSExIvzFt1fOnegv3nKn7ak/ft1qw569NnrEmdsiJl4orLE1emTFxxeerKlBlr0uZuSP9uW/aq3/IPnKtYfuDaonUxZRWVAiqEnDmbYCXrIIQkXWe20bVmQluL1eitFTXmihpLRY1Zo7PqjHitmbDhDsrhgRDitO90XML5xAvnEhIKbxTfJP8D9Sy38j2FCiqoNK6YydRzxSOWJt7/5XEw7BgYd+qhX66OqMEyIlk3X+OrNvtLa/3Xq735Gl9ehTenzJdT5sss8aUXe64UeZOveRNy6uIzKCjzv2MnzzoYhruUk6AZyul0ucQ4nS6n00UzlOQyTQdDHzsZJ/S/YyfjHAwtCXO7XX6fz+/zud0u6YWesmxC/1PMFiHcvoXxv9avaiLn3S7am/gOQAWVm18k/hd9Ioahcf5Z8GKsDoascztdbifDkPIAhsaiT8QwNKayOh+GR5+IqY//CRTKhuEpV66kXEnddeTChPUZu89VLPs1d+6mzK/Wpo1fkfLF90kjliUNW3pp1A/Jw5ZeGrks6csfL09ceWXauvQFm7N/2JW751zFV5uyDpxKrazUyLmSllmuw/wQYqS71kJq9FhFjaW40lhUXptXpMkuKM/MK82/UV1SZa7UWmtqcbPNgZFuP4SaWuJi8pWUK6kpV67Y7LhQ7FSFjxarIS2CYgJ3aQj9L/IXFfkfKqj8QYvbQ0Xn9VueCHal3f1j3B0z94MOK8En+8Bb20CbNWBVyiC3xxE6Q2axu7TWX6z15lcGtC+j2JtR7L1S6L1yzZt8zXshz5uQU3cum4YQLtoRH3zsL2Y4dvIsw9A4QeIEieOkw+GaGD9EEYfDRdIUjhM8DEMdOxknfODvsZNxDCOKIUjS7/OxGUps1ymaFi6VZ8Ptwcf+yrNFTmDf2DtFZDdtCP3PLyj7D5NdeurYaYL0YrhXuLT1q5qb/m5ABZWbWRbtiBfeCxJ9IoamMQyzSWAYyueHeWXM6VQsPhMvrHLU1blpmhTG0DSmtro8DDNzd5PUy/+KbhRnZWdn517rOu30rguapbvzvt6UMWlN2hc/Xh66LGnAd5e+/TXXRrgIum7hjquffXtx4JJLQ5cljV6eMnlN6pzNWd/vzttzsfqj6aeLy6qqNNVCyiurLqTm+SC0Em6tiajU2YorTYXltQUl+tyimrScGw6n2+PxFpdrMwrKCstryzSWSp2t1kJhpBtCeCE1r+DatcysrKIbxcj/UEEFlQYUt4c6kfeKFrsXwicgfATCe6AvymAAszaDV1aD534Cd04GI4+8GloBU6452Za/q2Ve1vzSCz3phZ4Led7zOT6WhJy6hOxA+5/E/2iaseOkHSftGMk4XBPjh/h8Xp/P6/f7/H6f1+vx+wMCxzhcBEnbMYKFpmm5/9F0MMCOEU6nO6b0yNgzA/w+n9PpFi6SwGaT+J8wm8vtZo/X5RblUawP7Fs9/Y9t51uz0U7TPnaapn1q/hf2CaeKL5ZafYNLwxLya0W4n4phoTctXBpJNlR+hyL3P4rCbXabEIqmrYRn5UHT5HVank0nLIzTR1JkMIzCFVeXZqPwBvofTpI5uXnXrhf+sOP8kkNFPx64NmtT1oQ1aSOXXx645FLfbxPnbr/qrvOxBxaTpu2xMLHXogv9Fl8cvDTpixWXJ65Nm7M168cD1388XrpiW3x1dY2QxEupVtqP0T6dmSrX2ooqTQVl+uxCTVah5nL2jeslgY+63++/VqpJybpxvaz2RqWpXGvTmUnc4SfcMOHi5WvXC3Ny83CC/N38b+G8WRcvJLDTBQX53yxcQNP0rfI/+ccYfbCF5fY/G7f/Hv65i94+AMKnIRwK4XwIv/T73/DU/T+PE/idIOEieHQOaDEdgMFg5qmhIZI00v8omrFipBUjrXaSYlxjzwzwej0SxsQOdDgcY84MpBgXTtJWO2G1E5SS/1F0YKnVTuAkXWTJH3my9/HiA06nm69XhFLyP2E2CKFlxQrLihUQQqcrkM3pcgvrJdka5n8Tp5smTjex0wePkhG2/4UQqfo6Yn2TNOBTzK6iZnXy5IrxYberqIDoO+cWFrn/kRRusdmE+Pzwm13mAct03+4xJ19jEnLor38xDVimW3HY6q5z82EkhSuuLoFssP9pdfobxcWVVdWdJp9aG1s5b0fOpHUZI1de+Xzppd6LL87Zns3LH4TwVLq26/yEbgsTey5K7Lf40qBlSV+svDJ5ffrc7TlbEqq7TIup0eq1uiDxF7Mcfqi3Oir1eFGlObdYl3NDm55feSWv4tyVglzB7cB+vz/3ellyZmF+ib5YY6nQYXqrow7Cc0nZVZrqGzeKtTr9TfU/mqZpmmand22YtX7ZxF2bl2xes2DXhllbfpqi6H8N+1KoVwkhf011VaI8z0292FH+ZdqwGr5eHiP/VlX7Kg8b3CTHK9+WWo1a5e9Z6rvdJj9jjd8lYTFTlyH8O4SDIUyAsBzCmDr3qHcX3v3unKg6CkAaJF8CT84FoDu4exogKdVrAS/mufIqvDkVvswSX3qRh+d8ju/cVW/8Vc+5q95zV71q/kdSjMlGmmykyUoStGvkyf5y/xtxst9IDoJ2mayEyUqQlIL/kRTNLjVZCcbhPlK4Z9CRbrGlx0naKaz3+nyMw83X8Nkk/ifMBiE0ff89C4TQ4XI7XG5JpSRbhP732wGiz6Ba3v9qtHWbf8HZ6Qj7f0O8DRS9p5HvxqZaPXKPlPtf6C8oybpN4qyoNL7I/Y8gcaPFxkOQVGK+4705+gk/W3w+iJM0SdEOt3/AcuN7c/QVhjorhnORuHx1OWxYQ/yvSqPRVFenZBZ2nHJ28aGiaVuujlmbMXh5Sr+lSbO2X3W4gwP11dodfb9P+mDuuc7zz3f7JvHTxZf6LU0asjxl7Nr06dtylkWXdJoWn5x2Taev1elrtTr99cIbKdklFspfY6LKtFhBuSnnhi4ltzw5q+RSZnFCetGhmIsmC8bn9/v9V6+VXkgtuF5hKtPaasw05oJXcsqLbpRoNNVVVZqb5H80TWdnZxcU5A8cOHDv3r0Qwtj931PZo6/HTTGnTTKnjLlweK5a+5/a/+0iCYukhE3VVKImydPgtKFXlH87N6xGbVYtOMREiC02wIRCV4bdnyb89YqwNH4rTX7GmrYwzkEQPgTh1xBWQOiDMNflmNpiGACDgEsHoAVAK6jKAtv3gBOHAcSGqeVJzHFeLfOyjX89Ri7LKA40+8Vf9cRf9fQYuYydUPM/gmSMFtJoIY1mkqBcA4/2ZJ1v4NFP5SI46OinBOUymgmjmSBIBf8jSNpoJmjG7fX6fF5fn70d++ztuC1zrc/r83l9NONmF/XZ29Hr9dGMm03FZ5P4H5uNhXG6IYSG775jYY9dOMs4pdki9D9W9Xp9rhfa3sVkxuP1fzXb/H43bQj/C2s2avbTGAdqzJtTqGtqaSP5n2eIrwW13UPOd8uL3P9wAjeYbDw04/zxKPH8BP2RKwxO0mwlxTjXnCTZSoyrxAmcX51xOCUbYhxOYVgD/c9oMm3bE//uhLMzfs0ftSrt028vdfr63Pi1aYzLE9ySyzPx58x+y5I+W5Y04PukQcuTh61I6TgzvvPsc30WX/piTfr8vYXvTzq7bfdZg8FYW2swGIyJiRez8itqrM5ijTXnhi4uKefgiYQTZ5NPnr18PC4pOjbp6JlLJ+MvkxTDb8Xv96dk5MdcyMgt1hXX2EykLyu/4sLFS0ajSeh/cZdzW7QeJOdscm4D/K+gIN9qtUIIaZouLy+/eCFh/bKJ5rRJFw7PTTgwrSJhytHdy6GK2TSh/zUs1e3vf5GYVn1r1GblwZIMEbYTNOw7tGn97/cpTbXFJjxjTVy8j0B4L4SD/P6Tde5Ul2MrgfX+yygABgOiArjKQF0h8JcDWAxgKYCmJ9XS8P7XY+QyFt7/+JoQ/ocTTK2ZrDWTtSYSI1199nXzej2993Uz22h2mqXP/m7sX4x01ZqIWhOBEwr+hxN0rYnwen0fbmsrh7VAftbr9VGMW5hN4n9sNh7G4YYQ6hYulAAhZBxuYWRg3+rjf+x0do6z9aua+d9ahD3CrAKq+V/omgg/14olhEg1TB+FPhdiK6G/lNTq5d8YikLZGPFFpZFF7n8YjuuNNh6ScX53iGg5VL/lLE1SDraSZpzzfsNbDtUfSnHYCZqtxHCcXx1C2HKoXgiEUBTWAP+rrtHiBPHN0t0vfH6i81dnXx12/Jk+e3rNiCZpd9jjtOKOPrOin+u3v92I492mx7869PSiZbuNJjPLgQOHL2dcz8grT04vOJOQtufgSYwgw+b0+/0JF1MPnziXlFaQXVCZmVt88OBhHCeqa7S8/7VoPajdmVI5LVoPapj/sbOJ8bHfzBzz65JPdyz7LO34jAuH58bsmqJNmrJz6wao7n/yz3nomsg/n5F4iXyv5L23kfTwhl1FvpZ8ZJxIuqQV/4MrmY4kBqp8cd8k/1N7TdX2WTGP4m6oHana1kNsWr45xZoQ+6z4toxwWyHWCr3bioccYZ7wnyZPc+hvAWFrT12vdxc+eMdQcPcIcM8oEDUYgH4AfALeHQs8mQDmAlgOoOEutd04m+XIKPZmFvsyi3288CVdC8pfHNsLrHL/L4YzOhOpM5E6I2knXB/92qnbrx8YbXSFzmm00R/t/MDr9XT7tZPRRnfb2anbrx/YCZfOSOiMBIYr+B+G0zojQdFur9f3xpqnhbDyJ6n0en0U7eazSfyPzSaEdrghhNWzZ/NACGmHWxIW2Lf6+N/ufYSmuo53wSFfGCRq2Hj/U3xLyN0orCqF/VSGLnJRk6QK/aWkuM+h1wr7kUTl9yly/7NjuNZg4zFbyUuF7ub99I+NMZoJH8O4aIerWO/5+5DauwfU6mzeWjPGRtoxnF+dZpwQwub99CwQQppxCsMa4n/62lqH0zVv8a/Nnlz30Ds7Hmq/85+v/5h3wxDhoa7fm3b/G6sfar/z4Xd2RD21Zf7iXwmCYtl/4FD0sZOx8RfOnb908EhMfMLlCHM6Xa5t2/ecjb8Qf+7C6TPnDhw85HC6dILr/9j2v7d/yhDS4Pa/8vLy8vLy7esXxaz+OHPTa5mbXktY3+nIuqGGtGlU9ugD27/T6XQwXPtfvXwiwm+WBvifUMUin2hknhD7E2L/1b4QI6mRT4feRCP9L+xXbePzyI808rUaPNEk+1zftUJsS61EuMPK2dzNoRdAz10e6r7O8/4PfAbAYBA1GIABAPQB4FPQeRLwpAKYBGAOgLWq/heXyfDX/Am1jyU2xxOb44m96onPUm7/M1mpkip7SZW9pNJusDAdt7Sv0hMllbaOW94pqbRV6YmOW95ha9hpg4UpqbSVVNpMVlLufyYryS614U6vx/fyD4+yeD0+4awQj8fHZ5P4H5+NByddEMIbX37JAyHESZckLLBv9bn/w+MN2h5L9Enqpdc0rV/VnDlLN6b/N/zbqJ4lkq+aENuNxP8kxxLWROVpJRNhpRaV36HI/c9osRdXmHisdia3ou6evrqoHtp/DNB/uc4+bJWNnV11nMRwho80WuzC1XHCASGM6qGFEOKEUxJWL/8LPPbDYDS53HXfrzrQ7PGf7mu79cEOO+7vtOmF/us1BjzscaZd0741YusDnXc8+M6O+17Z0uxfP/6w+kCdx1vn8dR5PMeOHz9w8Ghs3PnTcReiT19at21faUV12Jwut3vv4dO79p04E3fhTOy5Pb8dOHb8hNtdZzAaBW7HnGUV8OvzLAH5U78WMIBs/GcIIU3TsycPubL5nZjVH1/Z/E7etta5m/6Vuem1+O1Dd/08l+0ahr+7/0Uif/K9itzS5I15EeapVztiiENopP+pnbqb5H/yr9SwP0KRmMpN9T/5r0uI5GGPor7+14AzplYUk4fYQ1FxPAIpAG3Aj4E6WzOXpRmhAaAfAP0AUQBc+aAuG/hTAbwIYAaAJc+q7cPpdMeVQq8QXv4Sr3lY/ztzte4MN/4zgRt4jp06a7ZRpVVYaRVWWmWv0uIaPVFahb2x7jWv1/PGutdKq+waPVFaZX9jXTt2ukqLl1bZS6vsZtbYxOM/m60ku7S0ym7HnV6P77klj3g8PjvuZGe9Ht/i2PnPLXmErWcX8dkk4z8Ls5VW2Vn5i+/aVQKEECddwshANruOsOvYxwoHHi5s1xFK/me1eRXHfI4+SYW+/yPCd2nTClDY1SPxv3p95Bvvf/Xaf1RuUmHHf7ZzRJ+IMVnsJZVmFivG5Fa4W35WHdWtqs1EfVS3KpZ7PtWsiiZwwllaZeGDTRa7ZHVWAXHCwdfwYXZzCWYuwcz18T+jyex0ufdHJzf714/3vr7z/g92PdBr3/29tr08fHNRZS1JkgRBEAShM1o7zTrYss+Glr3Xt+y9vuWna1v2XP3PTzc80GfnA732P/D+rn+03d7s0TX7o5M9Hi9LamrGnt8OxJ+/dDI26fCZlN3RiT/vPr5i8/6fth1cte3wql8Or9lxdOv+GK3ewG6CJEmb3b7n8Oktv8VEx145HZ987vyFw0ePp6VlOF1uo8kk9D9eAdsN2KosfxH737YN329fv2jhvFlPP/nvU0f3Hvtt/f71UxLWd8re/OK+5QPSUlOEwZLyR/S/pmr/U1z3NvS/0BOKqSL/Jg3tQGrBEf4YNMlE6KO4ef4n31bYtSJZJZIdExZGN7QiDWw/CByVAJoBNANXFQC9AegFXAUAFgCYCWAygEkA5gF/7Wi1fZD7X3Khl5W/SPzPYqcqqvGKaryiGmN5eeXL/GV//13xMl/z8sr/8jEV1ZjFpuB/FhspjMEIl8fjwwgXX2O2ObZf2fbkt4+subBKWM9mk/ifMBtBuSCE+9q3Z2GPXThLULJsEftfiMd+8EPANLL/Fyp9lBpWGu9/kXyc+TD5X0lY6Dx8qqbSX1QaXOT+Z7bayzWWco3FjjO55a6W/Sqjupb1X2Lw+qDB7o3LYhJzHTjtwwhHRbWVjWQxW+3C1dVgwxrifyazhaLoojJti0fm3NvxcMtP9z04+GirL2MeHLb/xTE7MgtKa7hSVFrZcdahB8fHt5qa3GryxYfGn2817myrL08/ODj6/k8P3NvhYIuHpxaVafnb2HT62jVrN1y4nHPodMqhuIzoxLwTyYWn00pi0krisqpi0kq3HYq9UVLGJtdqtVWa6t1Hz26PvnDsQv7Rc1nRcWmXLmct/f5Hnb6WommT2SLxP14BleUvMv87dXTv+mUT2dnVq1evXr2aHQWmoCD/wK9rT6z9/NiqnlczUqDKnQ3CT2/Ypg75B1USEGJWXgPERVKvGKm2riSPfFoxs+LW5WGK50F+rhpQo3hyFE+y8DVSfCEieXXUVpSHhT7w0EkiSSt5wly3sgAAIABJREFU16m9DxuZPMKt37wzJoyJ5DQqrmuxpXZbA8btAy8tAYlnAawGdSWg80zQeRqoywEwC8ArAF6MgpnN4I07CPKqYhII4ck0R/I175WiAJcLfcmF3uRC77nr3lO5HpaTWXUx6QxU8j8bRlVp8SotXqXFrHbns0ufl9zz+5yg5rllz1vtziotVqXFbHYF/7PZSXapGgTpWpW46l8LH0mpSKm1BIPZbBL/E2aDEK595RUWCCFJu9kLwYWV0myR+d+5RDr0k98a7H9hv2EaVkJnCLuJCL/eJRPCv1DpMOWf97C7isrvXOT+Z7XZK2ssOgOeW+5s2bckqktR/+90Xh80mPGaWpvRghvMuEZnrayxSLDa7PzqIWDD7A3wP5sdt9rs7jpv23fG39/r7H2DjrUaF9dq6sVWM1IenBDz0uR9CVeuXuPK0r0XH5gS+/D8vIfnZbeald5qRkqrKRcfHhf3z4HR93ePff2Drzwen9fr83q9Xq/X4/HMmjU7Jbv88LmsY0nXY9LKYrOqzuXpEgtNiYXmE1eKT5xL4TPn5RfsPp6wNy4jNqvqdHrZ8aTrR89lpeWULVjwjcfrtdnsNjsm9z/uqb4qROB/G1ctjj15hH/l+N5etuh0uuP7tmz/4cuNqxaHbtmqVwn7cQ39fYeK4vlpki/9piq3z578CUq9fmjl5avoz7uuA++vA8/MBYnHgL8IeHKjPNnN/Fl3wLQWMKkFzLgbFv+9Qjc9RJLoy44Led7ka97ka17W/Hj/i7vmjcn3Hr/qOZ5Vdyqdu/9D7H92nK7REzV6okaP23Hn498+JR/2hefxb5+0484aPV6jx+0YJfc/O0axSxUhKZfX63to3iMrElaRlEu4iM0m8T9hNgjhoueeW/TccxBCinGzlRTjFtZLs0Xmf/rausb4nxzJGyDC/+1EXhr5EY7k/ycSjZMEq60inFD8/5Xa/7VQ+X2K3P9sdqxaZ8UI5ocD5qgPC/p/V+31+U0WvFpnDY3NjvGrhw1riP9RjLNGq/V6fT9vP/V/b/766FcpD3514eF5WQ8vLnh4afFD8y6/NOdYTMLl1NTU1NTUOTvPtVqQ/OhPmkd+KHt4aXGrRfkPz81o9dWlRyZduuu1nZt3nvCyTzXiiIs/d/z0pXM5NSeuFJ/L1yfesCRXkCkaR5rOHZenPXI2mU2bciX1t9NJRy8XJVeQiUWW+Dzd6Yzy+MzKk7GXzsTGeX2+Gq1WbHJN5n+Rv6hN5X/ok4kKKpGUSD4pkcS46hyvLn3lb+PBvxeDJ74FM1cBZ8qdMOtumPkPmNUKFj4Ndf89mN/X5Q31/LdG+h9G0HojqTeSeiOBE65WCx4L4X8Pz38MJ1x6I6E3Ehiu4H8YTrFL5Vhs9OWylPvnPHL/nEd8Xp/BTAqXstkk/ifMxg7+AiFkHG7hior1gWwR9/++20WrJn/ZOU70/F9U/hxF7n92DNMZbHqjnWFcBy9iXp/faiN0BltY7BjGrx4+rGH+ZzJbcBwnGedzbYc/vyDv4YW5Dy+98fi66ic3G575xfjUypx2i0+tPxK/Jfrc20tPPbet+rmd5md3mJ/YbHhsbfXDS64/PD/7+Xm5rdsNoxknq31s8fp8Dpdr8uSp6eV4YpE5qZxI17uzLTDbAnNtMNvi+TU2Oeb8xdiEC/vOJsXkVObaYJYZpuncicXW8wW1meX4xImTHU4XjuPizt8/tv+hggoqv3Nx1TlG/DIU9AdgFAAzwJ0zwYCf7vwl+r4dZx796ljLhZmTQ8sfhDD6suPcVe+FPG9SgedCnvdCnpe98i/umjc233Mq13P8qic6w30yVfn6P4JijGbKaKaMZpKk3KyfhYCk3EYzaTSTgRGbxf5HkDS7VBGGqfN5/T6vn2HqJIu40aRF/hc6Wwi48Z8j9b+wJTnFgfwPlT96kfsfTuAGk50FwykjNx0WwfjP4cPC+99dbYrl/kdQjurqGre77lxSTrNnvumwy/TYBt2zu22vHrK9FY21P46/ubeizdrLbVdfemNPWYcYov1J4vWjWNtD9md3WR7boH1np6H5M/MTUvJ8Pj9HsOTlFaxZv7WMgum1nlwM5hOwkII3HLDYCTNq7adzrkWnXk2uMBQ5YCEFC0iYY4PptXXFBFy1ZlP+tUK3u666upqkmZvkf/Uqt/ZdhQoqqDSmlJkyZp8a8/TSp8GMO8Dcu1/Y9cqsy1OLrDmRrHskiY7LcsfneBJy6ljicz3xuZ7Yq55TVz0ns+qiM9zH0p0nrpBQyf8YxmHHaDtG2zGKIBmHoy40BMnYMcqOUQzNyP2PoQNL6wubTeJ/jc0Wzv9CNPvJSUmVPuQAFVT+WEXufzRF2OxYA6AoPPpEDEXhocNoigjlf4+F9D+SdlqsdovV6vP5V6777Z72K3vGO9rH0h/EUx8lOrpfcvRIcvS87Pw0xdnzsrPnZWf3S0zXBOaDOOrt03S3WOqe9itX/3zQ5/ercfjwkfXbDuggvOGExU5Y4QlQ6QtSXgfL62CJCxa7YGUdXL/twLFjx31+v8VqtdhsMpNrGv9DBRVUUImklGldcanE2QwyPoNiOZtBns0gY9KZmHTmVDp9MpU6cYUs0TqgzP9i4xMJAmdohqIZ9iuIomkqMCuskcLQNIFjsWcThf4XezaRwDFGfa1w2RKE/hd7NqGx2cL5Hyqo/E8Vif+diYvDMQtN4WT9YRgi+kQMwxAhYmgKxzHLmdi4hvsfSTtrDUar1er3+1eu/bX5i/N7n7EMzvcNvOoZkOMdmucdnu8dUeAdnu8dlucdkO35PKtuUK7309OWO16av2r97rAN+/v37/9+xc/lDlgLoQ5CHYS1YnQQaiHUQVjmgEuWbzx48KDf77darbVGIynXOOR/qKCCyu1aJP6Xfy3/SnoWRZJul9PtcnA4ORxqUCSRciUjvyBP6H/5BXlX0jIpkgixYshsuUL/y8/PbVS2/Bzkf6igIiwS/8vLTU9JTSUJm8tJ1he3i4w+EeN2hYohCdvllCu5uWn18D+SJuXodDpWAc+cS2nd7rOnxhyblO2Yr4OzdPCraji1Cs7QwBlaOEsLJ2Y7nhp37MXXB8YlpkZ4bUdqWvrIkV8cPZ9lgZCGkIQQgxCDkICQgJCE0Azh4XOZX345Nj0j0+/3WywWnU5HUiRJkSRFCCEokkeyiKSDcA8iCUBSJOvLi3bEIxAIxM0Dx7UBMB2O6fLyc8+cPX/sVKwCJ2OPnZTNnow9djL2TNz5vIKrOF6D4zWChDV5+VfPxJ0XRgZRyhPMln8Vx2okhMqmDpetWhm75pa/BAjErQKzFuPWGyyY9UZuburp2LjoE6caQEZGkvrSk9EnTp6Ojc3NvYJZizBrEWYtxKyFdnMOS/38j6RJg8Ggr9XTNE2Q9PqN2197d8j/e+e7lyYc/WR15oCt1z/+KeOF8Uf+0n7xGx2Hbvh5B0nRvN55PB6n08kwDM4VmqadTmddXR0fQzPMrl27x40bv3TVtuhzGVnl5htGR2aZ6XB8+pKVW8aOHb979x6GYWia1tfqDQYDJ39N7H8cRBNC0GIoXI0QDbnivY20iThE8hAJI94lCZgapBBSBEHiAjA1pGupb0uEJE+IRaSdh5RtToBdCKFOhGERZiBJO0Ha1AmRJ8RaAggxokVWEZEmsapCihEswsVEnMQiQhRpiRBcgKg+KENaHNPKfSu4SCJPogB1IgwTwYqUcDosNeK/NSFXjzxtg7BrVKgOgGlEsEsls3aNNAyrCiBJK6kPztYPzF6J2StxGYF6jCO4qAK3V8jjZVQIwfiE4nrcxsGG2QLw9dxsOQtmL8fs5TgPX28rx2zBWXmAhECe4OplmK0M4/Jws2W4rQy3lWF2DlspBxtQKgEXo7YUs0oo4SjFrKWYrYRFEF+CWUsE9RzWEjy4bglmLcasxbgtAMYjWBoZNzDrDdxazMLXc24nnrVwWFVQC7AUBWA1LhjG1wiWBisLAwQrG+d/JE3aMLtGozEajTRN+/3+whtlBw8d+2H52sXfLfth+dqDh44VFZdDCF0uF0mSVqtVr9dXVlZWVVVpNBqtVlvLFa1Wq9FoqqqqKisrdTqdxWIhSdLlckEIy8srTp48tXHjzytWrNi48eeTJ09VVFT6/X6apo1Go0ajsWN2gfwh/0P+h/wP+R/yP+R/yP+Q/yH/u5n+R9AkQZNmq0Wr05aXl1dXV5tMJrvdbrFYTCaTXq+vrq4uKyurrq7W6fUms8lmtxMkKdY1EQRF2HG72WLW1+o1Gk1gXZ3OZDJZLBa73W4ymaqrq8vLy7U6rcVqCewJ8j/kf8j/kP8h/0P+h/wP+R/yv9/T/wJQlB3DTGazwWg0mkxmi9lqt2I4RtKkUMIIdfkjKXF+iiQpEidwm91mNptNZpPBaDSZzXYMk+4J8j/kf8j/kP8h/0P+h/wP+R/yv1vif0JEYY3wP0HToCAD8j/kf8j/kP8h/0P+h/wP+R/yv5vnfxTtDMBIUBo2hXEERophHAFoDsYhHJ+FFCPPE6gPDtEiGsZFsCJDMQxJB6Ck8BlE9STDkMIRYRj56jRF0ySHYEWaZIL1ku0K4jkomqJokoemhLBLKYomKYoMzlH86oFIbnU+gI0PwicUI9gW68rcbGgLl+k4u5Gw8VwYJ7skB0WQgv8dSOoFcDZJsvCRXI2yekpVUqqqEmlTqw/alYLbhfW2YCQRIFykjUWiTcF6sXuRRAAFJxP4FklYWXjpkcyqQYpRcyaSQ8WozBxcDW4hcGG9GDwcqpGmJgTHjSyEGpgIaTxmCMDV4LgBx6WzOG7AMQOOGYQDvhBcJc4nwbhgvJaFwETgHPIaSb0sXi8ae0WMvF46a+fAFMDtHMFVdDim49diZxWw82hxu1Yw2zC0Mmpwe41SvRa3azF7DQtu0+I2LW6rUcbOUy2Gqw8GV+M2QYBNjLge4xDUa3CbBgsu0rBw9crgQaoCWKtwaxUuXjG4VAzGYw3Aro4FqWSRxOPWSpxbhFkrcQ7F2ZBUhADnkC6ySCiPFGs5ZlWfDVKGWcowK4eFR7BUgVIZoQPES82lUgJhJSx2cwBJPR9vZ7EECIzzYuHgVg/Mhh//D/kf8j/kf8j/kP8h/0P+h/wP+R/yPyXUdFBZEKWaKJFFOpQgStcK6ZGqxika/xn5H/I/5H/I/5D/If9D/of8D/kf8j/kf8j/kP8h/0P+h/wP+R/yP+R/f0r/O3pwK4QQ+R/yP+R/yP+Q/yH/Q/6H/O/P5H8AAAAAK3yBaeR/yP+Q/yH/Q/6H/A/5H/I/5H9/Yv8TKaBYByPwv8hMTgotQLIWrU49JFIFcULVDl/Btlj/E94XQjKcBTK0FKkXKiMJkMeTYmS6JhZEmc8FCi0QSJqkaFKqg0EnU6iX2SHJZhX4HzdEjlT1JN6mVi9GQfuEtofL/I+v5zPIFpFC/wvUhPO/AKqjybCVqmHKXqimiarxYk2U62BA+CQ6yI2lolAfWEvF/7jhUdQ9T9HnJLanECAONrOo+h/O1YTWO3m98izncISsRtnzAgjcTkEEw1tgiBiBESpppUj4pNrHI5BFHDPgMsNTRE0Qg7MBe+MjeXWrxe3CVJzA2fW4XaB9Ev8L1ugIuy7of5yKycI4EWy4yWlxu5awa4lI6m0cyjooQxqsFsbLnEQQxcIXzv8k2ieQOYn28aYo8jzMysHWWzmkpsiLmkYMZ3iBpbzwcUL2/9l78zg7rrvA9yQDnxgeEIYBAhmcGSCEGWAehLwEM4mzEF6Sx8CExAwJBEJIAgTChJc7yUOJkwxZHCzvm9aSbcmWrdWbbElWabFiy4u8Syqpte9b377d93artdht9X1/1HbWqrpbq9X1/X5+H33uPXXqnFPVLdVXv1N1anB/fXB/Um6pIBme6XONwf2NQYvexUa4TwuX50VfE8OLyk1jC7dG5Y2BKBS9yxC+SO9MTdS0r1AMxVHAC3fXB1JRi3TNrFDdPWTRwcj8koldSQSViHQw1j5ZB+v434T532OZnD59elL5X/ZoR0+PTgH/yzvGUyXxv5zzMNqYVP6XM9pT9dL6X/aZOXVqqLT+l3NmRmpTwP9yjnF4YAr4X94x9uN/Lv9Lpn1l+eum/+15+l8fm/HTe57+1ynsf88+cIV/4088+8AV7fnfa2Njr702dv78a+fPvzY+fn58/Pxrr42Nj59/9tlnfd8frA9OKv/LHm1tqDYF/C/vGAdK4n8552Hw5KTyv5zR1k6U1v9yzsxAef0v+8wMDJjJwovP/3KOsXp4Cvhf3jEewP9M/0vv+ZOzgF30v9Ez5zbc8hPjrxzfOOtnT585V9D/hBDaB2svQojkz4yIKvTM/06fPbfhlh8ff+X4xlk/c+r06Vb9b8OGDWNjr5q/vuPj5zdt2nTmzJm1a9cO1AY0/xN5FPQ/IURL/ldotAPVbP8TQhT0P+2gZL1TGlHNL/vM5PpfsWPsz/A/IUT4p+Z/xuEoJRn+J4TI8D8hhNX/cs5Dnv8VOQ/V6gmX/wkh5M/Z/mcOLyws7n8FRutXq8ey/U8I0Yb/CSHa8D+prxz/E0KY/ieEaNSPh39mR6Ezc/KIy/+kLo4JIVryPyFEQf/L/l3N8D8hROJ5yeeC/lfszBwy/U8IkZhf9LlF/xNCFPS/7DOT63+FjvGE0/+EEIneCSEy/E8IkeF/4VbZ/6Lxx/4nhGjU9tl/+nn+V+QY+0/sM/1v+eI5GVGv7cmusHzxnNDhkg/Wr0lh6H+2Ruz+t3zxnAmY/43uGkyii/43cPTZ3es+2Tyz7cATf3t8z6rO/S/7L4OIXTCrQrf9b8fT1+9e94nmmW0HnvibrY9d2ar/rVu37tVXX7H++q5Zs2b16tWrV69es2ZNdv5PCFEw/5dz9vL8r+hoC/ufECLb/5L8n5D8Ly53+p8r/ycK+F/BY9T8TzuTI4btJZm/8HNYR5PFYcMIhRBW/8v+OSpeaMv/iQL+V/Q82PxPSPIX5v+EEAXzf0KIRAqL+1/R0apil30ahRBW/yuwl10Ts+mR/xU9M4b/ZQ21B/4XbhW67ZklXfO/gmfGmv8TsQJaTo7D/3J++m7/c+X/RAH/K3qMrftf7u9zInnqyUnMT8//CUn1EuETBfyv6DHa/M+V/wv9T8v/LV88x5r/K+J/Q7ECml6YqFuea15s/vfiAx8fPbq02X/LmeOLn138vmz/E6r2mb869sReXiJQ9Dj/98T8tyfH+Pict7Xqf2vXrj0wMLysb3Tj0/9yZuM71l//a2uvf0tjy7fDX9/jx44dPHAg2/9ELH8F/S/M8wkhkvlfkepjjv8VHa3hf9n/UrSU/0s+5PqfECLxPyFEQf8reIxt5P9kBRSx/yWmmOT/hBBJ/s9yrmL/c83/CsP/RGx7I8M1IURB/yt6Hgz/E2rmL5n/lctd+b/E/7SjzvW/oqPt9vyvSJJ/reT/hBCNZPfC+T/r351c/yt6ZjLnf0WY+Wtx/le06H/6ofXY/wqemYz5X5EkAuNMnsj0P9f8ryjgf/GHg2FhQf8reow2/xNCuDxPTv4JKfMXfpbzf8lWIUSY/5PqRz4nhGjYZLGg/xU9Rrf/xWIXF6r+l5H504Qvo5o2/6vmDlP/kz9PzPMfvfK/0TPn1t/04+PndjYPfKZ5atNjt/3b02fOteR/SkZQVT0XLjvUGuyW/42ePbf+ph8bP7ezeeCvmqc2PXbbT4ZTwMX979u3r3rfslNLHvz07kffdf2Xf/td33ppxeMvLF3wt/J/YlavXm31P/sZ6GX+r+hobf7XRv5PmupVM4IF5n8T/wt3EYX9r+Ax9ij/J/ufiCVPZM7/uu7/i/uN/C/5s6D/FT0Pqv8JQ/5EPPmrKKDhf8ONAaH6X+J5ooD/FR2tzf+sfxeK+J8QoqX534y/ei7/06pp+b8iUfTMdCP/l7FLvGPW/G9ie0JyPpHnf+6+cvyv4JnR/E9ImT8t/5ftf+3d/xe2nPhf8mdB/yt6jG7/y5j/zTr5xuSvyPO/hmR74YeC/lf0GB3zv4n/hTpo9T/t/j9Z7EzVs84LF/S/iyj/F6/VN5pG34Zpa2/4iTXXXhLG7jUfbw4tavZ9tHn06j0rfz8p96/70S2rPm9L1J09dfps8jtkVUNtU3bmb0T6U916WntxsBmy/8nr/z256MP+9B9dc+0bwti95mPNoUXNvv/ePHr1npUfTMpXXX3JE/Pf7VovMCzftK966Z2nff9juxf9x6v+7pc/fv2Dn9zafNOXD37iW987/5rmf6Mjo/p6gSK5zy9GSLlAa0QVojv/Ij8TQkSqFy43mKKs8LdpX3/R0Wr+NzKS8S+F67kQe+WReC74VEPfRfVFkaYJ4/qRPuoL/sUa1xgZaWzae6LoMabrwujPc4hY6cznQrLOg1FhZGQodDsRp/0S88tsZ3BkZFAVvnTWOJn/zV7n74k9RwueB+POv9rwcC2WOUkEI+FTo5EankYy/yvMWWBZBIf7h4f7n9h9uOBo4zyf7n9a2k9E/mfXOO0GvnR3bTnAOJIl/YQQ4Tp/QojhRqR3UYavccKsn+yVfIhOTv14suNw/YS2sJ8cT+w6UPTMpMv7WZYJFFL+z7X+n7ZwYLhLopLacyFaCCHipGMkfPImZTnAdIFAJf9XNGL/e3zn3qJnZlB/2kPEkhd+EMVuB8z4O5su+GeESLVSnvY9pGUEjQX/DjYGD/5g5+7Cx6iv/BcPLFr/L/wabVWXA2wYywFGXwdt879qni9NDcZTwNKmyP+ktf0s6wL+oG9nwWOUBC7ad/niOdGf8gxvmgVUXS3UvtqeIWNr+NXUPjMvaL0dUJ4glhKBySblcRBJ+BTPk0Kppm9NlwlUQhPBNv1vzTU/fv7snubY4ea5Hc0zm5u125v7vtB86YPjL/1RM/jr8R1/P/7iJ8af/NCY/4410y85feasy//0iV01PyeMLKDVAkVv/O/Rq37EOMa/a770e+Mv/WEz+Mz4ji+M7/3++OEFr734pTXT35Dtf5+bs/nBVf/jzENv/tLHf+SVc2dfeeXcW2ed/8CS5k//9cHXXhtLfn0feeSRXvifTBH/+9ycZ4qO1uZ/lvzfiPEsSM6Twmo6sAf+97nZTxc9RtX/9PNpmJwuiPFzHtrWZN7WJYux3qUhhEjWf07yfx3632dnPVnwPFj9T2jCp+qg6X+S2IVZQ8f9fw7/Kz7abvmf9UcTkut/IvY5OcNX0P+i3Qv732dnPVH0zKj+l3GA0YB7438izv/12v8+O/PxomfG8D/rbX8iTgcWeRxEqM9/9Mj/PjvzB4WPUfE/IUQ9/jP6ICmg7H/W85D4XxTqvLCI04FyglC6BXC/rH0iz/8+O2NjwWPskf9l3P9nLXfNEbfhf9ppv/D+t33ttCdm/fIrJxY1qzc3d32iufUj48+/b/ypd40/9hvjj/7S+MP/fnz124bv+8XHrvmRlx76nDX/Fx6Jy/+SQ9UsUJvwzaZD//vB/A8/MeuX4mP80+bWD48//97xp945/tivjz/6i+MPv3l8z83/ZckbD2z67pZV/yvD/0Yb1dXz3t1c96tf+vTbfugjV7/hLxf80Cfnvf5Tq37mfz3x8x++cmzs1ddeGzv/2tj586+tWLHC5X8mBf3P+j6PDP87VT/Zwmi75H/6oY2oE7hu/0srqzooMv3v1NDxFo7RyP8JY0o3zP8J1fDSrcNyTYv/JV+Fkf8r6H9hU2GF5M9c/zs1eLj4eTCf/BDxZK6V7PxfG/43Mnig+Ghd/mcZZ17+ryHN6uo3Arr9TwghZ/JEi/m/lvxvZGDv6nn/teiZ6Wr+L6kfyZ+xLozpfyHyFLAQooj/aRTxv+H+XS2cGYf/yYm9Vh8HFq34nxCiIc35JgooMv1vuL+vlWO0vPlDJBZYi1KADelr4n9a/k9I/mf56eT5X0IR/2ucDIofo9X/9PlfZRa4Nf9zz9taNDEj/2dtxJX/S07XpMj/jYyePfTy4pXfueTYpk83T1w/vvnd44+/fXztr46vfMv5+3/m/Ir/sN/7qZXf/uF9m+dap2tFrICupzeEYX7Ckfw7dfqMO/nXkf+dGh19+r4vrvzOG45t+svmievHt3xyfOfXx/fdMr77+vEd08d33jD0wr/+5rKf+sgDP2O77S9t58zxuwY3v2PutLf80O9+7T1fnn/2zOlzZ8+cO3f2lXPnXn3llbHwgabXxl57bezBBx/sbv7P/GuZ63+njy9oYbTdmP+13SmYLgdo2VG7X1BNFooC/nf62PwWjtE2/ysUn6sLQ+/Sz/F9flp54n/JvroCtjj/q80giwL+d/rYHcXPQ5H539z8n0jv/GvZ/04fm1d8tFb/UxwuTf7l+5+0l/EsSFfnfxNk/xOR/Dn97/TRuS2cGcP/Mn7HivifXLmI/yXzv53k/0Qx/xs9PLuFM1Ns/lf+s+vzv6HSxZ8L+d/o4VmtHKPd/0SYApT8T1ZALf9n+l99MLU9IUlekfyf1KzT/0YPzyh+jK78n/Jsbwf+l/38b3H/S97/VnD+Vyjyd6H9b2T07KlTwxtn/F9DT/7J+FOXjz/6S+Mrfv788p88v+SNA3e+ce0Nbx1pVDOeGsme/xWq/1n/1OZ/R2IR7KL/nTo9euzY/tVXXTr05BXju7/9tw/86m8u+yk5Lr3r/7j66D//2sIfz/C/0zs/N3LXL/ziH3zxdf+08fem3799576ljwWffey1P15x/p9veyD99R0bW758edfnf5NbAEUif5n+N7rzsy2MtnD+z/a236z8X/H7/6zLR4tM/xvta+UYHf4XD3VIfi4k9+a/pFpqe7H8aQk8V/5PRFlDff43fv9v8prg/Pnf0b7PFD8P3fK/kMT/0j/z/K+l0WbP/4rY/OIPLd//JwrM/7bkf9Fpaev+v9Edf9XCmXHn/0S61kwL9//JIljc/8L6bd//Jwr6345Pt3BmBi1QEj4UAAAgAElEQVQzv1alazX/J2KfK+h/Wr5QZPvfjr9s5Riz8n8a1vyfpYLqf4nnCZv/2XrJz/+d2v4XxY8x2/+0VWBMhwvlb/niOUO1vUO1vRli51JAeZPL/zLiIrj/L/K/0bMrvvmGV5/5w/FVv3j+gTedv//nzt/zhvMLXvfqXT/88Df+jXbbn8v/hOP5j4z7/7RdlId8dQXs1P9OnR59cNoPvfrMfxvffeO7lr75puFvVgb+7J9O/uk/Hr3i7w/+8ef3/NGnt3/kgf57fuGuH3XO/z713jXffvvbPj37df/87CWrm+/beP7/3tz8uVXNH/3YzNWPrn/l3LlXXzkXLmu0bNmyrvhfujX2v5BC/vfk5S2M1vC/kZERl/8JkfUIiPJnK/f/teN/LR2j7f4/LQuYfDDf9qHl/+QEYep8xvMfIvP+v3Rrh/735OVrvv1bBc9DV/xPu/9PxCnAIs9/jD75nuKjNf1PpDf/pf6nlVsf49Xmf5PnP0SsgNn+l5Cb/5P3bdRPxPInpwAd/vfke9b8S+Ez4/A/IfT1n4s//yEkq+tF/k8YtmeW2P3vyXe3cGbc+T9J7Nqc/w0/9MT/nnz3oy0co9P/zPxfS/O/2v1/QkkT6vm/eOGYovf/tXSMnfjf8uRx4HhR6Nwb/qwGKdeUl4NOStrI/10Y/0ulwYihgb0br37j+IbfOv/Qm19d/qadN11ydv4Pn1/wuvMLXvfU915/fJcfVhs+pYT8OKqQnk4Nb1BLNEXbJIRIWgjrpE6j3OWW5pNGTg2r/aoaMRpF6H+RIpwaDiORhq1PL9149U+Mb/jN8Z3XvmvpmxeM3DS/cdPtg9fPrV4z+8TVtx256pMvfmD5sQX/ZekbR05Fbx5TXj52qjH6g8vu+MJ/uO3ma3/1H+b+/L8s+5V5u3/he5ve97WFG5547uyZM+fOnk1+fefNmzc80hgeaSRrjoQhbAyfqqeRVD5VHz5VF0LIew2rOapEU4aNGBkZGt3Y0mgH1dAa1Kcvo2rqK8tEPFOZVIg+qyuepBEvZRLu2IgjMZ64qaTmQBTxCiatHaPtRWdJL43hAXllu+HhaqMRRWIwIrEcKRrD1YaxyfyaTaNRHR7uF0IMD/cn/YYhjTDsqz+M4eGTw8MnQz0a3fg7d3zhLQXPg7Y2ijw3aozqpBQnrBHX1Atd9RuNEy2O9rgcQohG43ijcUwa5LEw5M8Zoe0VRSgojSTkNqXy+tFG/WjcwtFG40gU0e7pVxE6UONIo3FECJFsij7XjzTqR6T6UbR2ZuqHo4hbjgaWlNcPN+qHXeWN+uFGXVniuFE/1KgfkneMSyyR8/s8dFAKSaHqB9MYOtgYOpgWJvXrWhxo1A+MbnxXC2dm6IAWQgizJKQ+tL8+tL9hRPYBCiHMXZIdG0P7G0P75JD2Usobg3EM7Rvd+K47vnBp4WPc2xja2xiMoj64tz64VwgRlQztbQxJX6UIC+tDe+tDe9OTMLinPrinLrUTFgohGoN76kN76kN7hBD1wd1hxLvsliM9xsHdYWgVGoO7WzvGpJ3arnptV31w1/LFc+qDuxpJ1HY1arvS+/ZqO5PPjcGd9SRqu+q1XWGFMORd5IgL++q1vkZt5/LFcxrSpkatr1HrCz8nJfWBOGp9yb5KSBXU8h1R1HbUazukakmJtDUt3B5FWri9Xts+VH0xjHb8b+vqaX2zf+b8/T8zNP/H1nzr3zy35K9WffP1J2a87vyC1+258XWbF34i2/8sIbevblJaGM2oqUhe5/63bvaH+2b/9Pn7f3r08c/+1ZK3vmv5m+X4xbvfuOzYXW9f/u/i3S3+d2r7N4/M/NVnr/213Qv+64N3XzVj+WMPP/b86dFTZ06Pnj19Ov71PfvqK+duvPFGq/+lKahTjlD9T9o3ETt1DTy3/50KvtHKaHP8zx6q/0li56jm8L/wq+Z/lmqG/50Krjwyo/AxOt5124hDFzvD/6wRa5mzgh5xg5HJJb0M94eh+V+y1nGG/41s+/qRGW8reB5c/ieXNyzh9LlWY2Tb11oZ7XFb5Htea+HwP0X+GlIqKypx+p9eooXD/0a2TWvhzKj+12gcsRledljdLnurOxTns/ifLnaa7WX638i2/+/IjF8pemYM/8uI0P9MvYu8sB5Hanihutkd0agWRdha3SiX/W9k61dbOUaL/6WeN7RXq6BF6H/S7or/xV/3NAb3JP5XH5KFb4/pf/VY1zL8b2TrV1o4RsP/wtD8r57GznptZ2MwCs3/NNXLjMj/wkjKE/9Tvrr07iLyv3U3/PqJeT++5+Yffujrr9/z1OzhU6eObF/lX/erW655fW3261Z+72engP898p03nZj3Y3tu/qH11/+nnZtmDZ9qHOlb17dx+slN/3L6uX951/I3v335v0vqW/0vLL/qqqtGGo1wRKMjI6OnTpm/vlddddUF97+wvPBoL0r/C6PoMU5d/2s0+huNkwXPwwX3vzAKj7ZE/hdG0TNTJv9r1A80hg4WPTOt+5+Zxivif5nRsv81hvbVB/cVPsaL0v/CKHqM+F/n/ndJAf87tstfd8Ovb17054360eFTp8I4dXp0x/rvr/zez+7bPG8K+N/mFd965DtvWnPjO7a/uCY1vNHRDbd/rG/9Ve9a/ma5fob/fb0Yk8T/Co/2Iva/osc41f2v4HmYJP5XeLSl87+iZ6Z8/lf0zFzM/lf4GC9i/yt6jPhfe/733r3i0gUt+N+wHLH/haFUu5j9zzS5YeXrcEH/i0PxtuRdZPETBo1J4n/ZIb3r9iL2P7fPFYop43+xwClvyDUrTBL/iyP0Oe1rbkxl/2s0DsehiV1SR9W40vifElp5+rW1mGz+F0ZSHn9Vvc3Qu4vL/+o1LRKB212v7ZY8D//D/wr738ioLHD4H/6H/+F/+B/+h//hf6X3v0RxLDEixSnN8xzVRobj5eDCMLc6IqPBgiPUo5HGKV25jLCbmRaNOIxNkRJpFaSv+dY1PDLUGI5iOAxTvGSvGhkcjms2RgYbklHFjQxqEVdL1GpQDkv9qFyrnwhZUq2mREONYT2GG7XhhiRqjSiy/azRiGNYi1i2dENKRG1guDHg9CdLSXZ5XoRrf9T7w9A1K1lPxPq1YXxNy0/YIzSk+Gu9caLecNS0R7gmiPb1eL1+vF4/3hg6FkVcbsSxRv1YY+h4FOm6Iccb8u5x1IeO1ZUVRpJFQNKt9aFj9aGj9aGjdbP+0FEl0t2zIm7N/rVh+XokjrA8WnOknhdxtcNxhOWHtQhXGJF21MqLx6EiES01kpQky5QMHawPHaxLq5bE5VqE1YwYUiPddEAJrcLQgSgGW4xoLZIk9udEzRbm1sF9aiR19tUH9w3FoVer6TE0qEYtjL3RInNa5bQ8Cu2rFkO1PVqEK5i4vuZGtBZJWrI7inDNkbjBULySJUv0akbIW9Wwrm/Sauw0YtfQwK76wM4wbBV2Dg3sHKruHKoaX6tmtb4oopI+eyTVqjvisH41qzliYMfQQN7WjAqZMXjyxTDwP/wP/8P/8D/8D//D//A//A//w//wP/wP/8P/8D/8D//D/2zCp5lWpthZ2sk2NknRwohKbBpnRCMOY5Nqdfgf/of/4X/4H/6H/+F/+F85/K944H/4H/6H/+F/+B/+h//hf/gf/of/4X/4H/6H/+F/+F95/G/fwSOPrtt496LlBEFMTDy6buO+g0fwP/wP/8P/8D/8b0L8L80t1YeH68MjQ3v27l/56LoTJ/vHAWCiOHGyf+Wj6/bs3a8uQddhHLWHqVD2MFahqx9p1I/U44hKYvVx7VhXw9Jm1MLhOMLWjJXt9GqxM9UP1+v5whQLlmFIQ4caWQoVGUxjMAqtPFGfcM25RKTir6YwHVBCVSVpCboo9K+DUYR7NdSwmFO4yFxxc+pOmEal+VnsQ1ajMkwrXvcuXovOZUtpv9nVlDXtTCGTHChUq6SCVm7Rsrrj61BsVGaE5pS6lFaefE1kqKZGtmbVzPpqebZ4xdXqA0o4fSvbwyTxyvG2NBwGpguZI5ze1mpsl2MwjqFikVc5iMMsscSgGmZ59PXkC2G04H8rH11XGxxqNptP7BsjCGJiotls1gaHVj66rrvZ9zitiP/hf/gf/of/TTX/E0IIIcLy8HNH/rdw8X3nz5/ftH+MIIiJjPPnzy9cfF93s+9pWhH/w//wP/wP/5ta/icroKaD7fjfXfcuGx8ff+rAGEEQExnj4+N33bsszL4fGRrrSiRpRfxvYvzvNz+w923ve+ltH3ixMXRw69aXL7ti42VXbOzrC/C/Nvzv6KG+ZcuWzZ07d/bs2bNnz547d+7cuXPnzJmzbNmyo4d24H/43+T0vyMHt6xft2LmjJu/ceWV37jyypkzbl6/bsXhg1t6N/+bZP4UHWzb/545OEYQxERG6H/nz5/vlvyFEaYV8b+J8b8/+NOx33r//tf/2OxQ/h5/8fzjL56/7IqNfTuDKel/jSFrm930vzNnz2mxdOlS/A//m4T+N1jt27Du4enTr5m/4J7VazY8s/nlZza/vHrNhvkL7pk+/ZoN6x4erPZd+PzfG/L879lDY88eGhMtEu5FEEQbEfrf+Ph4d/0vbBb/mxj/u/QdG9/4Hxa//pLPXHbFxhe21q+bOe/6W+ds3XZMUsBe+d/w0KH777v3zjtmz51zyzzvNi28ubd6c29dtvSu7lpgY+jgxPtfr/N/uVe6em1PkTqTxP+EELn+J4SY/P4nhNDEznrmL5T/DVb7Hrxv0axZ3toNT89dtuNvvrPzg18MPvgPL//5156dPu+5Rx7dNGuW9+B9i2wK2Pv7/y7fJ95i+F+9UdMivAI9f3js+cNjQohmYYQQ4V4EQbQRPfW/+uDR3BVMXDE0dGRIWqlkKCkZDONwGENxRDXNci1cC5oMHqoPHhqKI7mjLmpn6FAY2sIlQ0aEWjaUxqGhwUP12sEwhpIYPDgkrWyS1Dd2V0PdPYmb5q592wdevOyKjU9vOXfLzDmrN25evXHz92+7/eWgetkVG3f0BeFe0YImtQNDWqRNHYhCr7A/iqhkfxL333fP3Dm3zp518w82+uvWrXzwwSV33z3v3nvuXLL4rvuW3/vA/YsffGDJgw8sWbbkrrq0VxzRqiXxGiVJKFvNaAwdWFKMu+++K6Mdbc2UMI4c6lu6dKl5rVm6dOmRQzuGkrVRBvbqYV36ZCCKwSRqewZr0tc4tPpCiPjz7qGB3YNxyKucCCEGa7ujGFBCqTOgbx0c2C2EsC6YElfYFYZWnn6t7hqs7kqqhZHtpoPVXYPVnUkIIaI/B3YNDuwMI9S1qPHqrsGBsILuZ8nuUcS7y+0PVncODvRFUS0UmYNXqkWf+6MQQgz29w1Wd8ShVd5hhlLev2Ow31KnVt1eq26XvkYx2L99sH97rX97rX/7+rUPz5rlrXt86/973a73/sOub845uuKJxspN9VsXH/r9L/zgL762YclDT8+a5W1Y+3C412D/9sH+YLA/kL7aoxZHXN8etTiirydeCKNl/3vxyNiLR1r2v3Cv7kbSbPhB/tNa0/x1sTZlrWY26zoordz1NWMYGS336EwSkzzwv6nhf5ddsfHpLWdvmzVn9cbN23cf2tK3f+Vjz1wzY97L2wcTBeyF/82ceePcObcuXXL3ubPD585FsWd3sGrlAw+vWL7ykftXr3rwkYfvu+7aq7rof0O1fUuWLHFdFA48/0Lf9GuPLrjr4MGD7fnf8uXLL5T/WS8TVv+LyjP9TwgRql7qMVIFoShgd/xPK1E2Sf6X2lu0l93/kk3q2TAb6Y7/2SWvmCZa/S9uZEdazaqA7frfoQNbpk+/Zv1jT3/lhr7LPh/8ty/vGKi/ev61V5rN8Waz+fhzx37j4/d96qsrH179+PTp1xw+sGVS+9/LR8dePur0v29+/auPbVgXft66dcu3vvmN0dFRIUS4V9cjbDn8mcklrmpmoauO2Y7cl0mRarkdtXEURBkC/7vY/W/Llpcvu2Lj5i2nb5wxZ/XGzbsPHDtyYvDA0erz2/asWPfUNTNu37K9FipgL/xvxowbbp83c9nShY9teHTjxjWbNz++f3/fubPD584O79j+0qqVD6xe9eCqlQ9MpP/V160PfuVXjn704wcPHrzjjtuL+989C+dPmzbt6kymTZs2f77XU/9LdpESgUreLgNT75K9tA9DugJ26n9Ckj+hiqCI5G+X7m3VnVJ93f+EJH9J5k9I/pc2NeH+VyT/l1STtc+ugO363/q1K+YvuGfBA8F7/m7Luz//3O//w/NfuvrFD3/h0c986+mRU+deOffK73/2/l/6yPzv3OrPX3DP+rUrJrX/bT02tvWY4n+jo6Ojo6Ph5/m3fvWWq744f9Z3Z934jfm3fnX2dV8K/S/cKwnr34qMcnOTtbJW6GpQa1kbmLWvZJP52XpQufW1ZrVdsgdvdk1M7cD/Lmr/C+XvuS0jN8yYHcrf0RODB45U9xw6uX3P0ade7HvA35QoYF+sgFb/0/4pKJ7/m3/nnAXz5z68Yvn99y9avvye++6794nH1508cejc2eHdu7YVz/9t3vy4HG3738DTm/d89nMnvv2dlvzv+uuvnTZt2qbntl2Zyabntk2bNu3aa67O8D/9TLblf+oHy7ytiPN/IpwFVqd6J97/chKBsdKJeNpXJsnw5fpfMv97Yf3P5IL438wZN69es+GLVz377s9t/q9/vel3Pr3h169Y+aYPLv+tK5bt33tgx65Dv/KRuT/33tkf/ftFq9dsmDnj5kntf8HxseB45H+jo6PPP//81q1b/uzP/mzhwoXNZnPVvd8/9fzfBKu/VH36H6ub/nbD0q+F/hfupYVcnnzO+KB9Tkqyd0m+Ftmq1XT16Npk3TfjMJPBmzWzWyZKFfjfRe1/l12x8bktjetunb164+YDR/qPnhg8dGxgz8ETO/cfD/r2vri17wfPbl+++vHpM71t209cdsXG7PyfXf7y/G/B/Ln3Lb83nP89dGj3E0+se/CBJY88fN+J4wfPnR1etfKB5cvuKZj/k+QvP/835ubMmTPVavXgwYNz584p6H/Tpk3b+NTzG596/guZhHWmTZuWnf/T5K9H/pfKRwH/i01LnyA2/U8zm+L5v2y0+/+km//s9/8JaV44Hkkh/9P7vdjyf8Z5c/rfN6688pnNL//+3637nb/a+M6/WPuf//ihn/u9e3/5Dxbece+63Tu2/M03HvzZy2f88ofmvP1jtz+z+eVvXHlluKPe/iTxvx0nxnaciPxv69YttVotFMG9e/c+tmHdLVd9sfr0P25Y+rV1i768b92Xli+YHt7/F+6lhVweHqRcaH7QPidfM/aVG3dtNVvQTr1cwdyaMSRrNbMjV2HG6SJKFfjfRe1/+/duu/bWOas3bn7l1bG/+/v/+ZE/+vN3X/7Bvn3Hdh048Zsf/PSlH/inX3rPXz/25HNLVm78/m2379u9LXf+VwjR6v1/C+++/YH7F7/4wtN9fS+H9/+99OIzSxbftXrVg+fODgfbXli8aEHx+d9Y/vL970wmbfjfmvWPr1n/+J9kEtbJ9b/I5DqY/xW9yf8V8T9ZAdvI/wnrRLA0/9uG/8mTv0Xyf8n4L9L8X9Jsdv4v9L/f+9zDb//k6l/8g+X/7vIFl7zDu8HbuH/n1n/81vK3fsj7P//4rt/62F2Xf+oe2f8G+wNp2BOf/6v3RzHUXx/qHxrqD69AO0+O7TyZ+l+YzF+/ZtW3vvK3d373o7df9adPP/C/Niz92sPzv3TkB1+6Y86tof+Fe2khl4fHKReaH1yf5R21RrSWTbTWrLubXbtK5O4yKsh/WvuVP1hHS5Qqeup/g5LxDKZxaLB2aCiJgYNhDNaKxcCBwYEDgwMH9agdGKwdiLceiL4mMWCEtby2P4qBOLSvXYrawP6aUrKv7fjuzQtOVOuvvDr2v7977XU3L/jAhz6+deehvn3Hfu/PvvmeP7v2lz86e+MPHn9w/XPfvXmBtNfe9qI2sLemlsycccPixQuWL79n2bKFixbNX7ny/sOH95w7O7zWf+SehXe8+MLTZ8807l1453XXXDVY3RuKTq0aRWo/VSVqA7trA7uTatHXOEIRkf3voYdWaJH432233TJY3R1GLY5BW0ybNm3FykdXrHw02/9WrHz0keasadOm1fp3R5G2vMsWO+OIS/q12BlFdVetuksIEdbXP8TV5PLUEvrjmv1qTdtnV504+mr9fdKmvszQ9uqr9ffFQ4o+m3tZL5e1/h21/h1xnR21/h1SYRpaYfw1kRVXze2thhCilsqNselkUDuZqk9U+aQSSbW0Kflzv1SnX410r221/m1pm+HX/m21k9tqJ7fV+rfNnHHT6jUbPnflqrd86N6fes8dP/m7c3728jmz7n5i0f2b/vN/u+N3PrHk8k/d/55PPfjZaStXr9kwc8ZNyY61/m1S+1vjCFuOv2rdpdWyYuD482G07H+7+8d290f+t3fv3r1798675X8/fMMfPDvznc/OfOe6Wz647Oa/PPH0l089/zeL5n3n6NGjof+Fe2khl4efw18ybatZzdWI3I751dqgtS/tl75410l9618e65ByR5gxAKIkgf9NAf87dnLolVfHvnvVNX/y5397+Qc/tmX7rh37jl034/Zf+MOZP/+Rm1dueOa+tc/2zv8WLZp/7713Llo0f+nSu0MXPHd2+MD+nXffNe+Jx9edPdNY8eCyXvhfNY+DBw/ecstNxf0vfOHHtt2HMyKs0zv/k50vUT2X/4XlPfI/U+wK+p9pga6QKuzI8D/Z5Ir7nxrd8T/rxVemi/6XCp/b/9avfWj+gntum7/+jZfN+snLZv7b3731379/5p988d6//Mp9v/Onyz/w6VUf+LT//r9Ye/2cH8xfcM/6tQ/J/ie1Njn8b291bG81vf/vn//nXzw56z0P3/AHT856z8tzf+2lmZc+O/Oda+b95fwZXwunhkP/C/fSQi4PP4c/Hm2rWS35rGHWMRs368sVXMPLaMTaVMb45b7MrxmH7DqNxJQP/G8K+N/h47Wh4dFa/VRtsF4dqG1+aWew+8i9d33/J3//lh95/80PrX1q2ZpneuR/M267fsGCuUHwwtmzjZ07tyxbtnDhwtt39m05d3Z4yeK71q9bdfZMY9UjD/TC/w4W4Kabbijuf6OnTo+eOv3+D3xo6dKl1117zR9/6ZqvfvvqD37qig9+8vPXXnvN8uXL3/+BD4V1eup/QtK+yCra8r9kU2on+fLXHf+Lu8uxQJHpf4neyVdDR4ZvgvwvCsPbhC3/J1dLx6/tpeYRW/W/Qwdemj79mrXrN/3R39z+E++86d++66b3f3rBE0+9sPmFvk/807rL/seG935q0+f/+fHVa56cPv2aQ/tfmtT+t39gbP9A5H9zb/3+vFv+9ze//tW3/tJ/XLF84f1333LvLV9ad8sHn5/1G/dM/+TTT21K/C/cSwu5PPmc8UH7XLBOUhL+aK37JhWK1M8oyW4296itX+W/V65Oiakd+N8U8L8DR6u7D57YvufIizsOPPPynsef79u2+8h/+vBXfvjym1737htWrPlB7/zv1luuXbBgbr1+8uzZxtmzjWXLFt5zzx3PP/fkubPDD9y/eK3/yNkzjSef2NAL/7v77rvuvvuuO+64/Y47bp87d87cuXNmzZoxa9aM22675bbbbrnllptuuumG6dP/taD/zY5561vfGa7//Ef3ju0aGvzjq7/8G/94fbj+31vf+s6kWtf9L1WEdJfUAs1qVopl+LLK2/Y/dRhZOpg5fk0H7bPA7und9v2vwNjSOqa3KeWaAmpip8lfB/5X69+2fu2KWbO8R9c9/Yefm/umd9/43r9YuHbjlpe3HfjDz294x0ef+uxXn35w1fOzZnnr166INW6y+t/B2tjB2pgQYsXyhbdc9cXQ8G644YYbbrghXAVm69Yti+686cGbPnH/9f/9hc2bQv8L90r2NT+EJIXyT1SrIxdq+8q7az2a5WYj1uGZf1pbcBVqo3W1bz0h5u5ma0QZAv+bAv635+CJ7XuOvLTjwOYte554vm/9M8HWXYd/7n1fe927b/jhy6/rqf/dcvO1Cxfevn37i2fPNvr6Xl6y5K57773z4RXL1zy64o7bZy26d/4D9y+eeduNXfe/wYHdmtjlel62/0kat3vZsmWh/922YfFbP/O7P//n32s2m8uWLYsdbneturun87+WSKtlljtUz1AZe80uzv+2GPb8X6J6xvhdete1/F+tf3tG/i/H2wwFNMaveV77/jfQv+OB++6dNctbu37TrXes+cxXlv4/f33PH33uvs9+5bGb5z336Nqn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" alt="" />

2.3、非全局jndi配置

  非全局JNDI数据源是针对某一个Web项目配置的数据源,具体的配置步骤如下:

  1、在tomcat服务器的lib目录下加入数据库连接的驱动jar包

   2、针对具体的web项目映射虚拟目录,然后在虚拟目录映射的配置文件中配置JNDI数据源

  还是以上面的JNDITest项目为例子进行说明

  在tomcat目录下的\conf\Catalina\localhost目录下创建一个JNDITest.xml文件,如下图所示:

  aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWUAAABNCAIAAADxb+IDAAAOvElEQVR4nO2dW2zb1hnH2aIoAgwDBgwoBnRDm2LdigJBUbRv3cMe9lj0acCeChTtQ4qiSZsOGJA22JB5SbHCbdOsKKKsbrN1BZrGcRJbcn2T7djRXXZsS7Ik3yTbsWRZsiTLEkldqLMHOipFHh6SkhzS1vfHHwZ1+PHw+PA7Px8eiTKVyaYyO/XOJgVOqXZS3oIw0rkM4i15N1KJ236DWKc6ZwRWv0suLEPclUkILDoq0YiFFWY365yRd11YfSWEo5q2235jX+tX7bjbfiOTid933S7VjgmsfpdcWIwCXgAvgBfAC+AF8AJ4AbwAXgAvgBfAC+CFYQy8AF7oDgvgBfACeAG8AF4ALzRWArwwNC8MY9G4NQYvQnNWMBgMVmMKgUAgkDpRmfRm+r7/1jUIBoPBchbzQm9+gUAg4wp40caiKPDBsGEEvGhjGSkRQbIy0mUCXrSxjJSIIFkZ6TKReOE1vei59ILri+cdnz8XiURomtarlaB9kZESESQrI10mWV54TS8K4yY+fdbpdAIyDpWMlIggWRnpMuF5cR8WJoGR9aOnhz586od/PGH5+6/6zj5+86+/iEQiDMM0eGIj9UJb6ceeb/UlMP41NX4LMTJSm/G88Fx6ATGfofwnda5Xz5nHOjs7V1ZWxDUKRDrx/vSC4nmNKZU9pjWGqletsBbd2pZL26YyGdSfQlTeQFVqam6gWlE9rcxDI+Uzldre2L7vGi9cXzyPkudQ7Kzt4jGRxz9+ZuSfvx4496T57C/7zj7ed/bxSCQirlSamtIT71svNFyzXk3S2l1yYdIYbM0t5IV0+JHbo7KehmMaq6RV153cGw3XcwB44fj8ORT9wHbxGOnQ2FmE0DenftLZ2SmulJym8iUt0cHlhcqYBkYX/mWreYG0t1N95D6N6v2ruY14Ybt4DPnf8ZperF/CqDNrew0h05WTR06ePCmuVMUfTOxeubm0XIwoEvuSXHNjRxHOLm2h3IlqhXI1y/WVYq8qJi4l4QX5t8C2UK5QsZ3k/lH5W6hpjJp65Eq0XmW5FmptNuYo4/Ni4tNnkfe459ILCJkQ8xnWmZE/IWT66u1HT5w4Ia5UHS+QTHo9gA3FxkiPkv5Ufy715yWMMZW1qYynqB8/ONhwH8rWrHEvueflalM8Sq4lKl822RsNJ6S40Pi8GP/4GeQ9brt4DCETSp7DOtb3CkKmL996pFW8QLg/xdIwuRjC2aUUV9kY4QaZF4TfQi4Mu1dfXkgPaTkvkLr+URmjeF7sdW+YF5paqL4Pye05ALywfvQ08h4f6/wtQiYU/QDrpat/QMh0+c2HDTK/UFOP+sZID1fJC/XjCru3GV7IxRiBF5rqUXmuxsan+pdNXuXGkhaz1/i8GPrwKeQ9PnDuSYRMyP8O1r4rLyFkMh1/SLR+QQkkKse3APfXoDYssfWIyuUOkYshdUd9jKgG0U+5mrE9QD47Nr4lMdiw2g7F30K6V9rV2GaQ26PYP5S8sDVjW0hopPRXIDSG0D9yLSS3h9wV4jDj8yISidQ+lNVz5rFrp3/+3V9+9u2ff/rNqZ9cOXnkq7cf/fKtRy6/+bDp+EMvv/xyR0fHfjXOSD11CAXdeyBkpMuE5wVN006ns6Oj44SSOjo6nE7nvrQMx11QKwV9eyBkpMtEpVJrqeSehc+P0DQdiUTmlQTPoR1gGSkRQbIy0mWiEpvLNcPz7O0lIyUiSFZGukxUNDITXdkz8KK9ROn9tVFglTaMqCn3cM26f5soGAw2sqkP/hsHH3ontxbB4OZNvf+fGPjQW/c8Ax8OAy/awrrnGfhwGHjRFtY9z8AGtMPWixDSdAjwoi2sNZMoilIM4GMUI8GGNfACjLfWTJI+EyEqF0bqnvfgxgy8AOOtLSfqESAlghQfUo6AjW/gBRhvDQlBnD6I0KBIFpG7vzPJWffB04YGXoDxVpsNgolDUn78i/ZqmlYALIxj4AUY7waSiQALLFbUUwNgYRADL8B4a80kwsKE9H6kgTdKABZGMPACjLeGhMAtW8rdpzR5Y6L7gGlzN8IL3Z50U1K1umeuijgOcRyqVFC5Ui1XqqXynoularFUZUtVplhlilWardJstcBWC0w1z3B5mtuluVyByxW4nTy3k+eyu1xml8vkuHSO297htncqqWwlma0kM5WtTCWRriTSlc3tSny7Ek9VYqnyRrJ8L1m+t1VeT5TXEuW1zfLqZjkaL0fj5UistBIrrWyUljdKS/dKi/dKi+ulhfVSeK0UXiuFVkvB1WIwWpyPFucjxUCk6F8p+leKvuXi3HJxbqk4u1ScXWRnFtmZBfbuAjsdZqfD7FSYnQqx3hDrDbGeIOsJsu553owrwLgCjJO3n3H4GYefaS0vCB+pIN+ANMYLsO4GXrQXLxw+tcjQlhPyvBC+BF4cdAMvDjAvvEHWE6Q9gYLTl3cF8k5/3ukruAI0mRd2dcjQlhM4iQJEwbqnPrgBAy8OJC+mQqwnULjtSQ1OrFlGVvqGliwjy5aRpVtDi2ZrZMS+6fDlnX5aKy/0/5aXg2zdBzPwQpvahxce/+7gxPqtwdCEIxJeSt6L76TShUQyvxzdtntWe/r8NweXxtzbDl9BKy8am1+A24QXDRh4oTMvPIHdwYnV3oFgcGGLZkqiTuC46kZ8Z3h8sdsctDqT9rmCw0+LeXElhjWiqNr22soUWL0RReneBmMaeKEnL+4u0GPOeO9gKLyU5LiqXFdkd5iRiaWe/tC4N2ufKzh8tFZezM9NgNUbUZTubTCmqaOv2uXS9Oirdt7kga0YIwpQGU/gBR+gyAs+jOcFv200Xrh8O33Di97ZjXKFE/YA9btvRX2ylcrf7A+Yx9Ym7+bscwWtvPA4BsDqjShK9zYY02Je1BhRG9WiEuxQF5ZLY7AVYmuQM4EXwjAsL0Q2FC8mp1KWkYVEMi+CBe9aSbWKuGrVO3Pven/Y6k7bZvN2foqhmhdMvWxKEsUfOXKkrX4iimLaRoS/3FJRchTADm8CRAhYIQAI2yby/AJ7Lun8orbLsPOLmQVm3LU5blsulioiWAg3eF6UK9zqRvZ6//yAPTE5nbPxU4wmeEHICbfbbbVaa8H8EGorAS+UeUEGgYgXUqxg9yIViJGLrFb3NrC8qK1fYHnBF+bpuimG0dYvZhaYUeemw7MmhYXoJVetFsvcZip/azBknoiPe3f2mxcsywiR0T6C+YUyL7A7yPMLaRhhryJ05OJ5agh5USsn8GIPFvfXO43MC6sjbvesYq5K/fpFhauypUpiO983FO67HRvzZO7M5pvhhdVqJeSEVSAG5heHXYRMwGSmyqErLJSGye1VPIR8UhEv5GYoQmPXL2r3I0eNtH4xs8CMOuOjd5ali53Sm5ECW76XyN0aDPWOb4y6063lRTC69v5Q1+v/vtM/5uNLWJqORiKiKQb2c5+EcukubMmDlOJ5YX5Blvh+RG7cKhJBjgKKI1xNzNFX7ervR4RH1eYX/PuptXKD8GJiKtk7GNxOF0SwQPU3I2ypkqNL4ZVUT3/QfDs+6k5PtoIXAd/8e++eQQi9/mVHR9T6ho1+5X+nEELvvXsmGF1DCGHnF8LBJuSC3AZ2W/hTvVrFF8V6gBckXpDHf0t4QS6Rq42w3klevxCud4psqPmFfTbb0x+cnotxHKpW8esXxTK3S5eSWXrSFf3eHDRPxFsyv2BpmocFQuilN74/dr339z2OY6f2St5794zcEoZo8ItGviIv5ErU6AHwAuYXZOHfT5VuaIUCYZfKYOn9iCZe8OsXtfuR2uTCULzwzOcHxtdu9vuj65lyhePNVau8yxWOKVZydGk7x/rDiRv9ge6BZfNkovn1C4vFggTzi77+8G8u/PGJy6998q8xHhaxjQ2kbn7RKl6IbhMItzZyeS+65cFWInd2kYAXankhHbrk+YUiTdTzQlTezPsj0s9rGZAXs4vsVKhwZzrTM7DQNxhcXk3TxXKBLdPFMr+xS5cyu2wqy/gXtszDoau9wRvW9QF7qvn3RywWC8syCKFKWfwJdKEsFos0vbA3F03ygnw4oR5sgKgS6b0PzC+EIiSAVMq8IOwl40OuHsJRwkL+ZkRu/ULOwvdTjwrWL3gb6v2R2UV2Oky7fLlRV6L7h9DN/vm7/ngsmU/n2PQuu51jkxl6Nbbjmd3oG5z/vjd4fThqvh0fdm03//kLi8VSKZcUkcHzQnH9oiW8kE4EGpgXyDVPsT0iAS/kBM+P6Pv8CDMVLNhnsyPORM/g4tU+n2UkNG6P2DyrNs/quD1iHg5f6w1ctYS7h6J9t2MD9tSYN9P85zu7u7tZlqmUS5cvXcOavwTd3d3S9GpyvRNbQr7LUBMmDID5hSZpGpXAC52fT50O0e5A/s5MdsSVNN9evzG8cn1wqXtg6doPe74+FL1hXTePxwZsW6Oe9OTMruj5kdNXYlgjiqpti1KE5wWPDJGFl4DnBT+EsEQQrV8QFh0UVyIIB0rDRC0R7ZK2CttCAjWAF3ICXuj//RdTIdrlz9tmsmOe1LBjq38y3j8ZN0/EzBMx80Tccjs+YEsMO1Lj3szkzK7dVxA9z94AL7q6unhekOcXXV1dtUMUx9jhEMwvyAJe6M+LuwusN0i75wv22Z3J6cyYZ3vUm7a6UlZXyupOW93b4970xFTWNpe3+zDff3H66xjWiKJq26IUuXDhAs8LfopRW8gQTTEuXLjAwOc7D7s0jUrghSF4MR1mp0KMZ552BQoOX94+t2ubydlmcndmdm2zebsv75grOP009vu1GuDF+fPna7wQgaOGD4TQ+fPndclgHQXzC7KAF0bhBf/94N4g4wkyniDjCtCuAM1/zW9to1W8eF+1GJhfHHZpGpXAC2PxQuv/E2iMF1plhO+kgO+/2CdpGpXUfIQBH1wjhB4AL9pNwAvgxeE0mRfghq33KH5wAl60kQm8EFrvnAQZV8CLNjLwAtSkgBdtZOAFqEkBL9rIwAtQkwJetJGBF6AmBbxoIyOETn+9oWi9cxJkXAEv2sjAC1CT0sSL/wPXqXeuP+9HFwAAAABJRU5ErkJggg==" alt="" />

  编辑JNDITest.xml文件,添加对JNDITest项目的虚拟目录的映射和JNDI数据源的配置

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3 jndi配置方法(tomcat):
4 将此文件放置在tomcat\conf\Catalina\localhost下(没有目录就新建)
5 -->
6
7 <Context docBase="D:/MyEclipse8.5/workspace/JNDITest/WebRoot" debug="0" reloadable="false">
8 <!--
9 |- name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称,
10 为了不与其他的名称混淆,所以使用jdbc/oracle,现在配置的是一个jdbc的关于oracle的命名服务。
11 |- auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效
12 |- type:此名称所代表的类型,现在为javax.sql.DataSource
13 |- maxActive:表示一个数据库在此服务器上所能打开的最大连接数
14 |- maxIdle:表示一个数据库在此服务器上维持的最小连接数
15 |- maxWait:最大等待时间。10000毫秒
16 |- username:数据库连接的用户名
17 |- password:数据库连接的密码
18 |- driverClassName:数据库连接的驱动程序
19 |- url:数据库连接的地址
20 -->
21 <!--配置Oracle数据库的JNDI数据源-->
22 <Resource
23 name="oracleDataSource"
24 auth="Container"
25 type="javax.sql.DataSource"
26 maxActive="100"
27 maxIdle="30"
28 maxWait="10000"
29 username="lead_oams"
30 password="p"
31 driverClassName="oracle.jdbc.driver.OracleDriver"
32 url="jdbc:oracle:thin:@192.168.1.229:1521:lead"/>
33
34 <!--配置MySQL数据库的JNDI数据源-->
35 <Resource
36 name="mysqlDataSource"
37 auth="Container"
38 type="javax.sql.DataSource"
39 maxActive="100"
40 maxIdle="30"
41 maxWait="10000"
42 username="root"
43 password="root"
44 driverClassName="com.mysql.jdbc.Driver"
45 url="jdbc:mysql://192.168.1.144:3306/leadtest?useUnicode=true&amp;characterEncoding=utf-8"/>
46
47 <!--配置SQLServer数据库的JNDI数据源-->
48 <Resource
49 name="sqlserverDataSource"
50 auth="Container"
51 type="javax.sql.DataSource"
52 maxActive="100"
53 maxIdle="30"
54 maxWait="10000"
55 username="sa"
56 password="p@ssw0rd"
57 driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
58 url="jdbc:sqlserver://192.168.1.51:1433;DatabaseName=demo"/>
59 </Context>

  3、在web项目的web.xml文件中引用配置好的JNDI数据源

 1  <!--
2 JNDI配置的资源引用:
3 • res-ref-name:表示引用资源的名称
4 • res-type:此资源对应的类型为javax.sql.DataSource
5 • res-auth:容器授权管理
6 -->
7 <!--Oracle数据库JNDI数据源引用 -->
8 <resource-ref>
9 <description>Oracle DB Connection</description>
10 <res-ref-name>oracleDataSource</res-ref-name>
11 <res-type>javax.sql.DataSource</res-type>
12 <res-auth>Container</res-auth>
13 </resource-ref>
14
15 <!--MySQL数据库JNDI数据源引用 -->
16 <resource-ref>
17 <description>MySQL DB Connection</description>
18 <res-ref-name>mysqlDataSource</res-ref-name>
19 <res-type>javax.sql.DataSource</res-type>
20 <res-auth>Container</res-auth>
21 </resource-ref>
22
23 <!--SQLServer数据库JNDI数据源引用 -->
24 <resource-ref>
25 <description>SQLServer DB Connection</description>
26 <res-ref-name>sqlserverDataSource</res-ref-name>
27 <res-type>javax.sql.DataSource</res-type>
28 <res-auth>Container</res-auth>
29 </resource-ref>

  经过以上3个步骤,针对具体web项目配置的JNDI数据源就算是配置好了。具体的测试和上述测试全局JNDI数据源的方式是一样的!

 
分类: JNDI
标签: JNDI总结
好文要顶 关注我 收藏该文  
8
2
 
 
 

posted on 2014-11-17 09:24 孤傲苍狼 阅读(43883) 评论(19) 编辑 收藏

 

评论

#1楼 2015-04-03 15:51 巅峰寂寞

     
 

讲的好清楚

 
     

回复引用

#2楼 2015-06-04 16:14 小王旺

     
 

Servlet.service() for servlet [jsp] in context with path [/JNDITest] threw exception [javax.servlet.ServletException: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'] with root cause
java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(Unknown Source)
at java.sql.DriverManager.getDriver(Unknown Source)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:80)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
。。。。。。。
tomcat 7 jdk7 ojdbc7.jar 怎么破?

 
 

JNDI数据源的更多相关文章

  1. Tomcat下使用c3p0配置jndi数据源

    下载c3p0包: 下载地址:https://sourceforge.net/projects/c3p0/files/?source=navbar 解压后得到包:c3p0-0.9.2.jar,mchan ...

  2. mysql连接超时与jndi数据源配置

    昨天有运营说添加活动不能用了,我就看了一下后台日志,发现访问数据库是报错: at java.lang.Thread.run(Thread.java:722) Caused by: com.mysql. ...

  3. 为tomcat动态添加jndi数据源信息

    我们在开发项目的时候,总要和数据库打交道,如何获取数据源,以什么样的方式来获取,成为了我们即简单又熟悉而且不得不注意的一个问题. 那么在这里我说三种获取数据源的常用方式: 一.通过配置文件来获取 首先 ...

  4. jboss EAP 6.2+ 通过代码控制JNDI数据源

    通过Jboss提供的API,可以操控JBoss,效果跟在管理控制台手动操作完全一样,下面是示例代码: 一.pom.xml添加依赖项 <dependency> <groupId> ...

  5. Spring JDBCTemplate使用JNDI数据源

    xml配置: <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverMana ...

  6. Tomcat 6 JNDI数据源详解

    数据库连接池这个概念应该都不陌生,在Java中连接池也就是数据库的连接池,它是一种采用连接复用的思想避免多次连接造成资源的浪费机制. 最常见的连接池就是DBCP和C30P了,在tomcat中默认使用的 ...

  7. JNDI数据源局部配置(解决Cannot create JDBC driver of class '' for connect URL 'null')

    最开始,我是借鉴 孤傲苍狼的JNDI教程去做的,他讲得很详细,但是坏处也就是因为他讲的太详细.查了很多书,都是建议说不要用全局去配置JNDI,一是要修改tomcat的server.xml,容易破坏to ...

  8. JNDI学习总结(一)——JNDI数据源的配置

    一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");) ②连接数据库(Connec ...

  9. JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源

    com.alibaba.druid.pool.DruidDataSourceFactory实现了javax.naming.spi.ObjectFactory,可以作为JNDI数据源来配置. 一.下载D ...

  10. Tomcat中配置JNDI数据源

    准备工作: Tomcat版本:tomcat6.0以上 下例中均使用MySQL数据库 将对应数据源的jar包和MySQL的驱动包拷贝至tomcat的lib文件夹下 一.全局数据源 1步骤一:配置 在to ...

随机推荐

  1. Web 漏洞分析与防御之 XSS(一)

    原文地址:Web 漏洞分析与防御之 XSS(一) 博客地址:http://www.extlight.com 一.全称 跨站脚本攻击(Cross Site Scripting) 二.原理 通过在网站中的 ...

  2. 在ng中的select的使用方法的讲解

    项目中我们可能会使用到条件过滤选择框之类的东西,最简单的就是input.select. 关于select的使用我们通常会需要从数据库中返回数据进行动态绑定. 此时我们会有两种方式: 1)使用ng-re ...

  3. 一篇文章学LINQ(原创)

    本篇文章主要介绍linq的基本用法,采用sql和linq比较的方式由浅入深进行学习, 注意:此文章是根据真实表来进行案例说明,表结构如下:  表1:    Student(学生表)           ...

  4. 回文字符串的变形——poj1159

    回文字符串 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba".当然, ...

  5. windows环境vagrant修改静态资源文件,centos虚拟机中nginx的web环境下不生效

    最近上手krpano,本地修改了krpano.html文件或者xml文件,在虚拟机环境打开文件是修改过来了,在nginx中就是不生效. 修改nginx.conf中http{}中的 sendfile  ...

  6. Python nltk English Detection

    http://blog.alejandronolla.com/2013/05/15/detecting-text-language-with-python-and-nltk/ >>> ...

  7. 应用程序 system 函数

    1.使用实例 system("ps"); //执行shell命令ps 2.使用注意事项 system相当于创建了一个子进程,在子进程中调用程序.所以system执行的程序会继承主进 ...

  8. Nginx 之:nginx.conf结构

    nginx.conf文件结构如下: ..... events { ...... } http{ .... server{ .... } server{ listen  192.168.0.12:80; ...

  9. 由 MySQL server 和 mysql-connector 版本的不匹配引发的一场惊魂

    剧情还原 今天原计划给领导演示一个小Demo, 昨天在自己机器上调通OK以后就下班了... 今天上午早会后,领导说 “昨天,我让我们IT同事把新的测试环境搭建好了,XXX 你把要演示的Demo部署到上 ...

  10. 十六.jQuery源码解析之Sizzle设计思路.htm

    为了便于后面的叙述,需要了解一些相关术语和约定. 并列选择器表达式:"div,p,a"====>div,p,a是并列的. 块表达式:"div>p"中 ...