jndi

Java EJB JNDI Beans Lookup Failed

♀尐吖头ヾ 提交于 2020-02-02 11:31:07
问题 I have the following structure in place: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.screening</groupId> <artifactId>screening</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <name>Screening Java Parent</name> <modules> <module>Module1</module> <module>Module2<

JNDI

China☆狼群 提交于 2020-01-30 02:36:34
概念 1 JNDI(Java Naming and Directory Interface ),类似于在一个中心注册一个东西,以后要用的时候,只需要根据名字去注册中心查找,注册中心返回你要的东西。web程序,我们可以将一些东西(比如数据库相关的)交给服务器软件去配置和管理(有全局配置和单个web程序的配置),在程序代码中只要通过名称查找就能得到我们注册的东西,而且如果注册的东西有变,比如更换了数据库,我们只需要修改注册信息,名称不改,因此代码也不需要修改。 String jndiName = . . . ; Context context = new InitialContext ( ) ; DataSource ds = ( DataSourse ) context . lookup ( jndiName ) ; 由来 JNDI总结 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName(“数据库驱动类”); )   ②连接数据库(Connection con = DriverManager.getConnection(); )   ③操作数据库(PreparedStatement stat = con.prepareStatement(sql);stat.executeQuery(); )   ④关闭数据库,释放连接(con

关于<Java 中 RMI、JNDI、LDAP、JRMP、JMX、JMS那些事儿(上)>看后的一些总结-2

空扰寡人 提交于 2020-01-24 22:33:42
关于JNDI: 命名系统是一组关联的上下文,而上下文是包含零个或多个绑定的对象,每个绑定都有一个原子名(实际上就是给绑定的对象起个名字,方便查找该绑定的对象), 使用JNDI的好处就是配置统一的管理接口,下层可以使用RMI、LDAP或者CORBA来访问目标服务 要获取初始上下文,需要使用初始上下文工厂 比如JNDI+RMI Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory"); env.put(Context.PROVIDER_URL, "rmi://localhost:9999"); Context ctx = new InitialContext(env); //将名称refObj与一个对象绑定,这里底层也是调用的rmi的registry去绑定 ctx.bind("refObj", new RefObject()); //通过名称查找对象 ctx.lookup("refObj"); 比如JNDI+LDAP Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi

How to set Context.INITIAL_CONTEXT_FACTORY? NoInitialContextException?

流过昼夜 提交于 2020-01-24 09:44:27
问题 I am new to JMS and the Websphere server and I am trying to access a JMS queue configured on Websphere Application Server 8 from my Java code. I am not able to understand exactly what value should be set for Context.INITIAL_CONTEXT_FACTORY. Should it be the fully qualified class name of the class or something specific to the application server? Hashtable environment = new Hashtable(); environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");

关于<Java 中 RMI、JNDI、LDAP、JRMP、JMX、JMS那些事儿(上)>看后的一些总结-1

谁都会走 提交于 2020-01-23 23:41:58
原文地址: https://www.anquanke.com/post/id/194384#h3-3 1.java rmi 关于rmi客户端和服务端通信的过程,java的方法都实现在rmi服务端,客户端实际上是通过访问rmi注册表拿到stub,然后再通过它调用服务端方法,那么调用方法时要传递参数,参数可以为一般类型,也可以为引用类型,那么如果为引用类型,就能够利用服务端已经有的gaget chain来打server,因为参数实际上是序列化传输的,那么数据到达服务端后必定会经过反序列化。 客户端: RMIClient.java package com.longofo.javarmi; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; public class RMIClient { /** * Java RMI恶意利用demo * * @param args * @throws Exception */ public static void main(String[] args) throws Exception { Registry registry = LocateRegistry.getRegistry("127.0.0.1", 9999); // 获取远程对象的引用

Does SearchControls.setTimeLimit() handle read timeout?

时间秒杀一切 提交于 2020-01-23 13:05:16
问题 I'm having an issue where an LdapContext.search() against a directory will occasionally hang forever. I tried supplying a SearchControls object for which I've called setTimeLimit(10000), but the issue still happens. Given this, my thought now is that the SearchControls object is being used only as an advisory to the server and won't arrange a timeout on the client side read if no packets come back. I looked around but didn't find any wording in the class documentation to explicitly confirm

EJB3 Glassfish JNDI lookup

风格不统一 提交于 2020-01-23 07:21:09
问题 I am using Glassfish-bundled Eclipse IDE. I wrote a simple EJB application. but it doesn't work. @Stateless @Remote(CalculatorRemote.class) @Local(CalculatorLocal.class) public class Calculator implements CalculatorRemote, CalculatorLocal { @Override public String sayHello(String name) { System.out.println("ejb:"+name); return null; } } ---- @Remote public interface CalculatorRemote { public String sayHello(String name); } ------- @Local public interface CalculatorLocal { public String

tomcat架构分析 (JNDI体系绑定)

拟墨画扇 提交于 2020-01-23 02:59:50
在 tomcat架构分析 (JNDI配置) 一文里,以配置JDBC数据库连接为例,介绍了tomcat中常用的JNDI配置的几种用法。使用这种配置,在app里可以通过JNDI API非常简单的调用相应的资源对象。但是调用越简单,那其背后封装的逻辑越多。就好比汽车分为手动档自动挡一样。对司机而言,自动挡开起来会轻松很多,那是因为很多复杂的操作,已经封装起来由机器来完成了。 本篇就是从代码原理角度来揭示tomcat中JNDI的配置是如何生效的,以及app中的调用逻辑是如何实现的。通过这些,可以看到tomcat中一块比较重要的体系结构,同时加深对JNDI的理解。 上文介绍了两种配置方案,一个是global的配置,在各个app中引用;一个是各个app自己配置资源对象。这两种方案,从实现角度来看,原理一样,只是第一种比第二种多了一层mapping关系。所以为了方便理解,先从第二种方案,即各个app配置自己的资源对象来说明。 另外,需要说明的是,本章涉及的代码 Tomcat源码 JNDI源码(javax.naming.*),参考OpenJDK项目 先看一个概念图 JNDI体系分为三个部分; 在tomcat架构分析 (容器类)中介绍了StandardContext类,它是每个app的一个逻辑封装。当tomcat初始化时,将根据配置文件

JNDI 的架构和原理

人走茶凉 提交于 2020-01-22 13:22:58
什么是 JNDI ( Java Naming and Directory Interface ) JNDI 是用于访问不同命名和目录服务的统一 API 接口; JNDI 的架构和原理 架构: 第一层: java 代码,是访问 JNDI 的代码; 第二层: JNDI API :统一的命名和目录服务接口 第三层: JNDI Naming Manager : JNDI 管理器 第四层: JNDI SPI :用于构建 JNDI 实现的框架,能够动态的插入命名和目录服务提供商的产品; 第五层:命名和目录服务提供商的产品; 命名和目录服务提供商的产品 , 例如: DNS,LDAP,NIS,NDS………; 因为这些产品都是不同的提供商提供的产品,所以他们的命名和目录服务的标准不一致,各个目录服务采用的访问协议也是不一样的,所以,要是直接访问他们的话,就要编写不同的 java 代码来访问他们;因此, JNDI SPI 就解决了这个问题,它能动态的插入这些命名和目录服务,能够将其协议专属的目录产品集成到系统中,使得我们能只需要调用一个统一的 javaAPI 就能够访问插入的产品了; 2 .原理: JNDI 其实很好理解,他就是一个树状的结构,它的最顶是一个 initialContext 节点,然后它的下面就是绑定的一些对象或是一些 subContext ,用 JNDI

JNDI 资源

亡梦爱人 提交于 2020-01-22 13:20:42
第 6 章 JNDI 资源 Java 命名和目录接口 (Java Naming and Directory Interface, JNDI) 是一种应用编程接口 (application programming interface, API),用于访问不同类型的命名和目录服务。Java EE 组件通过调用 JNDI 查找方法来定位对象。 JNDI 是 Java 命名和 API 目录接口的首字母缩略词。通过对此 API 进行调用,应用程序可以定位资源和其他程序对象。资源是提供到系统(如数据库服务器和消息传送系统)的连接的程序对象。(JDBC 资源有时被称为数据源。)每个资源对象都是由唯一的友好名称所标识,称为 JNDI 名称。Application Server 附带的命名和目录服务将资源对象及其 JNDI 名称绑定在一起。要创建新资源,需要将新的名称-对象绑定输入到 JNDI 中。 本章包括以下几个部分: J2EE 命名服务 JNDI 名称是便于用户使用的对象名称。这些名称通过 J2EE 服务器提供的命名和目录服务绑定到其对象。由于 J2EE 组件通过 JNDI API 访问此服务,因此对象通常使用其 JNDI 名称。例如,PointBase 数据库的 JNDI 名称为 jdbc/Pointbase。Application Server 启动时,将从配置文件中读取信息,并自动将