1

Spring JndiObjectFactoryBean が、Jetty サーバーで構成された 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」プロパティを「false」に設定しました。「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)

私の質問は、「proxyInterface」に設定して遅延検索を機能させることができるJavaメールセッションで使用できるインターフェースはありますか?

4

0 に答える 0