Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jetty:如何声明JVM范围的jndi条目并绑定到java:comp/env_Java_Jetty_Jndi - Fatal编程技术网

jetty:如何声明JVM范围的jndi条目并绑定到java:comp/env

jetty:如何声明JVM范围的jndi条目并绑定到java:comp/env,java,jetty,jndi,Java,Jetty,Jndi,我试图在Jetty服务器中定义一些JNDI条目(它们将是JVM范围的),但它们没有像预期的那样自动绑定到“java:comp/env”命名空间。我正在以下网址查看文档: 这是我的jetty.xml: <Configure id="server" class="org.eclipse.jetty.server.Server"> <New class="org.eclipse.jetty.plus.jndi.EnvEntry"> <Arg></Ar

我试图在Jetty服务器中定义一些JNDI条目(它们将是JVM范围的),但它们没有像预期的那样自动绑定到“java:comp/env”命名空间。我正在以下网址查看文档:

这是我的jetty.xml:

<Configure id="server" class="org.eclipse.jetty.server.Server">

<New class="org.eclipse.jetty.plus.jndi.EnvEntry">
    <Arg></Arg>
    <Arg>prop/someValue</Arg>
    <Arg type="java.lang.String">hello</Arg>
    <Arg type="boolean">true</Arg>
</New>

</Configure>

道具/价值
你好
真的
正如Jetty示例所示,我希望它绑定到“java:comp/env/prop/someValue”,但是“java:comp/env”似乎根本没有被创建

但是,查找“prop/someValue”确实有效

注意-我没有webapp,所以没有WEB-INF/jetty-env.xml或WEB.xml。我只是启动一个Jetty服务器,并尝试使用所需的JNDI条目对其进行配置

还尝试使用“bindToENC”方法将我的条目显式绑定到:


道具/价值
你好
真的
道具/价值
但这会导致服务器启动失败:

2012-11-14 11:17:25,648 DEBUG - XML new class org.eclipse.jetty.plus.jndi.EnvEntry (org.eclipse.jetty.xml.XmlConfiguration)
2012-11-14 11:17:25,650 DEBUG - SAVE prop/someValue in null (jndi)
2012-11-14 11:17:25,656 DEBUG - InitialContextFactory.getInitialContext() (jndi)
2012-11-14 11:17:25,664 DEBUG - Created initial context delegate for local namespace:org.eclipse.jetty.jndi.local.localContextRoot@664883c (jndi)
2012-11-14 11:17:25,665 DEBUG - InitialContextFactory.getInitialContext() (jndi)
2012-11-14 11:17:25,665 DEBUG - Created initial context delegate for local namespace:org.eclipse.jetty.jndi.local.localContextRoot@6e811c88 (jndi)
2012-11-14 11:17:25,666 DEBUG - Looking up name="__" (jndi)
2012-11-14 11:17:25,666 DEBUG - Adding binding with key=__ obj=org.eclipse.jetty.jndi.NamingContext@39dd3812 for context=null as __: org.eclipse.jetty.jndi.NamingContext:org.eclipse.jetty.jndi.NamingContext@39dd3812 (jndi)
2012-11-14 11:17:25,666 DEBUG - Subcontext __ created (jndi)
2012-11-14 11:17:25,666 DEBUG - Looking up name="prop" (jndi)
2012-11-14 11:17:25,666 DEBUG - Adding binding with key=prop obj=org.eclipse.jetty.jndi.NamingContext@6a8c436b for context=__ as prop: org.eclipse.jetty.jndi.NamingContext:org.eclipse.jetty.jndi.NamingContext@6a8c436b (jndi)
2012-11-14 11:17:25,666 DEBUG - Subcontext prop created (jndi)
2012-11-14 11:17:25,667 DEBUG - Removing binding with key=someValue (jndi)
2012-11-14 11:17:25,667 DEBUG - Adding binding with key=someValue obj=prop/someValue for context=prop as someValue: org.eclipse.jetty.plus.jndi.EnvEntry:prop/someValue (jndi)
2012-11-14 11:17:25,667 DEBUG - Bound object to someValue (jndi)
2012-11-14 11:17:25,667 DEBUG - Looking up name="prop" (jndi)
2012-11-14 11:17:25,667 DEBUG - Adding binding with key=prop obj=org.eclipse.jetty.jndi.NamingContext@27b15692 for context=null as prop: org.eclipse.jetty.jndi.NamingContext:org.eclipse.jetty.jndi.NamingContext@27b15692 (jndi)
2012-11-14 11:17:25,667 DEBUG - Subcontext prop created (jndi)
2012-11-14 11:17:25,667 DEBUG - Removing binding with key=someValue (jndi)
2012-11-14 11:17:25,668 DEBUG - Adding binding with key=someValue obj=hello for context=prop as someValue: java.lang.String:hello (jndi)
2012-11-14 11:17:25,668 DEBUG - Bound object to someValue (jndi)
2012-11-14 11:17:25,668 DEBUG - XML call bindToENC (org.eclipse.jetty.xml.XmlConfiguration)
2012-11-14 11:17:25,668 DEBUG - InitialContextFactory.getInitialContext() (jndi)
2012-11-14 11:17:25,668 DEBUG - Created initial context delegate for local namespace:org.eclipse.jetty.jndi.local.localContextRoot@6baa9f99 (jndi)
2012-11-14 11:17:25,671 DEBUG - >>> new root context requested  (org.eclipse.jetty.jndi.java.javaURLContextFactory)
2012-11-14 11:17:25,673 DEBUG - Adding binding with key=comp obj=Reference Class Name: javax.naming.Context
Type: parser
Content: org.eclipse.jetty.jndi.java.javaNameParser
 for context=null as comp: javax.naming.Reference:Reference Class Name: javax.naming.Context
Type: parser
Content: org.eclipse.jetty.jndi.java.javaNameParser
 (jndi)
2012-11-14 11:17:25,673 DEBUG - Looking up name="comp/env" (jndi)
2012-11-14 11:17:25,690 DEBUG - Using thread context classloader (jndi)
2012-11-14 11:17:25,690 DEBUG - No entry for classloader: sun.misc.Launcher$AppClassLoader@35a16869 (jndi)
2012-11-14 11:17:25,690 DEBUG - Looking up name="env" (jndi)
2012-11-14 11:17:25,690 WARN  - Config error at <Call name="bindToENC"><Arg>prop/someValue</Arg></Call> (org.eclipse.jetty.xml.XmlConfiguration)
2012-11-14 11:17:25,690 WARN  - Config error at <New class="org.eclipse.jetty.plus.jndi.EnvEntry"><Arg/><Arg>prop/someValue</Arg><Arg type="java.lang.String">hello</Arg><Arg type="boolean">true</Arg><Call name="bindToENC"><Arg>prop/someValue</Arg></Call></New> (org.eclipse.jetty.xml.XmlConfiguration)
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.jetty.util.TypeUtil.call(TypeUtil.java:538)
    at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.call(XmlConfiguration.java:732)
2012-11-14 11:17:25648调试-XML新类org.eclipse.jetty.plus.jndi.EnvEntry(org.eclipse.jetty.XML.XmlConfiguration)
2012-11-14 11:17:25650调试-将prop/someValue保存为null(jndi)
2012-11-14 11:17:25656调试-InitialContextFactory.getInitialContext()(jndi)
2012-11-14 11:17:25664调试-为本地命名空间创建了初始上下文委托:org.eclipse.jetty.jndi.local。localContextRoot@664883c(jndi)
2012-11-14 11:17:25665调试-InitialContextFactory.getInitialContext()(jndi)
2012-11-14 11:17:25665调试-为本地命名空间创建了初始上下文委托:org.eclipse.jetty.jndi.local。localContextRoot@6e811c88(jndi)
2012-11-14 11:17:25666调试-查找名称=“\uuuuuu”(jndi)
2012-11-14 11:17:25666调试-使用key=_uj=org.eclipse.jetty.jndi添加绑定。NamingContext@39dd3812for context=null为uuux:org.eclipse.jetty.jndi.NamingContext:org.eclipse.jetty.jndi。NamingContext@39dd3812(jndi)
2012-11-14 11:17:25666调试-创建子上下文(jndi)
2012-11-14 11:17:25666调试-查找name=“prop”(jndi)
2012-11-14 11:17:25666调试-使用key=prop obj=org.eclipse.jetty.jndi添加绑定。NamingContext@6a8c436bfor context=uu作为prop:org.eclipse.jetty.jndi.NamingContext:org.eclipse.jetty.jndi。NamingContext@6a8c436b(jndi)
2012-11-14 11:17:25666调试-已创建子上下文属性(jndi)
2012-11-14 11:17:25667调试-删除key=someValue(jndi)的绑定
2012-11-14 11:17:25667调试-添加key=someValue obj=prop/someValue for context=prop作为someValue的绑定:org.eclipse.jetty.plus.jndi.EnvEntry:prop/someValue(jndi)
2012-11-14 11:17:25667调试-将对象绑定到someValue(jndi)
2012-11-14 11:17:25667调试-查找name=“prop”(jndi)
2012-11-14 11:17:25667调试-使用key=prop obj=org.eclipse.jetty.jndi添加绑定。NamingContext@27b15692for context=null作为prop:org.eclipse.jetty.jndi.NamingContext:org.eclipse.jetty.jndi。NamingContext@27b15692(jndi)
2012-11-14 11:17:25667调试-已创建子上下文属性(jndi)
2012-11-14 11:17:25667调试-删除key=someValue(jndi)的绑定
2012-11-14 11:17:25668调试-添加key=someValue obj=hello for context=prop作为someValue:java.lang.String:hello(jndi)的绑定
2012-11-14 11:17:25668调试-将对象绑定到someValue(jndi)
2012-11-14 11:17:25668调试-XML调用bindToENC(org.eclipse.jetty.XML.XmlConfiguration)
2012-11-14 11:17:25668调试-InitialContextFactory.getInitialContext()(jndi)
2012-11-14 11:17:25668调试-为本地命名空间创建了初始上下文委托:org.eclipse.jetty.jndi.local。localContextRoot@6baa9f99(jndi)
2012-11-14 11:17:25671调试->>>请求新的根上下文(org.eclipse.jetty.jndi.java.javaURLContextFactory)
2012-11-14 11:17:25673调试-使用key=comp obj=Reference类名添加绑定:javax.naming.Context
类型:解析器
内容:org.eclipse.jetty.jndi.java.javaNameParser
for context=null作为comp:javax.naming.Reference:Reference类名:javax.naming.context
类型:解析器
内容:org.eclipse.jetty.jndi.java.javaNameParser
(jndi)
2012-11-14 11:17:25673调试-查找name=“comp/env”(jndi)
2012-11-14 11:17:25690调试-使用线程上下文类加载器(jndi)
2012-11-14 11:17:25690调试-类加载器没有条目:sun.misc.Launcher$AppClassLoader@35a16869(jndi)
2012-11-14 11:17:25690调试-查找name=“env”(jndi)
2012-11-14 11:17:25690警告-prop/someValue处的配置错误(org.eclipse.jetty.xml.XmlConfiguration)
2012-11-14 11:17:25690警告-prop/someValuehellotrueprop/someValue处的配置错误(org.eclipse.jetty.xml.XmlConfiguration)
线程“main”java.lang.reflect.InvocationTargetException中出现异常
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于org.eclipse.jetty.util.TypeUtil.call(TypeUtil.java:538)
位于org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.call(XmlConfiguration.java:732)

有人知道如何让它工作吗?

您可以通过两种方式将
prop/someValue
绑定到
java:comp/env/prop/someValue
。第一个是引用web.xml中的env条目,如下所示:


道具/价值
java.lang.String
你好
但是,与您的情况一样,您没有WEB-INF/WEB.xml,根据J2EE,有效的WEB应用程序不需要WEB-INF/WEB.xml。您可以使用
bindToENC
方法将绑定保留到Jetty。可以这样做:



8.1.5v20120716。我用的是jetty全聚合罐。
2012-11-14 11:17:25,648 DEBUG - XML new class org.eclipse.jetty.plus.jndi.EnvEntry (org.eclipse.jetty.xml.XmlConfiguration)
2012-11-14 11:17:25,650 DEBUG - SAVE prop/someValue in null (jndi)
2012-11-14 11:17:25,656 DEBUG - InitialContextFactory.getInitialContext() (jndi)
2012-11-14 11:17:25,664 DEBUG - Created initial context delegate for local namespace:org.eclipse.jetty.jndi.local.localContextRoot@664883c (jndi)
2012-11-14 11:17:25,665 DEBUG - InitialContextFactory.getInitialContext() (jndi)
2012-11-14 11:17:25,665 DEBUG - Created initial context delegate for local namespace:org.eclipse.jetty.jndi.local.localContextRoot@6e811c88 (jndi)
2012-11-14 11:17:25,666 DEBUG - Looking up name="__" (jndi)
2012-11-14 11:17:25,666 DEBUG - Adding binding with key=__ obj=org.eclipse.jetty.jndi.NamingContext@39dd3812 for context=null as __: org.eclipse.jetty.jndi.NamingContext:org.eclipse.jetty.jndi.NamingContext@39dd3812 (jndi)
2012-11-14 11:17:25,666 DEBUG - Subcontext __ created (jndi)
2012-11-14 11:17:25,666 DEBUG - Looking up name="prop" (jndi)
2012-11-14 11:17:25,666 DEBUG - Adding binding with key=prop obj=org.eclipse.jetty.jndi.NamingContext@6a8c436b for context=__ as prop: org.eclipse.jetty.jndi.NamingContext:org.eclipse.jetty.jndi.NamingContext@6a8c436b (jndi)
2012-11-14 11:17:25,666 DEBUG - Subcontext prop created (jndi)
2012-11-14 11:17:25,667 DEBUG - Removing binding with key=someValue (jndi)
2012-11-14 11:17:25,667 DEBUG - Adding binding with key=someValue obj=prop/someValue for context=prop as someValue: org.eclipse.jetty.plus.jndi.EnvEntry:prop/someValue (jndi)
2012-11-14 11:17:25,667 DEBUG - Bound object to someValue (jndi)
2012-11-14 11:17:25,667 DEBUG - Looking up name="prop" (jndi)
2012-11-14 11:17:25,667 DEBUG - Adding binding with key=prop obj=org.eclipse.jetty.jndi.NamingContext@27b15692 for context=null as prop: org.eclipse.jetty.jndi.NamingContext:org.eclipse.jetty.jndi.NamingContext@27b15692 (jndi)
2012-11-14 11:17:25,667 DEBUG - Subcontext prop created (jndi)
2012-11-14 11:17:25,667 DEBUG - Removing binding with key=someValue (jndi)
2012-11-14 11:17:25,668 DEBUG - Adding binding with key=someValue obj=hello for context=prop as someValue: java.lang.String:hello (jndi)
2012-11-14 11:17:25,668 DEBUG - Bound object to someValue (jndi)
2012-11-14 11:17:25,668 DEBUG - XML call bindToENC (org.eclipse.jetty.xml.XmlConfiguration)
2012-11-14 11:17:25,668 DEBUG - InitialContextFactory.getInitialContext() (jndi)
2012-11-14 11:17:25,668 DEBUG - Created initial context delegate for local namespace:org.eclipse.jetty.jndi.local.localContextRoot@6baa9f99 (jndi)
2012-11-14 11:17:25,671 DEBUG - >>> new root context requested  (org.eclipse.jetty.jndi.java.javaURLContextFactory)
2012-11-14 11:17:25,673 DEBUG - Adding binding with key=comp obj=Reference Class Name: javax.naming.Context
Type: parser
Content: org.eclipse.jetty.jndi.java.javaNameParser
 for context=null as comp: javax.naming.Reference:Reference Class Name: javax.naming.Context
Type: parser
Content: org.eclipse.jetty.jndi.java.javaNameParser
 (jndi)
2012-11-14 11:17:25,673 DEBUG - Looking up name="comp/env" (jndi)
2012-11-14 11:17:25,690 DEBUG - Using thread context classloader (jndi)
2012-11-14 11:17:25,690 DEBUG - No entry for classloader: sun.misc.Launcher$AppClassLoader@35a16869 (jndi)
2012-11-14 11:17:25,690 DEBUG - Looking up name="env" (jndi)
2012-11-14 11:17:25,690 WARN  - Config error at <Call name="bindToENC"><Arg>prop/someValue</Arg></Call> (org.eclipse.jetty.xml.XmlConfiguration)
2012-11-14 11:17:25,690 WARN  - Config error at <New class="org.eclipse.jetty.plus.jndi.EnvEntry"><Arg/><Arg>prop/someValue</Arg><Arg type="java.lang.String">hello</Arg><Arg type="boolean">true</Arg><Call name="bindToENC"><Arg>prop/someValue</Arg></Call></New> (org.eclipse.jetty.xml.XmlConfiguration)
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.jetty.util.TypeUtil.call(TypeUtil.java:538)
    at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.call(XmlConfiguration.java:732)