Java 使用JNDI加载.properties文件
我不知道该怎么做。要求是我想使用JNDI加载一个属性文件,然后使用自定义属性resolver和配置解析器来使用它的数据。问题是如何配置JNDI来查找此属性文件。 我的配置是:Java 使用JNDI加载.properties文件,java,jndi,Java,Jndi,我不知道该怎么做。要求是我想使用JNDI加载一个属性文件,然后使用自定义属性resolver和配置解析器来使用它的数据。问题是如何配置JNDI来查找此属性文件。 我的配置是: <bean id="MYUrlResource" class="org.springframework.core.io.UrlResource"> <!-- <constructor-arg value="file:C:\Users\anand_rajneesh\Desktop\SVN Wo
<bean id="MYUrlResource" class="org.springframework.core.io.UrlResource">
<!-- <constructor-arg value="file:C:\Users\anand_rajneesh\Desktop\SVN Workspace\13MM - Dev\web-app\src\main\resources\application.properties"/> -->
<constructor-arg>
<bean class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/url/application.properties" />
<property name="resourceRef" value="false" />
<property name="lookupOnStartup" value="true" />
</bean>
</constructor-arg>
</bean>
我正在使用Tomcat7.0EclipseIndigo及其RESTfulWebService。。如果这与资源引用没有引起任何操作有关,那么它只是一个链接。您必须在某个地方定义资源。在Tomcat中,它是通过context.xml中的一个资源条目完成的,但是您可能必须提供自己的对象工厂,除非Spring中有一个用于属性文件的对象工厂。我想你已经有了一些背对背的东西。考虑到到目前为止,你还没有说过文件实际上在哪里。属性文件已经在类路径中,所以你的意思是我必须在资源标签下在CordEx.xml中给出文件的链接吗?jetty的情况是否有所不同,因为有时我必须使用jetty部署服务器!
<resource-ref>
<description>Property File Url</description>
<res-ref-name>url/application.properties</res-ref-name>
<res-type>java.net.url</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.jndi.JndiObjectFactoryBean#149a794' defined in ServletContext resource [/WEB-INF/classes/application-context.xml]: Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: Name application.properties is not bound in this Context
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:270)
... 48 more
Caused by: javax.naming.NameNotFoundException: Name application.properties is not bound in this Context
at org.apache.naming.NamingContext.lookup(NamingContext.java:774)
at org.apache.naming.NamingContext.lookup(NamingContext.java:144)
at org.apache.naming.NamingContext.lookup(NamingContext.java:785)
at org.apache.naming.NamingContext.lookup(NamingContext.java:144)
at org.apache.naming.NamingContext.lookup(NamingContext.java:785)
at org.apache.naming.NamingContext.lookup(NamingContext.java:144)
at org.apache.naming.NamingContext.lookup(NamingContext.java:785)
at org.apache.naming.NamingContext.lookup(NamingContext.java:157)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:156)
at javax.naming.InitialContext.lookup(Unknown Source)
at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:154)
at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:87)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:152)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:178)
at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95)
at org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:105)
at org.springframework.jndi.JndiObjectFactoryBean.lookupWithFallback(JndiObjectFactoryBean.java:201)
at org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet(JndiObjectFactoryBean.java:187)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 51 more