JNDI--Java命名和目录接口

时间:2023-03-08 22:38:00

JNDI主要用于在容器中配置某些资源,让所有项目可以使用。
JNDI可以提供:

1:数据库连接池。
            自定义连接池
             第三方连接池
       Dbcp
                    C3p0
                     JNDI
2:邮件服务器定义。
3:加载任意的类,让所有项目都可以使用。
        JNDI:[定义在tomcat容器中,所有项目必须要通过查找的方式获取这个服务Javax.naming.Context 环境(ENV)上下文。
                     它的一个了类:InitialContext

配置JNDI,不用发布项目

1、配置tomcat/conf/server.xml

 <Context path="/aaa" docBase="D:\\Adnroid\\Workspaces\\day25\\WebRoot">
<Resource name="jdbc/mysql" auth="Container" //name--JNDI名称 auth--JNDI拥有者
type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql:///bookstore?characterEncoding=UTF8"
username="root" password="mysql" maxActive="10" maxIdle="30"
maxWait="-1"/>
</Context>
</Host>

2、将mysql-connection.jar放到tomcat/lib目录下

3、在java项目中引用 在代码中直接查询这个jndi:

 //1、声明上下文环境
Context ctx=new InitialContext();
//2、查找apache环境
ctx= (Context) ctx.lookup("java:/comp/env");
//3、从环境中查找JNDI
Object obj= ctx.lookup("jdbc/mysql");
/*第2,3步可以合成为obj=ctx.lookup("java:/comp/env/jdbc/mysql");*/
//4、测试
DataSource ds=(DataSource) obj;
Connection conn=ds.getConnection();
System.err.println(conn);

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA7wAAAAyCAIAAADwc0BVAAAUdklEQVR4nO1dOW4rSRKtS8wpJJM0xpsDyOAJBPoydAgBhBwdoD0ZAgSIbvvtNSCHQF/jWzzCGLVFRMaSS5VI/n6Bh5mvWjIjIyMiXy7F7s7n8/l8fn9/P4/y/v7+x5///PHnP+fz6bDt9sfzjwit63TYbg+n5H5y7cfkuKe6EZuQG4tKueWP+24F+/RWb2tl9dtLuJ9ulqTktCrbB732rNMLsnCp2+mw7fYH0YTTYbs9HBx9Ms27tIvftPJOGjodtt1+P6scakgekKUe992PJd5yUXvwZ7S96ChwdTJnm/W7QM9sOfmOxqCZwjTJjzXldp+otQfcqpkh/WFi+sOvLsrbpb12+yFgJOXRTKVGbnKGs+3D5otd/38qad53owwvHecrIgyOh+10dXyK1DS/SGKcFkRK3h5O44jJy7EGkqTwwdDHfdd12/1+O2symCF+S9rQIM2kPL3MMuOM7ePW0EvWzMDaSUtkes5/yMdSGQOUOQ4xFHvXuj4ajwVDuUto70o/HJ1mVjaTNE9XuHV0Hi3LpPrQLkv1SX1Ma4vZWGYsotvwJ9Or/2O4xB2VXMwIqLT7rI5WHcoKtNtUXk9NaiuMiuYHadHJVNyLc8P5vTxTl4jOrhuLHrRaahWiWtxM3Xa/q1m3wkSzaOkzjU2jUfKxJbJxUULoyyFFEG8iY2h/NbM5DmdOWSWpYUrlNClO9FGLI15WbqzpYuZ+p2pO6JRMb9+19ElyAlWlInB4IUt4muchsinMbmp3R3TFYP3UXQqM3OYMZ8WHwxc90sw75LgXXIQyvP5Gbys6NqUv9vf2499zOaSu4547kEiGtIWSKk6+wjibzCwZbyWGUxzT7E1aUYlxVGvoJWsqTs1MzasYQe0Fq8yUklO/mHXWrqfEpdwlYosRpxE+U0makxmxbg1mO6Kcqo/wMaMtvLH600y38YXUdJOmPC8ShxcJO+0anXcqHa34puG6t6u8kZqUOIsrSogyJ3hWgq9OwlWJyA4r3oNuS41YMEJeS92kQla12uN1JqKtsa8EjUpfWSIbxwmB+qdN4I/77XbLQipszhhnyvBAGRORoWTmwxOLok6iDfGioNxY00V/wK1adL4owb8rq1NNt0Dg8EKW8DTPQ3RzCl5PuzukK2JYnS2hRqRv5FZnMHzYfzGbNGsekWir/dtoTTLbMetSHLdjmZDK9nAyzc6pbPSWNJyeNVkCS8ssNQ5j8IQJpCVrKorJODNvYgT9MbNIwQbI05rO7HpCXCpcwnzXmghVkOb0OTk+K9YwY1rVJ+FJalusxspxKE2cY2ZV6Ca9ZPEF1Vw67zQ6mrun6bo3q7yamji3C8LE1ITYxBoBqpNwfSIywsoYt42WWoW4IS/1p6nWNlS9iWgR3BNM0qw3Km1HazaOE8LpsO32+71OAGZGvT2cjvuBLAsF3OYkbPx02FoDkTQgI6a6v5nsNjfWdCkolt61GZt/14naKG/zP+NOUfnI+FeFpzkewpphJfPkL4euqLEiuiTTyLozTBrIrhOaJD6c+2ILaa5Lx1xZdQjhZtV8ceSreZSof2ouNZdIsRI0JyW0OQ7QzLEqYVdhbhBq6eZNjGA8xpUX4tOOBtKc4xImaU79sJw0G0bWQpFbY2HSzBOcm5V1fnbcd/QwMH9oy865LM475z87K/ZvXXklNY1b/nKgKCXNGXygOgnXJyKTS5VMD7RCwpAnT1tUOo80Z5pICPGEFtK8SDbOI83ddqsv2Q7qETJ0TBNSQJqF1c2RcrxvtWYoJR7ii2LN1COvWIsi+cOEE7+eIq2BIwpZxtNsD4mbl5DmgK4cxVKU9KVcI59anCHyYfPFc9PxDCVvWfl6LuRwOCXtTtMlmZxO/zwdtgrdYG0/7o1VqNNhu93v2UQt4y1uOHVmRxRVy8wyjhsKVslCuCKKeRMjWI/RNkt3JdFJzUHZunI9JS7lLsHfjfywkDTTIokhWUmmNegNmpAySLPVFt1QtHDRSukt6gZ3EgWqwyddY/BOpaNPh4OMEdt1b1V5LTVxDazgC45nMJsknd0PZ01JuC4R2VxKjMNeS7VC4lFgepz2u6ha7fEqE5GBRnqC6PNgJsB5dks2TkszEwJVlebM+fZ2O5OraQs+6CMy5s6FqZGXjD/8+XTkDeJIaYAXa7ok7CtRiFk4aR5LyPZdqzqFzTDrVgaO+GsRTws8xOFaSXfHdMWeNZCuyjJyxnX9AY/rxSX7pHkk88QcfNHxHCejuRS2VDlMDPZ7xou0uhhDTS7SqyqvnR+il7LeYoYzHpOkkZeZYRzdqtwaSslMN8si1LyJEazHSLH82njldBi2ApX+0a6nxKXcJZjVQz/MIs2ziIymZTjbGlQdY5nUJM1GW1IaKQv3ipWmYtSrE5lDsYLsGp13ah0dBG0SkjeqvPIgvccGhLQi0kKe8c7Mb89WYqhLwtWJyB62RQ96LTVjYei8OeSVJMz7PdFE9niticSwnzZFqppHmluysVKalRDSJ/ZHmsoMMh3yM31M40LnFaSzSJXklcw4ynmmljRrxSa2Srrf8TddH3vQbgwc/ucinnb2PSRtO+nYtLtdunKmbEr1pRIjh9f1B6x6wxfP5/P5GJBmSC+ENEOs2UXJ9O3HJAymSK6yVYOU6tZsjLpqlynlqpRfSa5auUR+Rlu136/dUMvqd+2thZTJIv05FHKLviH4/60JSHOWJKu5/2a5GdI89FprfF7zjKlEt8X6Z6mCblr5leSanS2V9bU1u+uqDSX3q66ptGsVufqX3bvVL15QFvHe477/gfsb9I0rz8K+gDRDSuVmSDNkknHLdpHCfrqjb1p5SLUs2u8/Jcuur2C1BmIJfONCAtIMgUAgEAgEAoEEAtIMgUAgEAgEAoEE4pHmdwgEAoFAIBAIBPL+7pHmv379DQAAAAAAAAAASDMAAAAAAAAABABpBgAAAAAAAIAAIM0AAAAAAAAAEKCYNL8+dl3XdY9vdqFvD1139/JFnt+9Xrqdi+LtgfyU+sNnS1FfT5uu2zx/NN9dz84fL/ddd//0fXGzF+L7+a4LfVXB7+ixNwGWN+jFm3Q/4N+JKe3IzLPgqFEEr17kOuBacb2ZH6S5AZ+71vT3/XznlFBy94pJs0/910Zx7F2xx65jSTrM6+P9z/XUpUmzosPHy33vDx8v96mdGBeJLbkGc/J0XttWohVXHDtLwY1BNiJ8PW20OGofNeqg1btyf62Qr/oQY2WWpgg/Bp27bw+tiXEsnBcycKpZStJdmnPmwllbKuv93JEHMl0lqLfEVr8Fac5sLUhzDl4fvZxSdBek2UYffrnGuWKPXZE0X2AUl1BJ8+V10Aio0RHfz3dOE4SdP3fdMu29MGn+mSx0NbBjUImjt4c0c4I0N7eCjUcjq8syaf8w4XCvj6SonoCOd/tJMomsZtL8ueu63VMSm6IXXh+ryaKYp4nMIGloWG/Pqolh3x6ymh/Ue+sAaW5Aa/rzWULZXZBmB0Vp6Io9FqT5AjosRZqTOfBSvXlR0ry5/5n9rquB2Wuvjwqjen1M/AGkubUVu4dHRjDuHnd5GezraeO0V7nL7dNKmgcPSTpC9oI/9w4baJLmsQnWkU5Rb72jBvXeOvJIM1ui77QFErkgn5Dm3iONtXq2xZD6tGbx7+e77v7pe94iHDZPN88f4xxR9rd0AqKSwqjMFtkFRjpz+ANb6d0MO1duSwnSPG5SU4vplrS3s6nmtlZDF9NyRDfRdz1OrPuD4XWpJWXX8x2xMp2dd22tyi2ZVmpr5ZLmkeqRwsvit8DrOmV9Qn8x1ko7KZExAKxMmlk5P0ma83Ndvuf0HOKZjtPqMKzY383esVY+yvJGbiaMYlBbVO7fEp5pjhrR0R0nysKsYtQb57pAq5bMX4XPXdftXvv/HdTbvY4ZLBr3XdKsBi8zWiNpfnsYipLl/CBpZutHbr3+BCNuqVNvFKE+FQl5Xe04mI3ylea0R/mmhrbSTBqfbEoqmyBallHbf7e5f/rux577OzaHSzmrcALxwNfTI3nYbZHdW5HOnn+33g3szP+UNnfvMtKcbG8Flpy0VcmBr5X8kk+Uw1KPuxyuxL/jdaolWUzK/WjBBlydnXfjWHBolmsNX6uQNHvWcHXO6d+qKAu0UrJ/ZnJckTT7QdeAUGc/Qqs9Z3zxc2cMw7a3B9k70sqH7+0NmdDr+s8dM0vXDS/O1z1/Dut1M0OQVZx6gzgKtGrI/LUYHXskoJ+77vFN8lF73B/aaw9G6sLK2OQ20izCxDzU1MJWY9JMeadbb0tjg3qjUdLpEUUrZzegbBzMxgKkOdl2VEizXN/lA3Y0clgrzUPj50kMGf7ljryoqGwjtZw0hyvNJIQWuevaWXEO4mr+XeJ5CmPO6UHLNYN6E1LFYkBft+O6kQmlsjDjrgjKmat/UNUmgu54X+KTriUja/haaYuydvzytOXpHPRvS5T5WklrpJ9naTINumudaR6rvnv50r5nqkakc8X6d5bnTDafFfC2+6kaWdnb0srvQV/npkzodP14NmPUc2pLFmnOyoS58yvr4ew4YrPNJq3WI83DEv7rowzbYNxnX7+xtOztRg6+1ESaWbrjI3jTh4Cpwf1lCOIGXr1JEJUgqDd3lDQ9Vi5L24eBS8bBbLST5tSTgjPNOiEr7Rg1w9I1M65nMvIN6wFazAct8js1D4v90pxqVXlFy26z5f27079fNMYcWNJtTlSvuwJqzDiV8cnYM7W9LrGknyu5b5SdD2bvZsSC5RiRNRp+pMW3RsGUQD7fFGW+Vi5pLugRonMBaRairrgYoVSHvJXm3FyX7znzu1N17hlZomeQvfOi24Kjc1smtLv+62kzz4UGrjwtNISkOTMDl/w6xAJxFFujNvM34OPlfijw+/luc383H9JgrmWP+7ThvbAjcKuRZuXbOIsj6ZpkoYI0G/WuT5rjBsZr/5pDVo+D2ViGNKeHvh3STP24/kOEkDSnS63SA6xzfkGLgk4tVH6pu56d1VemtO7f5QfUvDVFxZJpR0QNoTQ3HLAV4b5kkGbf60LSTA0izRKFpfNuRiy4pNmxxmqkOVxZtPu3KcqCPqo/nLfqSjPdfRpCZokPwlrONLd4jiRYD5/6MKx4ew5pDqPbQkSaqzOh3fVfT5vpTO3u9dd49PZXAWl26g0zg5eRnHozSHOWNRS/cmzVBMKB6JhuLZD7pxwzvoMqOZ6R9IKYt5tetNzXDi3HM3i9S5PmlJFXkmavf9vGwWxcgDT/0ErzL5EN7VrG9SF6nG5V0lxI2rLurr7S/G2fljMt2eOHVpoVrLDSnOTWgpVm/91lV5pTU1/hSvNapFl+uGzRRyYrH89IX2k5vCh7P0PnWUOR62o9J5k+bZ6fZG43vL18pVla0uzBi600D6R5YmDTP8IPAdtWmoOM5NTbutLs+JVjqyYYGw68yZnj/uxL0zzHpXoNK83JQYhezElRwb5K2pz4Q0BzyZLUG50v9RDU20aanVlu2ziYjXbSLCdzH/xzgZzhLWqGeaY5IM1jXbELpktTdoviTg18zj0jW3vXtbPx4aA9HacWI4kyY3lMSbXumebazZTatBJ7XWzJ5G4eaY7ejWPBPdPsWGM10uzqXOZ1RVFW6u3ZSN81SVIhaQ4+UaIlFK4jZOqsK9ngOenq/v3d3CLX26Ps3RTdYQzWZkLfH4aF9s3zxy/2D2+fOkurjChzsopXb8uoEfhV7Ie/arzdIc1yxTFn3E8/bA1/PKAmsWg9QsyV831OVUVJvXz92K9XX3qva69Yt24kzWP509Q0co+/y+qNsMCHgHJOvNk9bEzSnJzj1r5FyP31jJA0zzsmyjaTfR48meV3xaTZ/vWMjGWDmruBnbXvoPmSvHmXV9rvgPCSo5P1Zvj5WmVQPT+zmDzM9bqMAwnyE7rMlebg3YxYMC3pW2M90uzrnO1Xad4QTtJ0prkEmpL+FqG0pPvJnbSGugypXG/R2Y/Qes8RnjAtANN1LMPb875IqZz5+N7ekAnti/x4Rq/88JOIWZ83hfVG+crLKk69OVNiz1bVmb/W2w1WpM/Ak6rZz4z8lQ4Q/Et3dQm/xiejYwbaoabsicTnzhip/1YXdOxf7TA2VUSBWc0P6m0mzfZ40TIOZmOJn5yjuw/jF8TSZJNo84DJxWnOFX1QtdI81a6MoLxS/ccoRoWVFcFEtJ8CzVteXeZuaGemdmIQ+64+yiaDtGXJoIsdrWIXl2eY1M01i8RYKkU0kVY6/GZW9plm992sWHAesK2RM/0QkjeFiHV2vc7LG26UlfTRIAW5klWt+nPdmWa5S6s9OVLP0rHZ1TmK0DrPSTxh0EF+gDhWSvo3f58wMJfpz15312ZCx+HHFeVpTSH5SC4cNaJ68wI/ySpNcRRo1ZT5a7w9e9PSGvdlrtOnNMZd9chsPDm35vDTwCoPbxTusZDXA4W1KVNQL3+m4MsQp96caW0iypqp4XK142A2liHN14um8+ysG5Zp8tK/NAcAAEefNNPz/bcROw27osDFkO4UA7l2W8Pb28b9ptNBwO+OctJc/ztrF0DZToeJpUjz8r80BwAAgzZe3gwTTbcygZtA/M0ZoBptFW9vHffZuZS3hwW+1gV+H+SQ5q+nDd9xu5WcvuZ/cwsAgKtEstJsn9G6JoS/egtcNeRuxvfz3a0MlBfAmt6+yLhPDgkgJAGKvJVmehLoFhLBdBBnobUlkGYAuCEkv0q22H9JBABM8PO7t7Cz8Xth6XEfABSUH88AAAAAAAAAgH8ZYtL8v//89+JaAgAAAAAAAMAFAdIMAAAAAAAAAAFAmgEAAAAAAAAgAEgzAAAAAAAAAAQAaQYAAAAAAACAACDNAAAAAAAAABAApBkAAAAAAAAAAoA0AwAAAAAAAEAAkGYAAAAAAAAACADSDAAAAAAAAAABQJoBAAAAAAAAIABIMwAAAAAAAAAEAGkGAAAAAAAAgAAgzQAAAAAAAAAQAKQZAAAAAAAAAAL8H/UCWw9k3eTDAAAAAElFTkSuQmCC" alt="" />

注:

一般来说不会修改/server.xml,会在aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAkAAAAAlCAIAAAAlXsGhAAAE9UlEQVR4nO2bPVbzOhCGtYL0KejTswKvICXnQOMGFgFNGkpvImxBNXtw+XHvEkTr1l+hg85c/VlxHGLdPM9xQRxZmtFIeqVxUCMAAECFqK9//uXi4uLi4qruUtdWUAAAgDkgYAAAUCUIGAAAVAkCBgAAVYKAAQBAlSBgAABQJeoPAABAhXACAwCAKkHAAACgShAwAACoEgQMAACqBAE7AWPMbrfr+/7ahsB8CGJ1DMPQNI1SSmt9bVviGGPu7++NMX3f393dXWt0OTOWqmf9kwUBO4H1h7MErbVSSim13W69sW6M2W63SqnNZhO66R6U3/Z9v9lsUo+sEIJYXRC7rmvb9hI1u75SSp3TBAJ2LeICZrc8v7Pf+c22zmR2ONfTn1rrpmmGYUg92HWdLeatjMaYx8dH+6D71s5/21am5lVBEKsLYtu21qNlsVruOllrnWplMvRLKceZrE3AfmHKVCZgh8Ph0vZkqH3tG4Zhv9+n7O/7frfb2dGfN9j1g1zv8pVLCOI5bd1gEMsFrNwqKduTXFfATnIKAfvPsdqObHnH7emsbx8fHzb5oLV22Qk32uSD9qZLVthHwrby5h4Oh/Jwem2NPx16PB5do65zw8Kh/dbl9/d3L+cQurnO/uz7fr/fPzw8RE3VWsssSmbVcJt3b+0rHKwE8daCGLqc6T0XGluybVuv2CJWZc6ak+EIh5lMIdoNRNSXsPISU8udkgIW7eGxYPiNgYDlJ4usvOs6d/Pr6+uktX0e0ycwa6sLgJd5sJbZWWrdkyGUD9pq397evAzGqSewwnBm2nI9Lu+HhUP77R3npk12y01KypeV9KfMmYTJeu9NQ2rts8PdVeL+9hIyGQjiTQUxFYJU73mhyXhxjlUpAZsMR2qYhQIW+hJ9dkGnpPBkenhy+Hn1hJMlWrk8/bvKr59C9CLtvpJzPvp3aohIlZ4tYIVbknxb3kevcGi/t8zZZIvbYjvsNl++SL9Wf3pmeDV460LJ5r3rOu89v3O/aZrn5+fC7BNBLPex9iCGLpf0nkxmzhCwGVZJJtcor0BUwKK+hM8u6JQzI9XDhcPPxFKIcrKkwrfdbuXQWqmAWTdmzFW713PnVhvpC53AStpyH6OFy9e+yQPySvrTZp8ya18+ldS2beaXWqY4/04QbyqIJQIW9t6ZAjZZUrYlmQxHtEChgEWfXdaplIClxnnenUIBk/Js+yrc812IOSlE9w4gP1eNeE1qjDkej9Lzrutmn8BKSmbachPY3Y8WDu2PhlMWG8fx9fU1HJQr6c9B/ETNJQRkfiNcoGWx/Hw7dZUpKUkQwz6pLojREEz23jkCVlJyDE6iWuuu6ybDkRpmJQIWfXZBp0w6hShf3E4Ov7yApSrv+/7z83MUM+VqAjb+HCon31dn5uooXg/KcWDreXp6cnNJtpU3t3x0RtuyN19eXjxfUoZ59qcmWF/wYnYl/SmbdjtK97LBq19+GybZ3AB1ObfC0BDEmwpi1KTJ3pstYOVWjSJ3qn7eVk6G4/v7OyxQKGCpypdyyhT8iKNk+OUFLFO5+8WN3F+mhvEi3NY/Mv/CjgAuDUEEAAsCBpVBEAHAgoBBZRBEALDcloABAMD/BgQMAACqBAEDAIAqQcAAAKBK1B8AAIAK4QQGAABVgoABAECVIGAAAFAlCBgAAFQJAgYAAFWCgAEAQJX8BbLkwrRlnCjzAAAAAElFTkSuQmCC" alt="" />

目录下新建“项目名称.xml”,在里面插入第1步中的代码

标准DBUtils的写法

 public class DatasourceUtils {
private static DataSource ds;
static{
try{
Context ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:/comp/env/jdbc/mysql");
}catch(Exception e){
e.printStackTrace();
}
}
public static DataSource getDs(){
return ds;
}
}