Jetty 8 initContext.lookup(“java:comp / env”)javax.naming.NameNotFoundException

时间:2016-11-18 14:07:20

标签: java dependency-injection jetty jndi

以下代码:

Context initContext = new InitialContext();
bm = (BeanManager) ((Context)initContext.lookup("java:comp/env")).lookup("BeanManager");

失败,出现以下错误:

  

javax.naming.NameNotFoundException;剩下的名字'env'在   org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:449)at at   org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:536)at at   org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:551)

我正在使用jetty 8.想法是加载BeanManager,但看起来它甚至没有达到那个部分。为什么'env'找不到?我认为这应该是jvm的一部分。

/WEB-INF/web.xml的内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <context-param>
        <param-name>log4j-config-location</param-name>
        <param-value>WEB-INF/classes/log4j.properties</param-value>
    </context-param>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/rest/</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <resource-env-ref>
        <resource-env-ref-name>BeanManager</resource-env-ref-name>
        <resource-env-ref-type>
            javax.enterprise.inject.spi.BeanManager
        </resource-env-ref-type>
    </resource-env-ref>
</web-app>

jetty-web.xml的内容

<Configure id="webAppCtx" class="org.eclipse.jetty.webapp.WebAppContext">
    <New id="BeanManager" class="org.eclipse.jetty.plus.jndi.Resource">
        <Arg>
            <Ref id="webAppCtx"/>
        </Arg>
        <Arg>env/BeanManager</Arg>
        <Arg>
            <New class="javax.naming.Reference">
                <Arg>javax.enterprise.inject.spi.BeanManager</Arg>
                <Arg>org.jboss.weld.resources.ManagerObjectFactory</Arg>
                <Arg/>
            </New>
        </Arg>
    </New>
</Configure>

jetty-plus.xml的内容

<Configure id="Server" class="org.eclipse.jetty.server.Server">
<!-- =========================================================== -->
<!-- Add plus Configuring classes to all webapps for this Server -->
<!-- =========================================================== -->
  <Call class="org.eclipse.jetty.webapp.Configuration$ClassList" name="setServerDefault">
    <Arg><Ref refid="Server" /></Arg>
    <Call name="addAfter">
      <Arg name="afterClass">org.eclipse.jetty.webapp.FragmentConfiguration</Arg>
      <Arg>
        <Array type="String">
        <Item>org.eclipse.jetty.plus.webapp.EnvConfiguration</Item>
        <Item>org.eclipse.jetty.plus.webapp.PlusConfiguration</Item>
      </Array>
    </Arg>
  </Call>
</Call>
</Configure>

我是码头的新手。另外,在.xml文件中,我没有对webapp名称的引用。不确定我是否读错了所有示例,或者这是因为.xml文件驻留在相应的webapp / WEB-INF目录中。 xml中的'id'只是随机字符串?

0 个答案:

没有答案