在Jetty 8中使用JNDI

在Jetty 8中使用JNDI,jetty,jndi,embedded-jetty,Jetty,Jndi,Embedded Jetty,我试图将Jetty 8配置为特定的:8.1.4.v20120524以使用JNDI。在jetty.xml文件中,我有以下配置: <Array id="plusConfig" type="java.lang.String"> <Item>org.eclipse.jetty.webapp.WebInfConfiguration</Item> <Item>org.eclipse.jetty.webapp.WebXmlConfiguratio

我试图将Jetty 8配置为特定的:8.1.4.v20120524以使用JNDI。在jetty.xml文件中,我有以下配置:

<Array id="plusConfig" type="java.lang.String">
    <Item>org.eclipse.jetty.webapp.WebInfConfiguration</Item>
    <Item>org.eclipse.jetty.webapp.WebXmlConfiguration</Item>
    <Item>org.eclipse.jetty.webapp.MetaInfConfiguration</Item>
    <Item>org.eclipse.jetty.webapp.FragmentConfiguration</Item>
    <Item>org.eclipse.jetty.plus.webapp.EnvConfiguration</Item>
    <Item>org.eclipse.jetty.plus.webapp.PlusConfiguration</Item>
    <Item>org.eclipse.jetty.webapp.JettyWebXmlConfiguration</Item>
    <Item>org.eclipse.jetty.webapp.TagLibConfiguration</Item>
</Array>

<Call name="setAttribute">
  <Arg>org.eclipse.jetty.webapp.configuration</Arg>
  <Arg>
      <Ref id="plusConfig"/>
  </Arg>
</Call>

<New class="org.eclipse.jetty.plus.jndi.EnvEntry">
  <Arg>stopport</Arg>
  <Arg type="java.lang.Integer">8888</Arg>
  <Arg type="boolean">true</Arg>
</New>
我使用嵌入式jetty从Java调用此函数:

      Server jetty = (Server) new XmlConfiguration(<myconfig>).configure();
      jetty.start();
      InitialContext ic = new InitialContext();
      Integer sport = (Integer) ic.lookup("java:comp/env/stopport");
但是,JNDI绑定似乎不完整/不正确,因为它在以下情况下失败:

javax.naming.NameNotFoundException; remaining name 'env/stopport'
org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:500)
org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:531)
org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:546)
org.eclipse.jetty.jndi.java.javaRootURLContext.lookup(javaRootURLContext.java:112)
javax.naming.InitialContext.lookup(InitialContext.java:409)
org.basex.BaseXHTTP.<init>(BaseXHTTP.java:80)
org.basex.BaseXHTTP.main(BaseXHTTP.java:47)
javax.naming.NameNotFoundException; remaining name 'env/stopport'
实际的代码可以在src/main/resources/.basexjetty中找到。这是jetty.xml,刚刚重命名为src/main/java/org/basex/BaseXHTTP.java


非常感谢您的帮助

我想知道在连接时是否使用了envention上的错误构造函数

试试这个,让我知道它是否有效:

<New class="org.eclipse.jetty.plus.jndi.EnvEntry">
  <Arg></Arg>
  <Arg>stopport</Arg>
  <Arg type="java.lang.Integer">8888</Arg>
  <Arg type="boolean">true</Arg>
</New>

我想知道在连接时是否使用了envention上的错误构造函数

试试这个,让我知道它是否有效:

<New class="org.eclipse.jetty.plus.jndi.EnvEntry">
  <Arg></Arg>
  <Arg>stopport</Arg>
  <Arg type="java.lang.Integer">8888</Arg>
  <Arg type="boolean">true</Arg>
</New>

不,不幸的是它没有:这被标记为嵌入式jetty,您是否直接使用XMLConfiguration或其他方法处理jetty.xml文件?有些事情似乎不对劲,你知道,根据你添加的java,这应该是可行的,因为你需要将它设置为jvm级别的范围…也许这是jvm范围中的一个问题,尽管每次我都认为和go look jetty是对的,我会尝试访问webapp或handler中的内容,或者只是看看这是否是一个范围问题。从今天早上开始,我就在想应该如何工作;我再次编辑了这个问题,请看最后一段与我的github回购的链接。这是一个开源项目,所以实际上我没有理由保留它。非常感谢您的帮助!不,不幸的是它没有:这被标记为嵌入式jetty,您是否直接使用XMLConfiguration或其他方法处理jetty.xml文件?有些事情似乎不对劲,你知道,根据你添加的java,这应该是可行的,因为你需要将它设置为jvm级别的范围…也许这是jvm范围中的一个问题,尽管每次我都认为和go look jetty是对的,我会尝试访问webapp或handler中的内容,或者只是看看这是否是一个范围问题。从今天早上开始,我就在想应该如何工作;我再次编辑了这个问题,请看最后一段与我的github回购的链接。这是一个开源项目,所以实际上我没有理由保留它。非常感谢您的帮助!当你说“从Java调用此代码”时,Java代码位于哪里,在webapp或其他范围内?我编辑了Java代码片段以使其更清晰。当你说“从Java调用此代码”时,Java代码位于哪里,在webapp或其他范围内?我编辑了Java代码片段以使其更清晰。