Tomcat 定制JNDI URL Resource

Spring整合Tomcat JNDI数据源实战指南 JNDI(Java Naming and Directory Interface)是Java平台标准的命名与目录服务接口,其核心原理是通过逻辑名称解耦资源定位与实现细节,实现容器级资源统一治理。在企业级Java Web应用中,JNDI为DataSource提供了跨应用、可审计、环境无关的注入机制,显著提升安全合规性与运维可控性。尤其在金融、政务等强监管场景下,结合Tomcat容器管理的数据源,能有效规避密码硬编码、连接参数分散、多环境配置不一致等典型工程痛点。本文聚焦Spring框架如何精准对接Tomcat 阅读详情

有个项目生产环境是Webshpere,WAS提供了基于URL的JNDI Resource, 而我们的自动化集成测试阶段使用的tomcat容器不支持这种类型的Resource,所以需要自己定制。定制很简单,先按tomcat定制resource的方式建一个jar可以读取url,加入到tomcat的classpath,然后就可以通过配置来使用基于URL的JNDI资源了。这里给出一个通过jndi访问文件夹路径的例子。

  • 建立jar,通过建立一个jar maven项目,然后在里面定义一个com.demo.URLFactory的类,加入以下实现,然后build出jar文件(例如:tomcat_jndi_url.jar)
public class URLFactory implements ObjectFactory
{

    @Override
    public Object getObjectInstance(Object obj, Name name, Context context, Hashtable<?, ?> environment) throws Exception
    {
        Reference ref = (Reference) obj;
        String url = (String) ref.get("url").getContent();
        return new URL(new URL("file:"),url);
    }

}
  • 将jar放入tomcat的classpath目录
  • 在tomcat加入resource创建方式,指定之前包中的类来生成url
<Resource name="url/demo"
              auth="Container"
              type="java.net.URL"
              factory="com.demo.URLFactory" url="./demo/"/>
  • 在web.xml加入resource使用方式
<resource-ref>
  <description>Object factory for url.</description>
  <res-ref-name>url/demo</res-ref-name>
  <res-type>java.net.URL</res-type>
  <res-auth>Container</res-auth>
  <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
  • 在Spring xml配置文件中加入jndi-lookup,就可以访问到文件夹地址了
<jee:jndi-lookup id="demo" jndi-name=" java:comp/env/url/demo"/>
JRuby+Warbler将Rails打包为WAR部署到Tomcat实战 WAR包是Java Web应用的标准部署单元,基于Servlet规范实现跨容器可移植性;其核心原理是将应用代码、依赖与配置封装为符合WEB-INF结构的ZIP归档,由Servlet容器加载并管理生命周期。这种打包方式赋予了技术整合以强运维一致性、统一监控能力和企业级安全治理基础。在混合技术栈场景中,JRuby作为Ruby语言的JVM实现,配合Warbler工具,可将Rails应用编译为标准WAR包,从而无缝嵌入Tomcat等Java EE容器——既复用现有Java运维体系(如JVM调优、JNDI数据源、lo 阅读详情

相关推荐

SRC漏洞挖掘实战指南:从信息收集到逻辑漏洞的完整狩猎框架

在网络安全领域,漏洞挖掘是识别和利用系统安全缺陷的核心技术。其原理在于通过系统化的方法,模拟攻击者视角,对目标资产进行探测、分析与验证。掌握这项技术对于提升系统安全性、防范数据泄露和未授权访问具有重要价值,广泛应用于渗透测试、安全应急响应(SRC)和红队评估等场景。本文聚焦于构建一套高效的漏洞挖掘实战框架,重点涵盖信息收集、资产测绘和业务逻辑漏洞的深度挖掘。通过结合自动化工具与手动测试,并融入近百条经过验证的挖洞思路,旨在帮助安全研究人员建立从目标界定到漏洞报告的全流程能力,从而在授权测试中精准定位如越权访

weixin_30561177的博客 351

tomcat配置数据源、url编码

&lt;Context path="/test"          debug= "99" reloadable="true" crossContext="true" verbosity="DEBUG"&gt;        &lt;Resource name="jdbc/xportalDS" auth="Container"          

Future is in your hands, believe it!! 335

28377D Bootloader

架构

a6100309120的博客 6012

Tomcat - Context Resource详解

Context                                                                                                                                    1. Context:表示一个web应用程序,通常为WAR文件 2. docBase:应用程序的路径或者是WA

特立独行的猿 3229

告别复杂配置!5分钟在Vue/React项目中集成讯飞语音听写WebSocket API

本文详细介绍了如何在Vue/React项目中快速集成讯飞语音听写WebSocket API,实现高效语音识别功能。通过对比不同通信方案,突出WebSocket在实时语音交互中的优势,并提供框架适配、音频处理及性能优化等关键技术点,帮助开发者5分钟内完成专业级语音听写功能集成。

weixin_28730353的博客 274

解决Windows 10安装语言包时遇到的0x800F0954错误

在安装Windows 10操作系统的语言包时,如果遇到错误代码0x800F0954的提示,这无疑会让许多用户感到困惑和无助。这个错误通常意味着在安装过程中遇到了一些阻碍,导致无法正常完成语言包的安装。本文将为大家详细解析这个错误代码0x800F0954,并提供一系列有效的解决方法,帮助大家顺利安装所需的语言包。

nntxthml的博客 3793

tomcat 如何解析Resource数据源

我们都知道在tomcat中,可以通过在context.xml中配置resource中用于配置tomcat数据源,如下所示即是一个配置例子。 1 2 3 4 5 6 Context>     Resource name="jdbc/xx" auth="Container" type="javax.s

lantian0802的专栏 2459

Spring AI Alibaba实战训练营-14基于A2A协议智能体应用开发指南

本文介绍了基于A2A协议的智能体应用开发流程,主要包括客户端和服务端两个模块的实现。关键技术包括A2A通信协议、Nacos服务发现、Spring AI Alibaba框架和DashScope通义千问API。开发步骤涵盖环境准备(JDK17、Maven、Nacos)、项目创建、依赖配置(重点引入spring-ai-alibaba相关组件)以及Nacos和DashScope的核心配置。整个系统架构采用客户端通过Nacos发现服务端Agent,再调用阿里云AI服务的模式,实现了AI能力的解耦与复用。

program哲学 504

Tomcat 6 数据源配置详解

用TOMCAT6已经有一段时间了,之前连接数据库都是用传统的方法。由于用数据源连接数据库性能更好,所有必须知道怎么配置数据源。下面是配置MYSQL数据库的数据源,在网上查找相关解决方案,后调试解决如下:       先说一下以前版本的配置:Tomcat 5的数据源配置跟Tomcat 5.5的数据源配置有很多的差别,Tomcat 6的数据源配置跟Tomcat 5.5的配置基本上相同。     以

观千剑而后识器,操千曲而后晓声。 2738

ADS基础教程20 - 电磁仿真(EM)参数化仿真

一、引言二、参数化设置1.参数定义2.参数赋值3.创建EM模型和符号四、总结1)在Layout视图,菜单栏中选中EMComponent2)在弹出的参数编辑框中,采用标称/扰动()设计。使用子网(Subnetwork)参数。这些方法是互斥的,在为单个组件定义参数时不能将它们组合起来。标称/扰动(Nominal/Perturbed)参数使用平面化布局场景,并且只包含端口和原始图形形状(如多边形、矩形和圆形)时定义。

XZ_ZC的博客 4028

ABAP SQL Hierarchy 全景参考,组织树、分类树与递归查询在数据库层的优雅落地

ABAP SQL中的hierarchy语法为树形数据结构处理提供了高效方案。S/4HANA系统中常见的成本中心、利润中心、物料分类等树形结构,传统开发需通过递归和嵌套循环处理,而ABAP SQL hierarchies通过将层级遍历能力下沉到SQL层,借助SAP HANA的层级函数支持,实现了更高效的查询。 该功能要求ABAP 7.51+版本,支持两种实现方式:CDS hierarchy用于创建可复用的稳定层级模型,适合业务核心数据;ABAP SQL HIERARCHY generator则适用于临时性层级

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 313

Tomcat源码解析系列四:Tomcat的url到Wrapper的映射

当用户发起一个请求时,tomcat是如何将url映射到具体的Wrapper上的呢,就这是本文要阐述的问题。与url到Wrapper映射相关的类位于org.apache.catalina.mapper包下,包含四个类:Mapper:映射关系最核心的、最重要的类。完成url与Host,Context,Wrapper映射关系的初始化、变更、存储及映射。

Running666的博客 361

[网络安全自学篇] 七十三.WannaCry勒索病毒复现及分析(四)蠕虫传播机制全网源码详细解读

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文分享了逆向分析OllyDbg动态调试工具的基本用法,包括界面介绍、常用快捷键和TraceMe案例分析。这篇文章将继续详细讲解WannaCry蠕虫的传播机制,带领大家详细阅读源代码,分享WannaCry勒索病毒是如何传播感染的。作者分析该病毒一个月,一方面觉得自己技术菜,另一方面深知系统安全需要坚持,继续加油。希望文章对您有所帮助~

杨秀璋的专栏 1万+

Log4Shell漏洞反制:从原理到实战的主动防御技术解析

远程代码执行(RCE)漏洞是网络安全领域的核心威胁之一,其原理在于攻击者能够通过特定漏洞在目标系统上执行任意代码。以Log4Shell漏洞为例,它利用Log4j2框架的JNDI查找机制,通过恶意构造的日志消息触发远程类加载,从而实现代码注入。这种漏洞的技术价值在于其利用链的完整性和高危害性,常被用于服务器入侵、数据窃取等攻击场景。在防御层面,除了传统的补丁修复和WAF拦截,主动防御技术提供了一种新思路。本文探讨的Logout4Shell概念,正是基于漏洞利用链的劫持原理,通过部署可控的LDAP服务器和反制P

weixin_33782386的博客 436

BART non-Cartesian 重建:并行成像 压缩感知

本文主要使用并行成像和压缩感知方法实现non-Cartesian MRI 数据的重建。

张哥频道:电生理信号和磁共振成像 1181

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Spring框架核心机制解析:从IoC容器到Spring Boot实战指南

在Java企业级开发领域,控制反转(IoC)和依赖注入(DI)是构建松耦合、可维护应用架构的核心设计模式。其原理在于将对象的创建与依赖管理权交由外部容器处理,从而提升代码的模块化和可测试性。这一机制的技术价值在于实现了组件间的解耦,使得大型应用更易于扩展和维护。在实际应用场景中,Spring Framework通过ApplicationContext作为IoC容器实现,支持XML配置、Java配置和组件扫描等多种Bean定义方式,并结合构造器注入、Setter注入等模式完成依赖组装。进一步地,Spring

weixin_34007886的博客 430

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

拆解Web渗透底层逻辑:从溯源发展史到实战核心全维度指南

Web渗透测试是一套标准化、流程化、逻辑化、合规化的完整技术体系,绝非零散工具的堆砌。1. 信息收集是渗透的基石,决定测试深度与成功率,核心在于精细化、绕过防护挖掘隐性信息;2. 高危漏洞探测与利用是核心突破,需吃透漏洞原理,规避工具误报、WAF拦截等问题;3. 权限提升与内网渗透是进阶核心,是区分入门与资深渗透工程师的关键;4. 日志清理与复盘是职业化核心,适配企业合规测试场景。从发展趋势来看,Web安全攻防对抗会持续升级,自动化渗透、AI漏洞挖掘、云原生安全、API安全将成为未来主流方向。

2501_92125808的博客 589

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JNDI与数据库连接池

  在javaweb程序中,最消耗资源的就是与数据库的交互,所以在与数据库交互上有很多方式进行优化 这次说的是通过减少建立连接与销毁连接来优化的连接池。 数据库连接池负责分配、管理和释放连接,让程序重复使用同一个连接,而不是每次都要创建新连接 数据库连接池在初始化时创建一定数量的数据库连接放到连接池中, 这个数量是设定的最小连接数,连接池都将一直保证至少拥有这么多的连接 当程序向连接池请求的连接...

DT_Zhangshuo的博客 848

tomcat配置文件server.xml详解

tomcat配置文件server.xml详解

我喂自己袋盐 895

JNDI参数配置

IBM WebSphere JNDI 服务  java.naming.provider.url=iiop://myhost:9001  java.naming.factory.initial= com.ibm.websphere.naming.WsnInitialContextFactory BEA WebLogic JNDI 服务  java.naming.pro

java_freshman01的专栏 1010

JNDI参数设置

http://blog.youkuaiyun.com/fhm727/article/details/7444078 name:表示你的连接池的名称也就是你要访问连接池的地址 auth:是连接池管理权属性,Container表示容器管理 type:是对象的类型 driverClassName:是数据库驱动的名称 url:是数据库的地址

u013071311的专栏 4708

MySQL : JDBC JNDI URL Syntax

MySQL : JDBC JNDI URL SyntaxMySQL的 JDBC URL 格式 for Connector/J 如下例:jdbc:mysql://[host][,failoverhost…][:port]/[database] [?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]… jdbc:mysql

telib的博客 464

J2EE总结:Java命名与目录接口JNDI

JNDI 是什么 JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识。 那么,JNDI到底起什么作用? 要了解JNDI的作用,我们可以从“如果不用JNDI我们怎样做?用了JNDI后我们又将怎样做?”

萧逸闲侃 1961

数据库连接学习(一)——JNDI数据源的配置

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

Leo专题 1082

JNDI注入详解(自学)

Jndi叫Java命名和目录的接口,可以类比为一个字典(就比如用一个目录路径去定义一个文件,目录路径和文件就是键值)。在Java应用中除了以常规方式使用名称服务(比如使用DNS解析域名) ,另一个常见的用法是使用目录服务作为对象存储的系统来存储和获取Java对象(比如使用打印机,在目录服务查找打印机然后获得一个打印机对象)。Jndi包含在Java SE平台。要使用Jndi,您必须拥有Jndi类和一个或多个服务提供者(SPI)。JDK包含以下命名/目录服务的服务提供者:轻量级目录访问协议(LDAP。

m0_64481831的博客 2057

JNDI的基本应用

6.7.2JNDI的基本应用 JNDI是Java Naming and Directory Interface(JAVA命名和目录接口)的英文简写,它是为JAVA应用程序提供命名和目录访问服务的API(Application Programing Interface,应用程序编程接口)。 1.命名的概念与应用 JNDI中的命名(Naming),就是将Java对象以某个名称的形式绑定(bin...

soboer 1026
上一篇: dropwizard metrics - 基本使用介绍
下一篇: Shiro Annotation保护实例
开心的D哥
博客等级 码龄22年 63粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值