Tomcat JNDI连接池配置

    对于线上应用,我们通常将数据库连接交给容器,比如tomcat容器,那么开发者只需要通过JNDI的方式获取dataSource即可,不需要再关注数据库地址、密码等敏感信息,这样我们就可以简单做到配置隔离。

1)在tomcat的context.xml中增加如下配置:

    <Resource name="jdbc/localDB" 
			  factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
			  auth="Container"
              type="javax.sql.DataSource"              
			  username="root"
			  password="root"
			  driverClassName="com.mysql.jdbc.Driver"
			  description="JNID MySQL database."
			  url="jdbc:mysql://localhost:3306/test?socketTimeout=30000&amp;charsetEncoding=utf-8"
			  maxTotal="256"
			  maxIdle="10"
                          removeAbandoned="true"
                          validationQuery="SELECT 1"
			  maxWaitMillis="30000"
			  removeAbandonedTimeout="300"
			  testOnBorrow="true"
			  testOnReturn="true"			  
			  defaultAutoCommit="true" />

 

2)增加jar

    因为tomcat下或许没有相关的JDBC Connector的jar,比如mysql,此时我们需要将mysql Driver的jar复制到tomcat的lib目录下。

 

3)在spring中使用JNDI引用方式:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName">
            <value>java:comp/env/jdbc/localDB</value>
        </property>
    </bean>

 

   对于tomcat容器而言,我们倾向于使用tomcat-jdbc-pool,官方宣称性能相对于其他pool而言更加优秀,而且它与dbcp的参数配置几乎一样,非常便于配置。不过我们可能需要将jdbc链接jar也copy到tomcat的lib目录下,否则将无法启动。

   对于jdbc的url中配置,需要注意,需要将";"使用“&amp;”转义,否则将无法正常启动;我也遇到了一个非常奇怪的错误“The reference to entity "characterEncoding" must end with the ';' delimiter”,这个错误的解决办法就是“characterEncoding=UTF-8”参数作为url的最后一个参数即可。

高频功率放大器的设计实现 摘 要 随着无线通信技术的高速发展,市场对射频电路的需求越来越大,同时对射频电路的性能要求也越来越高。高频功率放大器是位于无线发射级末端的重要部件,为了弥补信号在无线传输过程中的衰耗,要求发射机具有较大功率的输出,通信距离越远,要求的输出功率越大。在高频范围内,为了获得足够大的高频输出功率,就要采用高频功率放大器。 本次课程设计的高频功率放大器的技术指标包括输出功率、效率、功率增益、由于高频频功率放大器的输出功率比较大,耗能比较多,所以工作效率就显得比较重要。本课程设计的高频功率放大器电路由两极功率放大器 阅读详情

相关推荐

ESP32内存优化实战:关闭WiFi/LWIP功能释放37KB IRAM的隐藏技巧

本文针对ESP32开发中IRAM内存不足的难题,提供了一种通过关闭WiFi和LWIP协议栈的IRAM优化功能来释放宝贵内存空间的实战技巧。该方法最高可释放约37KB的IRAM,有效解决复杂项目(如WiFi+BLE+语音识别)的编译失败问题,并详细阐述了配置步骤、性能权衡与测试验证方法。

redis7keeper的博客 131

TomCat连接池与JNDI

之前访问数据库大家因该都知道JDBC,通过JDBC去向数据库获取连接,但是每次都要创建连接,关闭连接,很消耗资源,比如很多用户并发访问这个页面,这样频繁的连接释放很有可能会导致数据库崩溃,效率低下,容易引发异常,那么针对这个问题,就需要。大数人连接数据库时都记得添加数据库的驱动,但是这里我还是要说一下,因为少数人有可能会忘记,比如我,我们知道连接数据库时驱动去与java程序打交道,所以这个东西是必须的。2.如果连接的数据库少的话,可以不写最大最小和等待时间的连接数,因为他们都是有默认值的。...

weixin_64765980的博客 4064

Calibre电子书阅读器个性化样式定制指南

本文详细介绍了如何通过Calibre电子书阅读器的用户样式表功能进行深度个性化样式定制。从修改全局字体、行距、背景配色(包括深色/浅色模式)到美化代码块、引用等特殊元素,本指南提供了完整的CSS代码示例与实战技巧,帮助用户打造专属的舒适阅读环境,显著提升电子书阅读体验。

vv45678的博客 920

java配置使用数据源

1. 数据源的定义: 数据源是数据库连接池里面的概念,连接池就是指当服务器启动时,先建立几个连接,在应用需要与数据库连接时,就从连接池里获取,使用完以后,不是将连接断掉,而是放回到池里面,这样就减少了数据连接创建的次数,大大提高了连接性能。而数据源就是给服务器一个配置信息,然服务器就知道怎么使用JDBC驱动,比如url参数,数据库实例名、用户名与密码等等。Java中的数据源就是javax.s

听雨轩 2156

开源 AHB不对称半桥反激电路设计(六)死区时间,谐振腔电流,谐振电感函数表达式

电流跌落可以使副边电流峰值和有效值降低,减小损耗,但如果开关管 S2 导通期间,谐振电流谐等于励磁电流,即副边电流A 点降至 0,会在原边变压器内形成环流,产生损耗,同时也不利于副边同步整流管驱动的正常工作,为了保证开关管 S2 导通期。在开关管 S1 和开关管 S2 均关断的死区时间内,谐振电流给原边开关管结电容和副边整流管结电容充放电,因此会引起开关 S1 关断瞬间电流跌落与开关 S2 关断瞬间电流震荡现象,受寄生参数影响原边谐振电流波形和副边电流波形如图。降到最低,变压器以最高效率向副边传递能量。

【Simon】的博客 1229

AD9361 LVDS数据接口时序解析与FPGA实现

本文详细解析了AD9361 LVDS数据接口的时序特性与FPGA实现方法,重点探讨了DATA_CLK、Rx_FRAME等关键信号的时序关系及数据拼接技巧。通过Verilog代码示例和调试经验分享,帮助开发者解决跨时钟域处理、IQ数据重组等常见问题,提升射频收发系统的稳定性与性能。

weixin_29186249的博客 128

tomcat下JNDI三种配置方式

JNDI的原理: 在DataSource中事先建立多个数据库连接,保存在数据库连接池中。当程序访问数据库时,只用从连接池中取空闲状态的数据库连接即可,访问结束,销毁资源,数据库连接重新回到连接池,这与每次去直接访问数据库相比,会节省大量时间和资源。 JNDI运行机制 1、 首先程序代码获取初始化的 JNDI 环境并且调用 Context.lookup() 方法从 JNDI 服务提供者那里获一

wangjuan_01的专栏 876

(遇到问题)(已解决)word敲入的公式转化为mathtype

https://www.mathtype.cn/wenti/wordgongshi-zhuanhuan.html 现在越来越多的人在文档中编辑公式的时候会选择MathType来编辑,因为它包含有众多的数学符号和模板,编辑公式时非常方便。但是也有一些人在编辑公式时没有使用MathType公式编辑器,直接使用Word中自带的公式编辑器来编辑的。当我们需要要共享一份文件的时候,这种用自带公式编辑器编辑出来的文件,在我们安装有MathType公式编辑器的电脑里打开时,双击公式没有反应,是无法对它们进行修改的.

计算机视觉 1万+

tomcat jndi数据库连接池

[align=center][size=medium][b]tomcat jndi数据库连接池[/b][/size][/align] 1. 在tomcat服务器目录下面的conf中找到一个叫Context.xml的配置文件,在其中加入以下代码: [code="xml"] [/code] 参数含义: JNDI (java naming and directory interface)...

yyyhhh0123的专栏 222

【新手必看】蓝牙的HOGP和HID、GATT有什么区别和联系

让新手宏观了解蓝牙HOGP、HID、GATT这三个协议的区别和联系

qq_51976334的博客 1565

SMPLify-X关键点映射与OpenPose格式转换实战

本文深入解析了SMPLify-X与OpenPose之间关键点映射与格式转换的实战方法。针对SMPL、SMPL-H、SMPLX等参数化人体模型与OpenPose 2D姿态估计标准之间的数据鸿沟,文章详细对比了双方的关键点定义差异,并提供了核心的Python转换代码与映射表构建思路。通过清晰的步骤讲解与调试技巧,帮助开发者实现3D关节数据到OpenPose标准格式的高效、准确转换,为动作捕捉、3D姿态估计等应用奠定数据基础。

weixin_29046035的博客 166

tomcat jndi 数据源参数说明

tomcat配置jndi

weixin_42185460的博客 494

【YOLOv12[基础]】热力图可视化实践 | 脚本升级 | 优化可视化效果 | 论文必备 | GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM等

热力图可视化实践 | 脚本升级 | 优化可视化效果 | 论文必备 GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM等

静谧、淡雅 895

Tomcat jndi 数据库配置 连接池配置

在Tomcat 5.5/conf/Catalina/localhost/xxxxx.xml(xxxxx.xml为你自己的web的配置xml文件) 中添加resource                  type="javax.sql.DataSource"         driverClassName="com.mysql.jdbc.Driver"         password="**

首席技术执行官CTO(Chief Technology Officer)|技术总监--邓斌博客 4572

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

tomcat下通过JNDI配置数据库连接池

tomcat下通过JNDI配置数据库连接池按照访问范围分类共有两种,分别是全局数据库连接池和局部数据库连接池。前者是在一个tocmat部署下的应用都能使用该数据库连接池,后者是只有特定的应用才能使用的数据库连接池。tomcat默认的JDBC连接池实现是 apache下的DBCP连接池,我们也可以使用C3P0作为tomcat的数据库连接池,但是需要进行额外的配置,本篇博客只介绍DBCP连接池的两种配

fly_zxy的专栏 1621

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

DBCP数据库连接池以及在Tomcat中配置JNDI数据源

本地Tomcat的JNDI配置

weixin_52937170的博客 1944

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

JNDI和在tomcat中配置DBCP连接池

JNDI技术简介 JNDI(Java Naming and Directory Interface),Java命名和目录接口,它对应于J2SE中的javax.naming包, 这套API的主要作用在于:   它可以把DataSource对象放在一个Tomcat容器中(JNDI容器),并为容器中的DataSource对象取一个名称,以后程序想获得DataSource对象,只需通过名称检索即可。...

swebin的专栏 707

Tomcat配置JNDI资源(Tomcat配置连接池)

Tomcat配置连接池 在你的tomcat的conf路径下的Catalina下创建一个与你的web项目相同名字的xml文件进行如下配置 <?xml version="1.0" encoding="UTF-8"?> <Context> <!--给资源取一个名称--> <!--默认不需要进行修改--> &l...

墨鱼菜鸡 426

tomcat配置JNDI资源,,,使项目通过JNDI 来获取 连接池

tomcat配置JNDI资源 作用:我们将 连接池配置到 tomcat上, 这样tomcat下的项目可以 通过JNDI 来获取 连接池 需要到<Context>元素中配置<Resource>子元素: name:指定资源的名称,这个名称可以随便给,在获取资源时需要这个名称; factory:用来创建资源的工厂,这个值基本上是固定的,不用修改; type:资源的类型...

失意渔翁 1146

Tomcat下配置JNDI连接池

 Tomcat下配置JNDI连接池 转自:  http://hi.baidu.com/fgfd0/blog/item/7a7a2a97dc8bbc6955fb96d5.html 经过几天的努力,终于可以连接上连接池了,其中参考了很多大侠关于这方面的贴子,现在将这几天出现的几个问题写在这里:一.在tomcat_home/common下放入jdbc的三个驱动程序(一定要的哦),可以

灌水专栏 1132

以oracle数据库为例配置Tomcat服务器JNDI数据库连接池

前两天学习了tomcat的JNDI数据库连接池的配置,今天重新自己查看tomcat的官方英语文档再配置一遍,加深印象。 首先JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。用户可以根据需要按照相应的配置取得对应需要的服务。 我们知道,如果每次程序访问数据库建立一个连接,是很消耗数据库的资

Wion Wan 1533

Tomcat配置连接池【JNDI资源】

Tomcat配置JNDI资源JNDI(Java Naming and Directory Interface),Java命名和目录接口。JNDI的作用就是:在服务器上配置资源,然后通过统一的方式来获取配置的资源。 我们这里要配置的资源当然是连接池了,这样项目中就可以通过统一的方式来获取连接池对象了。下图是Tomcat文档提供的:配置位置:1.你可以在Tomcat的context.xml里面配置,但

Marvel__Dead 胡艺宝的博客 906

JNDI配置tomcat数据连接池技术

JNDI,Java Naming and Directory ,称为Java命名和目录接口,是一组在Java应用中访问和目录服务的API。 下面将简单写一下JNDI在myeclipse平台,tomcat服务器中的配置。为了避免代码错误,我们一般从tomcat文档中直接复制代码。 准备工作:打开tomcat服务,在地址栏输入http://localhost:8080/,打开该网页,找到Tomca

zh_yy9的专栏 731

Tomcat在content.xml中配置JNDI数据库连接池详细

Tomcat在content.xml中配置JNDI数据库连接池详细 name: jndi资源名称((Java Naming and Directory Interface,Java命名和目录接口),通过这个名称来获取这个资源,这个资源名随便你取,只要不重复就行 auth: 指定管理资源的manager Container :由容器创建和管理,Application由应用程序管理 type: 资源属于的java类型 在为javax.sql.DataSource driverClassName: 驱动类

梦凝哲雪 1150

tomcat7 oracle jndi,Tomcat7.0 jndi连接池的配置

测试环境: ubuntu 11.04Kernel: 2.6.38Mysql: 5.1.54Tomcat: 7.0eclipse: 3.6Mysql数据库驱动:mysql-connector-java-5.1.17.zip因为打算看看后端的数据库操作,所以就搭了环境试验一下,对于普通的数据库连接(使用JDBC的方式,比较简单,所以就试验jndi 连接池)1.搭建好tomcat服务器在mysql建立...

weixin_39532699的博客 176
上一篇: GRPC原理解析
下一篇: Spring + JPA实现数据库读写分离
iteye_19607
博客等级 码龄8年 34粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值