2016-09-07 86 views
1

的我在春天处理缺席JNDI

<bean id="optionalBean" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="name"/> 
</bean> 

配置JNDI参考,但可以不配置JNDI属性。在这种情况下,我的Tomcat无法启动。
我怎么能告诉Spring,这个JNDI是可选的?

更新: 加入lookupOnStartup后,我得到的错误:

nested exception is org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'optionalBean': Cannot resolve reference to bean 'optionalBean' while setting bean property 'optionalBean'; 
nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'optionalBean': 
Invocation of init method failed; nested exception is java.lang.IllegalStateException: 
Cannot deactivate 'lookupOnStartup' without specifying a 'proxyInterface' or 'expectedType' 
+0

如果它的春天的背景下启动时不需要,你可以提供一个属性“lookupOnStartup”及其价值为假。它在启动时跳过寻找jndi。试图找到它只是当它第一次使用。 –

+0

[来自文档](http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jndi/JndiObjectFactoryBean.html#setLookupOnStartup-boolean-) –

+0

@CodeItLikeAmeen它显示了错误。请参阅更新后的问题 –

回答

0

这应该做

<bean id="optionalBean" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="true"> 
      <property name="jndiName" value="name"/> 
     </bean> 
+0

看起来很有希望,但我仍然得到错误: javax.naming.NameNotFoundException:名称[名]是不是在这方面的约束。无法找到[名称]。 –