2

JNDIを使用するようにJetty8(具体的には8.1.4.v20120524)を構成しようとしています。私の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

どんな助けでも大歓迎です!

4

1 に答える 1

0

これを配線するときに 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>
于 2012-07-18T14:11:56.907 に答える