我正在尝试配置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中的https://github.com/dirkk/basex-api/tree/basexjetty找到(这是jetty.xml,刚重命名)和src / main / java / org / basex / BaseXHTTP.java < / p>
非常感谢任何帮助!
答案 0 :(得分: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>