2009-11-25 2 views
0

Я использую Jetty 7 с JBoss Seam и имею 2 настроенных Java Mail Session, один для уведомлений о поддержке и другой для общих уведомлений.Jetty JNDI Java Mail

Проблема, с которой я сталкиваюсь, связана с тем, что JBoss Seam/JSF не может разрешить сеанс, который я установил в Контексте событий, на надлежащую сессию Java Mail перед отправкой электронной почты.

Поскольку он не может разрешить сеанс, он по умолчанию указывает на localhost на порт 25. Странная вещь: я использую тот же код для установки сеанса, как и раньше, я просто получаю его от JNDI сейчас, в отличие от Seam компонент.

Я предполагаю, что проблема заключается в получении сеанса от JNDI, и что-то не проксируется должным образом.

Как большинство мест настраивает уведомления по электронной почте в веб-приложении, часто ли вы поддерживаете более 1, если да, какова ваша конфигурация?

Walter

ответ

0

Хм, проблема была между моим модулем и JBoss Seam. Опять же, я делал что-то нестандартное (например, используя более одного адреса электронной почты в приложении и динамически назначаю почтовый сеанс на основе адреса from).

Фактически, что случилось, я разобрал электронное письмо с адреса, а затем, используя это, просмотрел почтовую сессию в JNDI. С этой почтовой сессией, я поставил его в активном контексте событий, то JBoss Seam автоматически ищет «сеанс» значение связывания в электронной почте:

...

У меня было несколько проблем с этим, mailSessionGoesHere не следует называть сеансом. По какой-то нечетной причине это конфликтует с другим компонентом. Кроме того, поскольку я отправлял электронное письмо асинхронно, у него был свой собственный контекст события, который означал, мне нужно было передать его на карту и не устанавливать его непосредственно в контексте события, который использовался для запуска электронной почты.

После того как я разобрал все это, теперь я могу отправлять электронную почту с любого адреса, который я выбираю, пока его настройка в web.xml, jetty-env.xml и шаблон электронной почты, конечно.

Walter

0

Вы пробовали это (из documentation):

<Configure id='wac' class="org.mortbay.jetty.webapp.WebAppContext"> 
... 
<New id="mail" class="org.mortbay.jetty.plus.naming.Resource"> 
    <Arg><Ref id="wac"/></Arg> 
    <Arg>mail/Session</Arg> 
    <Arg> 
     <New class="org.mortbay.naming.factories.MailSessionReference"> 
     <Set name="user">fred</Set> 
     <Set name="password">OBF:1xmk1w261z0f1w1c1xmq</Set> 
     <Set name="properties"> 
      <New class="java.util.Properties"> 
      <Put name="mail.smtp.host">XXX</Put> 
      <Put name="mail.from">[email protected]</Put> 
      <Put name="mail.debug">true</Put> 
      </New> 
      </Set> 
     </New> 
    </Arg> 
</New> 
</Configure> 
+0

David, я пробовал именно это, но безрезультатно. Я использую Jetty 7, поэтому я изменил классные имена на эквивалент Jetty7. Я не передаю контекст веб-приложения, поэтому я предполагаю, что мои компоненты могут быть доступны для других приложений (если бы у меня были другие). Когда я отлаживаю, этот сеанс находится в JNDI, иначе он выдаст исключение. Оба пользователя/пароль пусты в PasswordAuthenticator. Хотя свойства, переданные с почтовым сеансом, точно так же, как я установил, ни один из них, по-видимому, фактически не используется. Walter – 2009-11-27 14:26:45

+0

David, я обновил вопрос выше. Я возвращал Java Mail Session так, как ожидалось, хотя не все было заполнено. Когда Seam попытался отобразить сообщение, то есть, когда он не смог найти сеанс, что привело к появлению свойств, которые не прилипают. – 2009-12-11 19:53:40

Смежные вопросы