我有一个要求,我的 Spring JndiObjectFactoryBean 必须对我的码头服务器中配置的 Java 邮件会话进行延迟查找
以下是我的 jetty.xml 中的邮件会话声明
<New id="mailSessionId" class="org.mortbay.jetty.plus.naming.Resource">
<Arg>mail/GmailMailSession</Arg>
<Arg>
<New class="org.mortbay.naming.factories.MailSessionReference">
<Set name="user">xxx@gmail.com</Set>
<Set name="password">xxx</Set>
<Set name="properties">
<New class="java.util.Properties">
<Put name="mail.host">smtp.gmail.com</Put>
<Put name="mail.debug">true</Put>
<Put name="mail.smtp.auth">true</Put>
<Put name="mail.smtp.starttls.enable">true</Put>
</New>
</Set>
</New>
</Arg>
</New>
在我的 Spring bean 定义文件中,我有以下 bean 定义
<bean id="dsrouterMailSession" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="mail/GmailMailSession" />
<property name="resourceRef" value="true" />
<property name="proxyInterface" value="javax.mail.Session"></property>
<property name="lookupOnStartup" value="false" />
</bean>
我不希望 Spring 在启动时查找邮件/GmailMailSession。所以我将“lookupOnStartup”属性设置为“假”。如果我将“lookupOnStartup”设置为 false,Spring 希望我提供一个 proxyInterface。我搜索了很多,但找不到邮件会话的界面。我尝试设置“javax.mail.Session”这是一个类。我得到了以下异常,这是显而易见的
Caused by: java.lang.IllegalArgumentException: [javax.mail.Session] is not an interface
at org.springframework.aop.framework.AdvisedSupport.addInterface(AdvisedSupport.java:216)
at org.springframework.aop.framework.AdvisedSupport.setInterfaces(AdvisedSupport.java:205)
at org.springframework.jndi.JndiObjectFactoryBean$JndiObjectProxyFactory.createJndiObjectProxy(JndiObjectFactoryBean.java:323)
at org.springframework.jndi.JndiObjectFactoryBean$JndiObjectProxyFactory.access$000(JndiObjectFactoryBean.java:307)
at org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet(JndiObjectFactoryBean.java:200)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549)
我的问题是是否有任何可用于 Java 邮件会话的接口,我可以将其设置为“proxyInterface”并让惰性查找工作?