Использование JNDI с Jetty 8

Я пытаюсь настроить 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>

Я вызываю это из 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'

Фактический код можно найти по адресу https://github.com/dirkk/basex-api/tree/basexjetty в src/main/resources/.basexjetty (это только что переименованный файл jetty.xml) и src/main/java/org/basex/BaseXHTTP.java

Любая помощь приветствуется!


person dirkk    schedule 18.07.2012    source источник
comment
когда вы говорите «вызов этого из Java», где находится этот код Java, внутри веб-приложения или какой-либо другой области?   -  person jesse mcconnell    schedule 19.07.2012
comment
Я отредактировал фрагмент Java, чтобы сделать его более понятным.   -  person dirkk    schedule 19.07.2012


Ответы (1)


Интересно, используется ли неправильный конструктор EnvEntry при подключении этого?

попробуйте это и дайте мне знать, если это сработает:

<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>
person jesse mcconnell    schedule 18.07.2012
comment
Нет, к сожалению, нет :( - person dirkk; 18.07.2012
comment
это помечено как embedded-jetty, обрабатывают файл jetty.xml напрямую с помощью XMLConfiguration или что-то в этом роде? что-то не так - person jesse mcconnell; 18.07.2012
comment
вы знаете, основываясь на добавленном вами кусочке java, это должно работать, так как вам нужно установить его на область уровня jvm... возможно, это проблема в области видимости jvm, хотя каждый раз, когда я думаю об этом и иду смотреть, причал был прав , я бы попытался получить доступ к этому внутри веб-приложения или обработчика или просто посмотреть, не является ли это проблемой области видимости. - person jesse mcconnell; 19.07.2012
comment
должно работать, вот о чем я думаю с сегодняшнего утра... ;) Я снова редактирую вопрос, пожалуйста, посмотрите последний абзац со ссылкой на мой репозиторий github. Это проект с открытым исходным кодом, поэтому на самом деле нет причин, по которым я должен от него отказываться. Любая помощь приветствуется! - person dirkk; 19.07.2012