问题标签 [jndi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8034 浏览

deployment - 在 ejb-jar.xml 中添加队列 JNDI 引用?在 EJB/MDB 中发送 JMS 消息

我有一个包含 MDB 和 WAR 的 EAR 应用程序。

在这个 EAR 应用程序中,我会将消息从其他 EAR 应用程序发送到另一个队列。说 jms/anotherQueue

如果消息发送发生在 Web 上下文中,它会起作用。我在 web.xml 中有这样的设置

但如果消息发送发生在 EJB(此处为 MDB)上下文中,我将收到 JNDI 名称查找失败。

我的 ejb-jar.xml

openejb.jar 是

我在 geronimo-application.xml 中定义 myJmsResource

看来 myMDB 无法理解 jms/anotherQueue 是什么!!!我该如何解决?

0 投票
4 回答
8635 浏览

java - 容器外 JNDI 数据源

我想在 Java SE 应用程序中使用 JNDI 配置数据源。做这个的最好方式是什么?

到目前为止,我遇到了 2 个项目:

  1. 阿帕奇命名。项目页面有一个配置数据源的具体示例,但看起来项目超级旧,不再活动。
  2. 老板娘。使用 配置仅限本地的 JNDI 看起来很容易LocalOnlyContextFactory,但我还没有找到任何关于如何实际配置数据源的文档。

如果可能的话,我还想使用 JTA 事务管理器(使用 JOTM?)配置数据源。

0 投票
2 回答
9580 浏览

hibernate - 使用 eclipse Hibernate 插件的问题 - 无法在 JNDI 中找到 sessionfactory

我正在使用 eclipse hibernate 插件中内置的逆向工程功能为每个表生成 dao 和 hbm.xml 文件。

它做得很好,但是当我尝试使用生成的对象时,我得到一个无法在 JNDI 中找到 SessionFactory 错误。

我看到一个帖子建议当您在 hibernate.cfg.xml 文件中命名您的 SessionFactory 时会发生这种情况,所以我删除了名称标签,但我仍然收到相同的错误。

这是我的 hibernate.cfg.xml

这是触发异常的生成代码

我对 JNDI 了解不多,但我猜它是某种相当于配置文件的查找。我不想使用 JNDI,但我不知道如何使用 eclipse 插件来实现这一点。

更改生成的代码不会真正帮助我,因为我需要在某些时候继续重新生成它,所以如果有人能解释为什么/如何发生这种情况以及我能做些什么,我将不胜感激

谢谢

乔纳森

0 投票
2 回答
710 浏览

java - 在简单的 Java 类中访问远程企业 bean

这是我的Java类

当我运行这个类时,我遇到了一个异常。

所有其他企业 bean 类都是根据 EJB 3.0 标准编写的。期待您的宝贵贡献。

解决方案

例外是

发生这种情况是因为应用程序端提供的 JNDI 名称与服务器(Glassfish)的实际 JNDI 名称不匹配,所以我通过其管理控制台(特定于供应商)检查 Glassish 中的 JNDI 树,我确实注意到NewSessionRemote接口(它是会话 bean NewSessionBean的业务接口)的JNDI 与 我在应用程序端给出的名称不同。那么这是怎么发生的然后我突然想到了ejb-jar.xml有另一个名称 JNDI 名称分配给同一个NewSessionRemote使用标签。所以我只是删除它并重新部署 EJB 模块。就是这样。

0 投票
1 回答
3023 浏览

java - Nexus 和 LDAP - 针对 OpenLDAP 服务器对用户进行身份验证时出现 JNDI 问题

我正在将 Nexus 存储库管理器 (nexus.sonatype.org) 与开源 LDAP 插件 (code.google.com/p/nexus-ldap/) 一起使用,我收到一个错误,表明使用了错误的协议版本(详情如下) . 该插件所做的只是使用 JNDI LDAP 服务提供者连接到我的 LDAP 服务器。如果您查看 nexus.log 文件中的堆栈跟踪,则会在 JNDI LDAP 实现中的上下文初始化期间发生异常。所以我的猜测是,下面描述的问题不是由 Nexus 插件引起的,而是由于 JNDI 的误用或对 LDAP 身份验证的误解。

任何关于这是如何引起错误的猜测或想法都非常感谢!

哪些步骤将重现该问题?

  1. 将 Nexus 配置为使用 OpenLDAP 1.2.x 服务器使用 LdapAuthenticatingRealm - 因此是 LDAP 协议的版本 2。
  2. 尝试从 OpenLDAP-Server 列出用户并将它们映射到 Nexus 配置 UI 中的角色 - 效果很好。
  3. 现在尝试使用已成功映射到角色的 LDAP 用户登录或验证正在运行的 Nexus 实例。

什么是预期的输出?你看到了什么呢?

尝试登录时,我收到错误消息“用户名、密码不正确或无权使用 Nexus 用户界面。再试一次。”。在 Nexus 日志文件中,我看到 Sun 的 JNDI-LDAP 实现(请参阅下面的日志文件中的堆栈跟踪)尝试使用给定信息初始化上下文以针对 LDAP 服务器对用户进行身份验证时引发异常。使用 Nexus UI 的用户查找工作正常,以及在身份验证期间执行的查找(请参阅下面的日志文件)。

CommunicationException ("[LDAP: error code 2 - version not supported]") 中包含的错误消息表明使用了错误的 LDAP 协议版本。我尝试明确使用协议版本 2,因为 OpenLDAP 版本 1.2.7-30 仅支持 LDAP v2(企业环境 - 服务器版本不可协商)。我通过检查您的源代码来做到这一点,添加行“env.put("java.naming.ldap.version", "2");" 到 se.devoteam.nexus.ldap.NexusLdapContextFactory:52。没有改变。

在测试期间,我在浏览 Sun 源代码时意识到 javax.naming.ldap.InitialLdapContext.InitialLdapContext() 方法所做的第一件事是将 ldap 协议版本设置为“3”(javax.naming.ldap.InitialLdapContext:131 )。尽管 Java6 文档解释了我使用的属性 (java.sun[dot]com/javase/6/docs/technotes/guides/jndi/jndi-ldap-gl.html#version) 并且 JNDI 教程将其作为解决协议版本冲突的正确方法 (java.sun[dot]com/products/jndi/tutorial/ldap/misc/version.html) 我想知道:有没有办法在使用 JNDI 时显式使用 LDAP 协议版本 2作为 LDAP 服务提供者?

接下来,我尝试使用最新版本的 OpenLDAP 服务器 (openldap2-2.3) 作为 LDAP 协议版本 3 请求的代理,它将它们委托给旧服务器。同样的问题,同样的例外。

附加信息

环境:Nexus Webapp 部署在 Tomcat 6.0.16 Nexus 版本:1.3.6 ldap-realm 版本:0.4 JRE 版本:JDK 1.6.0_14-b08 平台:虚拟环境 LDAP 目录品牌:OpenLDAP 1.2.7 和 2.2.3

nexus.log 的相关部分:

0 投票
1 回答
296 浏览

.net - 使 .NET 配置环境中立

我想了解有关使 .NET 应用程序配置环境中立的最佳实践的一些想法。

背景。先来点背景。我来自 Java 世界,而不是 .NET 世界,在 Java 中,我们可以做一些事情来构建环境中立的包。它们通常基于以某种方式抽象配置。这里有一些例子:

  • JNDI 允许应用程序通过名称引用企业资源(例如,数据库、JavaMail 会话、JCR 存储库等),然后根据环境(dev、test、prod)将该名称映射到特定的配置。
  • 另一个例子是属性文件。您可能有一堆属性(例如,“encryption_key”、“smtp.server.url”、“admin.email”等),应用程序在启动时会从已知位置的属性文件中获取这些属性。属性键再次根据环境映射到不同的值。
  • 一些应用程序开发框架(如 Spring)知道如何拉入属性文件,以便可以将属性与框架配置集成。

我在 Java 中看到的另一种方法是构建时方法,您可以使用 Ant(令牌替换)或 Maven(构建配置文件)来构建特定于环境的包。我不太喜欢这种方法,因为我非常喜欢部署完全相同的包来测试和生产。但这是我见过的一种方法。

所需的解决方案。我假设在 .NET 中有一些类似的策略可以将配置(以及扩展包含的包)与其环境解耦。

理想情况下,我想要一个解决方案,允许我保持与应用程序密切相关的非环境配置,仅外部化环境内容。回到 Java 示例,很多时候“配置”实际上是开发人员控制的东西,例如包含用于页面装饰的 Sitemesh servlet 过滤器、依赖注入或应用程序连接、映射某某 MVC 控制器方法到请求 URI 等。我不想被外部化的东西。但是加密密钥、数据库连接字符串、日志级别等等,是的。

0 投票
2 回答
13380 浏览

mysql - JNDI 和 javax.sql.DataSource

我是一个过去曾经做过一些 J2EE 编码的人,现在我正在重新投入工作,从事一个新的 J2EE 项目。自 2001 年以来发生了很多变化,所以我需要问这个非常基本的问题。

我在我的数据库类中使用这样的语法:

我知道这是一个新功能(注释),但我不确定它是如何工作的。后来在我的课上,我打了这个电话:

它每次都会抛出 NullPointerException 。我在调试器中进入了这个,事实证明,dataSource 为空。

我没有在代码中自己初始化 dataSource 似乎很神奇和奇怪。知道我做错了什么吗?

我的 web.xml 包含以下块来建立资源:

我已经通过使用 META-INF 中的 context.xml 文件将此添加到我的 Context 中。上下文条目如下所示:

我正在使用 Tomcat 6、MySQL 5、最新的 MySQL 驱动程序(不是旧的 v3,而是最新的 v5 驱动程序)。

更新:这对我不起作用,因为我在一个普通的班级中使用它。我创建了一个新项目并向其中添加了一个 servlet。servlet 中的 DataSource 不为空。

0 投票
3 回答
1517 浏览

java - 使用 JUnit 测试 ServiceLocator

这是我之前的问题的后续问题。

我正在尝试为我的 ServiceLocator 类编写测试用例,但它给了我以下错误:

我的测试用例:

getInstance()上面的代码在如下所示的方法上失败:

我知道这ServiceLocator很好用,因为当我从前端测​​试我的应用程序时没有问题。我写这个测试用例的唯一原因是因为我想测试我的DAO。对我来说,测试我的 DAOServiceLocator必须工作(来自JUnit)。

我不知道如何处理错误消息。有没有人想建议一些我可以尝试的东西,希望能奏效?

编辑:ServiceLocator 构造函数

0 投票
3 回答
1714 浏览

java - 如何创建初始上下文以连接到 sql server

我很难将我的 java 代码连接到 sql server 数据库。我可以很好地从应用服务器连接..但现在我想尝试与图片之外的应用服务器连接并使用InitialContext一些 env 属性。所以一个独立的java类使用连接到sql serverInitialContext

我的项目库中有 mssqlserver.jar。我还需要其他罐子吗?

我四处寻找一些代码示例,但不知道要输入什么Context.INITIAL_CONTEXT_FACTORY

在应用服务器上,我有以下属性。

0 投票
1 回答
1372 浏览

java - JNDI 名称——是否需要前缀“jdbc/”?

JNDI 名称怎么了?我正在尝试使用 Java 5 的新注释功能来获取 javax.sql.DataSource。它对我不起作用,所以我想问...

我的 web.xml 中有一个,里面是一个元素。我在“jdbc/MyDB”和“MyDB”之间切换。两者都不能使我的基于类的 DataSource 工作(它始终为空),但在我使用 taglibs 创建的另一个示例中,这两个 JNDI 名称都工作。