【问题标题】:How to populate JNDI directory programatically in Jetty?如何在 Jetty 中以编程方式填充 JNDI 目录?
【发布时间】:2014-06-21 18:47:52
【问题描述】:

我已经成功地在 jndi 目录中跨在同一个 JVM 中运行的应用程序插入和查找对象:

        InitialContext initialContext = new InitialContext();
        initialContext.bind("xpto",this);

        Object obj = initialContext.lookup("xpto");

我仍然想组织命名空间并因此绑定对象,例如:

        InitialContext initialContext = new InitialContext();
        initialContext.bind("/aaa/xpto",this);

        Object obj = initialContext.lookup("/aaa/xpto");

这失败了

 javax.naming.NameNotFoundException: aaa is not bound

我知道我可能需要做更多的事情来创建“aaa”节点,但在任何地方都找不到它是什么......大多数码头文档都引用了静态定义的对象,这不是我想要的。有人能指出我正确的方向吗?

【问题讨论】:

  • 问:您是否查看过以下链接:jetty:// - Configuring JNDIhttp://wiki.eclipse.org/Jetty/Feature/JNDI?特别是,您的“WEB-INF/jetty-web.xml”中有什么?
  • 是的,我都看完了。重点是用于配置文件初始化和资源管理器配置的 java:comp 方案。就我而言,我想以编程方式填充命名空间,除了 java:comp/env ...
  • 我从来没有尝试创建一个 JNDI 名称而不在 service.xml、web.xml、META-INF/context.xml 中的一个或多个中进行条目(或者,在你的情况下)码头-web.xml。问:有什么理由不想编辑 jetty-web.xml?
  • 我想要实现的是在运行在相同 JVM 对象实例中的 webapps 之间共享,这些对象的对象只有在运行时才知道程序的逻辑。在编译时我对这些实体一无所知,无法将它们置于静态配置中。
  • 在运行时动态更改 JNDI 绑定?当然!你可以这样做。在运行时动态创建新的 JNDI 资源?那么我不确定JNDI是你想要的。这是来自有类似问题的人的链接(如果我对您的理解正确的话)-他决定使用 JNDI 以外的其他东西:tomcat.10.x6.nabble.com/…。 Q:你考虑过MongoDB这样的东西吗?

标签: java jetty jndi


【解决方案1】:

听起来您想在运行时动态创建名称/值对(资源名称/资源值),然后在不同进程之间共享它们。

如果是这样,MongoDB(或类似的东西)可能正是您正在寻找的。​​p>

这是一个简短的教程:

【讨论】:

    【解决方案2】:

    您可以使用 LDAP 服务器轻松完成此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-25
      • 1970-01-01
      • 2018-01-22
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多