Java中JNDI提供的简单字符串值

Java中JNDI提供的简单字符串值,java,string,jndi,Java,String,Jndi,如何在tomcat的配置中设置简单的字符串值,然后在java应用程序中读取 context.xml <ResourceLink name="global/test" global="testing" type="java.lang.String" /> 当我运行tomcat时,我看到这些错误 org.springframework.jdbc.datasource.lookup.DataSourceLookupFailureException: Failed to look up J

如何在tomcat的配置中设置简单的字符串值,然后在java应用程序中读取

context.xml

<ResourceLink name="global/test" global="testing" type="java.lang.String" />
当我运行tomcat时,我看到这些错误

org.springframework.jdbc.datasource.lookup.DataSourceLookupFailureException: Failed to look up JNDI DataSource with name 'global/test'; nested exception is javax.naming.NameNotFoundException: Name [global/test] is not bound in this Context. Unable to find [global].
javax.naming.NameNotFoundException: Name [global/test] is not bound in this Context. Unable to find [global].
在web.xml使用中

<env-entry>
<description>Sample env entry</description>
<env-entry-name>isConnected</env-entry-name>
<env-entry-type>java.lang.Boolean</env-entry-type><!--order matters -->
<env-entry-value>true</env-entry-value>
</env-entry>
在这里查看一下,以便更好地了解InitialContext和JNDI。

在您的web.xml使用中

<env-entry>
<description>Sample env entry</description>
<env-entry-name>isConnected</env-entry-name>
<env-entry-type>java.lang.Boolean</env-entry-type><!--order matters -->
<env-entry-value>true</env-entry-value>
</env-entry>

请看这里,以便更好地理解InitialContext和JNDI。

我不知道JndiDataSourceLookup()中的内容。getDataSource(“global/test”),但根据它的名称,它应该返回一个
数据源,而不是一个字符串

如果您的查找是本地的,只需执行以下操作

Context ctx = new InitialContext();
String s = (String) ctx.lookup("global/test");
或者如果您在javaee容器中

@Resource(name="global/test")
String testString;
最后在您的
ejbjar.xml

<env-entry>
    <description>The name was explicitly set in the annotation so the classname prefix isn't required</description>
    <env-entry-name>global/test</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>StringValue</env-entry-value>
</env-entry>

该名称是在注释中显式设置的,因此不需要类名称前缀
全球/测试
java.lang.String
StringValue
请参阅此链接:


您对
context.xml
server.xml
web.xml
的配置不起作用。

我不知道
JndiDataSourceLookup().getDataSource(“全局/测试”)
中包含什么内容,但根据它的名称,它应该返回一个
DataSoruce
而不是一个字符串

如果您的查找是本地的,只需执行以下操作

Context ctx = new InitialContext();
String s = (String) ctx.lookup("global/test");
或者如果您在javaee容器中

@Resource(name="global/test")
String testString;
最后在您的
ejbjar.xml

<env-entry>
    <description>The name was explicitly set in the annotation so the classname prefix isn't required</description>
    <env-entry-name>global/test</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>StringValue</env-entry-value>
</env-entry>

该名称是在注释中显式设置的,因此不需要类名称前缀
全球/测试
java.lang.String
StringValue
请参阅此链接:


您对
context.xml
server.xml
web.xml
的配置将不起作用。

在这一行之后,Boolean isConn=(Boolean)initCxt.lookup(“java:comp/env/isConnected”);是异常javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名,或作为aplet参数,或者在一个应用程序资源文件中:java.naming.factory.initialTry您使用的是哪个版本的tomcat?您可以在哪里修复它?我刚才在tomcat 8上运行了完全相同的代码,它可以毫不费力地工作。在这一行之后,Boolean isConn=(Boolean)initCxt.lookup(“java:comp/env/isConnected”);是异常javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名,或作为aplet参数,或者在一个应用程序资源文件中:java.naming.factory.initialTry您使用的是哪个版本的tomcat?您可以在哪里修复它?我刚才在tomcat 8上运行了完全相同的代码,它可以毫不费力地工作。因为您使用的是tomcat,并且有一个web应用程序,您可以在
web.xml
中添加
内容,并删除
ejb jar.xml
;再次给出异常javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名,或作为aplet参数,或在应用程序资源文件中指定:java.naming.factory.initialjavax.naming.NoInitialContextException:需要在环境或系统属性中指定类名,或作为aplet参数,或者在一个应用程序资源文件中:java.naming.factory.initially因为您使用的是tomcat,并且有一个web应用程序,所以您可以在
web.xml
中添加
内容,并删除
ejb jar.xml
。我添加到web.xml中,但此行字符串s=(String)ctx.lookup(“global/test”);再次给出异常javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名,或作为aplet参数,或在应用程序资源文件中指定:java.naming.factory.initialjavax.naming.NoInitialContextException:需要在环境或系统属性中指定类名,或作为aplet参数,或者在应用程序资源文件中:java.naming.factory.initial