以下代码:
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'只是随机字符串?