0

我在将电子邮件会话声明为 OSGI 服务时遇到问题。我使用 Apache Karaf 3.0.1 作为容器,使用 Apache Aries 作为蓝图 JPA 和 JNDI 增强。

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">

  <bean id="mailSession" class="javax.mail.Session" init-method="getInstance">
      <property name="mail.smtp.host" value="mysmptpip"/>
      <property name="mail.smtp.port" value="25"/>
  </bean>

  <service auto-export="interfaces" ref="mailSession">
    <service-properties>
      <entry key="osgi.jndi.service.name" value="java:mail/MailSession"/>
    </service-properties>
  </service>
</blueprint>

我有一个启用类型的错误,无法在类 javax.mail.Session 上找到匹配的方法以获取参数[{mail.smtp.host=mysmptpip, mail.smtp.port=25}]...

有谁知道这应该如何解决?

另外,我想知道如何通过 Apache 蓝图(将创建服务)将 JavaMail 会话声明为 JNDI 资源?

4

2 回答 2

1

我认为您可以将配置的邮件会话作为服务提供。所以配置将是集中的。

于 2014-07-12T13:40:10.950 回答
0

BundleContext#registerService()够了;如果需要,您可以将属性添加到服务注册中,但这不是必需的。记得在服务关闭时取消注册。

于 2014-07-12T14:03:35.290 回答