写道
看了JNDI的实现,我感有点惊讶和一点迷惑,惊讶的是系统编程比应用编程就难度来说还真不好说,比如就象实现JNDI,SUN已经定好了Interface,你要做的就是弄清楚整个功能的原理,然后去实现他,然而应用编程则没有人为你定好Interface,你只能根据需求分析自己定好Interface,自己定好框架,但是这个框架能不能满足需求那就不好说了,但是SUN定的规范可是肯定可以实现功能的,并且一般情况下你必须全部实现接口中的每一个函数,要不然,人家说你又不符合他的规范,不能通过他的认证。好了下面我讲讲我读JNDI的经过。
JNDI的规范我大概的看了一下,大概知道了JNDI是干什么用的,实际上我的理解就是JNDI是一种服务,什么样的服务呢 ,就是你给我一个字符串,我就给出对应字符串所对应的对象。那这东西有什么用呢?那我们不是经常在客户端写代码的 时候不是经常写
Context ctx = new InitialContext();Object obj = ctx.lookup("/ejb/LotteryEJB");
这样类似的代码, 如果说"/ejb/LotteryEJB"是你刚才所说的字符串的话,那obj就应该是对应的对象,夷,这怎么好象有点象EJB的调用啊, 哈,哥哥你真是冰雪聪明,这就是EJB调用开始的时候调用JNDI服务的代码。原来就是这样啊,那实现这玩意不是太容易了, 弄一个HashMap的实例hm,把你要部署的字符和对象通过hm.put("/cs",对象)放进去,如果谁要查的时候就是把要查的字符 传过来,Object cs = hm.get("/cs"),CS就是要你要找的对象。CS?好啊,AK,M4,暴头....,我想暴头想了很久了,但是 这CS到底是我要暴头的人,还是和我一起暴头的人,还是已被我暴头的人呢?哈,告诉你吧,都是。根据JNDI的规范,这CS可以代表 对象,设备都可以,当然只要你愿意连MM都可以代表,真的,哪里有啊!我机子上好多啊---100多M的美女图片,哦我差点忘了, 文件也可以是JNDI服务所返回的东东。对了要是你问我MM图片怎么传到你的机子上面去,我只能告诉你,你可以通过socket传啊, 你传一个"/cs",我回传一个cs给你,就这么简单。
好了,如果到目前为止你只对我的100M图片感兴趣的话呢,那你就不要往下看了, 你给我发E-MAIL,我告诉你哪里还有好多。 org.huihoo.jfox.jndi下面的ContextImpl是实现Context接口,但是很这个类不是实现真正JNDI功能的类,真正实现该功能就是NamingServiceImpl类,NamingService不是SUN规范所规定的接口,但是他的函数和Context接口差不多,也就是说完成的是和 Context接口的功能差不多。也就是说NamingServiceImpl才是JNDI服务的提供者,而Context是客户端去调用JNDI服务的接口,那提起 服务的实现那大家都自然都想起了多线程,就想起了一个孤独的socket的实例fox在不停的listen,listen啊,但是他怎么等不到 "我要嫁给你"的字符串!fox不止一次的怀疑自己的实现的Runnable接口是否为倒版,并且还怀疑对方是不是找对了IP而发错了端口。 所以说为了能更好提供JNDI服务,NamingServiceImpl决定把自己交给ServiceWrapper包装一下,然后再对外发布,要知道ServiceWrapper 专门为守侯线程所设计,面对各种各样的的请求,都能抓住处理掉,并且面对各种请求都能一一满足。现在我只希望ServiceWrapper能够 满足我一种请求那就是--有没有吃的,我好饿!有没有人请吃饭啊!我饿死了!
分享到:
相关推荐
java asm jndi_JNDI-Injection-Exploit,用于log4j2漏洞验证 可执行程序为jar包,在命令行中运行以下命令: $ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address] 其中: -C ...
# JNDI-Inject-Exploit ## 免责声明 本工具仅面向**合法授权的企业安全测试**,如您需测试本工具的可用性请自行搭建靶机环境,在使用本工具进行检测时,您应确保该行为符合当地的法律法规,并且已经取得了足够的...
hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+tomcat 5.5.x(配置jndi)hibernate 3.1+...
简单我tomcat5.0中的JNDI应用
jboss配置MySql的JNDI
JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,...
JNDI服务利用工具 RMI/LDAP,支持部分场景回显、内存shell,高版本JDK场景下利用等,fastjson rce命令执行,log4j rce命令执行 漏洞检测辅助工具
自定义jndi数据源factory类,用于解密jndi中的加密数据,解密方式为DES,具体可根据实际需求修改。
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address] where: -C - command executed in the remote classfile. (optional , default command is "open /Applications/...
jndi所依赖的jar包,fscontext.jar和providerutil.jar,jndi.jar 将jndi.jar复制到%JAVA_HOME%\jre\lib\ext目录下就可得到持久的扩展
Windows_7_下搭建LDAP服务器并使用JNDI Windows_7_下搭建LDAP服务器并使用JNDI Windows_7_下搭建LDAP服务器并使用JNDI
jndi,就是命名服务(n:naming)和目录服务(d:directory). 命名服务:把对象映射到方便记忆的名字的机制.可以通过域名系统dns来理解,例如我们访问百度,只要输入www.baidu.com而不是百度的IP地址. 目录服务:其实也是一种...
配置了tomcat之后发现jndi好简单啊,可是碰到了hibernate该怎么做呢,本例详细解析
TOMCAT8 JNDI对用户名和密码加密
在JAVA编程中对JNDI的支持.是一个开放的源码.
JNDI-Injection-Exploit-1.0-SNAPSHOT-all
1.1 Apache Tomcat各版本 1.2 Apache Tomcat Versions 1.3 Java事务处理总结 1.4 JavaBean中使用JDBC...1.22 JNDI配置原理详解 1.23 JSF+Seam框架学习心得 1.24 java jdbc驱动的四种类型 1.25 resource-ref元素
首先配置Tomcat服务器文件 ... <Resource name="jdbc/jndidemo" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="sa" password="1" driverClassName=...
jndi入门学习资料,介绍jndi基本原理,安装和使用,基本配置
如何在spring中等价配置得到原本由jndi配置实现的数据源? 现在的问题是:由于各种原因,当不想使用jndi方式,如何等价的在spring工程内部实现配置?