Tag: jndi

Eclipse:覆盖Tomcat中的JNDI资源

我正在使用Eclipse中的Java Web应用程序并部署到由Eclipse运行的Tomcat实例。 我试图通过JNDI Resource元素让这个应用程序与另一台主机上的数据库通信。 应用程序中包含的context.xml文件尝试连接到在localhost上运行的MySQL服务器,如下所示: 当我在实际主机上安装它时,此配置有效。 也就是说,它正确读取环境值并连接到数据库。 我也可以在单独的主机上安装它并编辑/etc/tomcat6/conf/Catalina/localhost/myaplication.xml来更改JDBC URL,如下所示: … … 此配置也有效。 换句话说,我非常确信我的应用程序正确使用了JNDI。 所以,现在我想在Eclipse的桌面上将它部署到Tomcat。 我已经以标准方式将项目添加到Tomcat,并且我已经编辑了服务器的context.xml文件(即Eclipse在“Servers”项目中的Tomcat服务器下显示的文件),如下所示: 当我在Eclipse中重启Tomcat时,日志显示正确读取Log4J文件的路径(因为它开始记录到Tomcat控制台),我甚至看到它吐出了正确的“mykey”值。 但是,初始化在尝试从configDB读取时失败。 起初,我认为这是一个连接问题,但在裁定之后,我在调试器中重新启动了Tomcat并检查了从JNDI读取的DataSource; 它的URL指向localhost,这意味着它正在使用应用程序的context.xml文件中的那个,而不是Tomcat的! 我已经尝试了几种方法来实现这一点,包括将这些信息放在Tomcat的server.xml文件中,但似乎没有任何效果。 或者,更准确地说,它有点类似,因为它正在读取环境值而不是资源。 我在这做错了什么? 如何让Eclipse的Tomcat服务器覆盖此资源?

Godaddy JNDI问题—无法为连接URL”创建类”的JDBC驱动程序

我在Godaddy有一个网站,我使用JNDI来管理数据库连接。 Godaddy使用Tomcat 5.5.27和JDK 1.5。 我也在本地使用相同的版本。 JNDI在我的本地开发环境中运行良好,但是当我在Godaddy运行它时,我收到以下exception消息: Cannot create JDBC driver of class ” for connect URL ‘null’ 我已经在Godaddy服务器中正确放置了所有内容,就像我的本地系统一样。 这是context.xml factory org.apache.commons.dbcp.BasicDataSourceFactory driverClassName com.mysql.jdbc.Driver url someurl username root password root maxActive 20 maxIdle 10 maxWait -1 removeAbandoned true removeAbandonedTimeout 300 logAbandoned true 这是我的Java代码的相关部分: Context initContext = new InitialContext(); DataSource dataSource = (DataSource) initContext.lookup(“java:/comp/env/jdbc/interviewzone”); Connection conn = […]

如何在Java LDAP连接上指定SSL / TLS版本?

我正在研究Java LDAP客户端,但我仍然缺少一些有关如何正确执行此操作的信息或知识。 我的代码看起来像这样: LdapContext ctx = null; Hashtable env = new Hashtable (); try{ env.clear(); env.put(Context.INITIAL_CONTEXT_FACTORY, “com.sun.jndi.ldap.LdapCtxFactory”); env.put(Context.PROVIDER_URL, “url”); env.put(Context.SECURITY_PRINCIPAL, “user”); env.put(Context.SECURITY_CREDENTIALS, “password”); env.put(Context.SECURITY_PROTOCOL, “ssl”); env.put(“java.naming.security.ssl.ciphers”, “SSL_RSA_EXPORT_WITH_RC4_40_MD5”); ctx = new InitialLdapContext(env, null); } catch(NamingException nex) { // error handling } 目前发生以下事情: 在调试ssl连接时,我看到在我的LDAP-Server和我的程序之间建立了TLSv1连接。 我在ssl握手时看到以下内容和服务器: *** ClientHello, TLSv1.2和*** ServerHello, TLSv1 *** ClientHello, TLSv1.2 *** ServerHello, TLSv1 我现在想念的东西: […]

如何指定从中获取EJB的服务器?

在java EE中,从远程服务器获取EJB的方式是在JNDI中查找它。 规范定义了给定bean类型的JNDI名称。 但是,这似乎只有在您想从本地计算机上获取bean时才会出现这种情况。 我想像大多数用户那样从远程服务器上获取bean。 如何指定服务器URL? 我是否将地图传递给InitialContext构造函数? 注意:还有另一个问题几乎相同,但自从规范定义可移植JNDI名称以来,这已经过时了。

无法通过JBoss远程访问数据源

上下文 我有一个JBoss,我成功地部署了一个数据源mydatasource-ds.xml 。 它的JNDI名称是java:mydatasourceDS 。 JBoss声称数据源已成功部署。 JMX控制台也很好。 问题 我想从在单独的JVM上启动的客户端Java应用程序中使用此数据源。 但我得到一个例外,说java:mydatasourceDS无法找到。 java.lang.ClassCastException: javax.naming.Reference cannot be cast to javax.sql.DataSource 细节 这是persistence.xml文件: java:mydatasourceDS 这是jndi.properties文件: java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.provider.url=jnp://localhost:1099 java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces 这是应用程序类路径: jndi.properties log4j.properties META-INF\persistence.xml hibernate-jpa-2.0-api-1.0.0.Final.jar jnp-client-5.0.3.GA.jar jboss-common-core-2.2.14.GA.jar jboss-logging-spi-2.1.0.GA.jar hibernate-entitymanager-3.6.4.Final.jar hibernate-core-3.6.4.Final.jar antlr-2.7.6.jar commons-collections-3.1.jar dom4j-1.6.1.jar hibernate-commons-annotations-3.2.0.Final.jar jta-1.1.jar javassist-3.12.0.GA.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar log4j-1.2.16.jar xstream-1.4.1.jar xmlpull-1.1.3.1.jar xpp3_min-1.1.4c.jar 编辑我找到了问题的根源。 我的客户端应用程序可用的javax.sql.DataSource不是从JNDI收到的。 我从JNDI收到的是JBoss javax.sql.DataSource 。 相同的名称但是稍微不同的类因此ClassCastException … 在撰写本文时,可以在此包中找到JBoss javax.sql.DataSource: […]

为什么使用JndiObjectFactoryBean来配置JNDI数据源不起作用?

当我使用Java-base来配置我的JNDI时。 spring4.2.5。 但是如果我使用JndiObjectFactoryBean来配置。当我想获取datasource ,该对象将为null。 @Bean public DataSource dataSource(){ JndiObjectFactoryBean jndiObjectFactoryBean =new JndiObjectFactoryBean(); jndiObjectFactoryBean.setJndiName(“jdbc/SpittrDS”); jndiObjectFactoryBean.setResourceRef(true); jndiObjectFactoryBean.setProxyInterface(DataSource.class); return (DataSource) jndiObjectFactoryBean.getObject(); //NULL!!! } 但如果将方法更改为此,则效果很好。 @Bean public DataSource dataSource(){ final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup(); dsLookup.setResourceRef(true); DataSource dataSource = dsLookup.getDataSource(“java:comp/env/jdbc/SpittrDS”); return dataSource; } 我不知道问题出在哪里。 Tomcat 9.0 context.xml WEB-INF/web.xml ${catalina.base}/conf/web.xml <!– –>

如何使用jndi显示ldap目录的所有对象类描述

我想显示LDAP目录模式中存在的所有对象类,以帮助用户输入可用的对象类以添加新条目。 DirContext schema = ctx.getSchema(“”); Attributes answer = schema.getAttributes(“ClassDefinition/person”); 但这只显示有关人的信息。

如何使用JNDI将参数传递给LDAP自定义套接字工厂?

我正在使用JNDI建立LDAP连接。 例: Hashtable env = new Hashtable(); env.put(Context.PROVIDER_URL, LDAPS_URL); env.put(Context.SECURITY_AUTHENTICATION, “EXTERNAL”); env.put(“java.naming.ldap.factory.socket”, “ldaptest.CustomSocketFactory”); … 我需要在运行时将参数传递给CustomSocketFactory。 特别是对客户端证书的引用。 我怎样才能做到这一点? 我可以使用线程本地存储。 有没有更好的办法?

使用Spring的SimpleNamingContextBuilder的应用程序如何知道在其目录中搜索资源?

使用Spring的SimpleNamingContextBuilder作为其JNDI提供程序的应用程序如何知道在其目录中搜索资源? 什么将应用程序链接到Spring命名目录? 例如,这个早期答案中的JndiObjectFactoryBean bean如何知道在Spring目录中找到资源my-db ? JndiObjectFactoryBean是否需要将属性java.naming.factory.initial设置为接口InitialContextFactory某些实现的上下文环境? 使用SimpleNamingContextBuilder作为JNDI提供程序时, java.naming.factory.initial的值应该是多少?

以编程方式为Spring创建JNDI DataSource

我有一个现有的基于Spring的Web应用程序,它具有使用JNDI定义的数据源,我正在尝试创建一个独立的应用程序来使用bean。 如何在独立应用程序中以编程方式创建JNDI条目和数据库属性? public static void main(String[] args) { // this throws an error since the JNDI lookup fails – can I programmatically define the database properties here? ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(“applicationContext.xml”); UserService userService = ctx.getBean(UserService.class); User user = userService.findUserById(“jdoe”); System.out.println(“display name: ” + user.getDisplayName()); } 编辑: 我尝试过类似的东西,但现在收到错误“javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名” public static void main(String[] args) { setupJNDI(); […]