[Seasar-user:10627] Re: [S2Mai] NotSerializableException: freemarker.core.Environment について

[E-MAIL ADDRESS DELETED]
2007年 9月 19日 (水) 10:42:16 JST


六です。

jarの差し替えで解消してよかったです。

で、Serializableの例外ですが、
引数というか、テンプレートに埋め込む要素の
ルートが「data」固定になってます。
ドキュメントが弱いので恐縮です。

なので、引数の名前は任意のものでOKです。

このケースに限らず、テンプレートに何かエラーがあった場合に
HOT deployが終了するタイミングでこの例外が出ます。

テンプレートは補完が効かないのでミスしやすく、
本当はテストしやすい環境を提供した方がいいと考えてます。
SMTP送信しないで、テンプレートに埋め込み済みの文字列をテストするとか。

実は開発環境には一応作ってありまして、
もうちょっとなんとかなんないかなあと思ってる所で
目処が付きましたらリリースを考えてます。

07/09/18 に Junichi Kato<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 六さん,
> 加藤です.
>
> 自己解決.
>
> Maiのインターフェイスの引数は,
>
> public interface ExampleMai {
>
>         public void sendMail(ExampleMailDto data);
>
> }
>
> dataが固定なんですね.
> data以外を指定すると,以下のようになります.
> お騒がせしました.
>
> On Tue, 18 Sep 2007 13:54:08 +0900
> Junichi Kato <[E-MAIL ADDRESS DELETED]> wrote:
>
> > 六さん,
> > 加藤です.
> >
> > 再度,環境を作りなしたところ,ozacc-mail-libraryの1.2.1でうまく送信できました.
> >
> > 少し進んで,別の問題なのですが,
> >
> > <component class="org.seasar.mai.creator.MaiCreator"/>
> >
> > HOT deployで,MaiCreatorを使っているのですが,以下のような例外に見舞われています.
> >
> >  freemarker.core.Environmentがシリアライズできないといっているのでしょうか.
> > どうにかして回避する方法はないでしょうか?
> >
> > DEBUG 2007-09-18 13:45:23,211 [http-8080-Processor24] [ESSR0040]IO例外が発生しました。理由はjava.io.NotSerializableException: freemarker.core.Environment
> > org.seasar.framework.exception.IORuntimeException: [ESSR0040]IO例外が発生しました。理由はjava.io.NotSerializableException: freemarker.core.Environment
> >       at org.seasar.framework.container.hotdeploy.HotdeployUtil$RebuilderImpl.rebuild(HotdeployUtil.java:164)
> >       at org.seasar.framework.container.hotdeploy.HotdeployUtil.rebuildValueInternal(HotdeployUtil.java:126)
> >       at org.seasar.framework.container.hotdeploy.HotdeployUtil.rebuildValue(HotdeployUtil.java:107)
> >       at org.seasar.framework.container.external.RebuildableExternalContextMap.get(RebuildableExternalContextMap.java:59)
> >       at javax.faces.internal.scope.VariableScope.getContexts(VariableScope.java:100)
> >       at javax.faces.internal.scope.VariableScope.getContext(VariableScope.java:50)
> >       at javax.faces.internal.scope.RedirectScope.isRedirecting(RedirectScope.java:60)
> >       at org.seasar.teeda.extension.html.impl.SessionPagePersistence.isOutputlinkTransition(SessionPagePersistence.java:132)
> >       at org.seasar.teeda.extension.html.impl.SessionPagePersistence.restore(SessionPagePersistence.java:105)
> >       at org.seasar.teeda.extension.html.impl.HtmlViewHandler.setUpRequestForExternalBinding(HtmlViewHandler.java:110)
> >       at org.seasar.teeda.extension.html.impl.HtmlViewHandler.restoreView(HtmlViewHandler.java:103)
> >       at org.seasar.teeda.core.lifecycle.impl.RestoreViewPhase.composeViewRoot(RestoreViewPhase.java:113)
> >       at org.seasar.teeda.core.lifecycle.impl.RestoreViewPhase.executePhase(RestoreViewPhase.java:81)
> >       at org.seasar.teeda.core.lifecycle.AbstractPhase.execute(AbstractPhase.java:57)
> >       at org.seasar.teeda.core.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:68)
> >       at javax.faces.webapp.FacesServlet.service(FacesServlet.java:94)
> >       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
> >       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> >       at org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122)
> >       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> >       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> >       at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:63)
> >       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> >       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> >       at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:77)
> >       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> >       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> >       at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
> >       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> >       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> >       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
> >       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
> >       at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
> >       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
> >       at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
> >       at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
> >       at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
> >       at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
> >       at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
> >       at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
> >       at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
> >       at java.lang.Thread.run(Unknown Source)
> > Caused by: java.io.NotSerializableException: freemarker.core.Environment
> >       at java.io.ObjectOutputStream.writeObject0(Unknown Source)
> >       at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
> >       at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
> >       at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject0(Unknown Source)
> >       at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
> >       at java.io.ObjectOutputStream.defaultWriteObject(Unknown Source)
> >       at java.lang.Throwable.writeObject(Unknown Source)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> >       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> >       at java.lang.reflect.Method.invoke(Unknown Source)
> >       at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
> >       at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject0(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject(Unknown Source)
> >       at java.util.HashMap.writeObject(Unknown Source)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> >       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> >       at java.lang.reflect.Method.invoke(Unknown Source)
> >       at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
> >       at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject0(Unknown Source)
> >       at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
> >       at java.io.ObjectOutputStream.defaultWriteObject(Unknown Source)
> >       at java.util.Collections$SynchronizedMap.writeObject(Unknown Source)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> >       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> >       at java.lang.reflect.Method.invoke(Unknown Source)
> >       at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
> >       at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject0(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject(Unknown Source)
> >       at java.util.HashMap.writeObject(Unknown Source)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> >       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> >       at java.lang.reflect.Method.invoke(Unknown Source)
> >       at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
> >       at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject0(Unknown Source)
> >       at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
> >       at java.io.ObjectOutputStream.defaultWriteObject(Unknown Source)
> >       at java.util.Collections$SynchronizedMap.writeObject(Unknown Source)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> >       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> >       at java.lang.reflect.Method.invoke(Unknown Source)
> >       at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
> >       at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject0(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject(Unknown Source)
> >       at org.seasar.framework.container.hotdeploy.HotdeployUtil$RebuilderImpl.rebuild(HotdeployUtil.java:156)
> >       ... 41 more
> > DEBUG 2007-09-18 13:45:23,226 [http-8080-Processor24] HOT deployを終了しました
> > 2007-09-18 13:45:23,226 [http-8080-Processor24] ERROR org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/example-web].[facesServlet] - サーブレット facesServlet のServlet.service()が例外を投げました
> > org.seasar.framework.exception.IORuntimeException: [ESSR0040]IO例外が発生しました。理由はjava.io.NotSerializableException: freemarker.core.Environment
> >       at org.seasar.framework.container.hotdeploy.HotdeployUtil$RebuilderImpl.rebuild(HotdeployUtil.java:164)
> >       at org.seasar.framework.container.hotdeploy.HotdeployUtil.rebuildValueInternal(HotdeployUtil.java:126)
> >       at org.seasar.framework.container.hotdeploy.HotdeployUtil.rebuildValue(HotdeployUtil.java:107)
> >       at org.seasar.framework.container.external.RebuildableExternalContextMap.get(RebuildableExternalContextMap.java:59)
> >       at javax.faces.internal.scope.VariableScope.getContexts(VariableScope.java:100)
> >       at javax.faces.internal.scope.VariableScope.getOrCreateContext(VariableScope.java:58)
> >       at javax.faces.internal.scope.RedirectScope.getOrCreateContext(RedirectScope.java:46)
> >       at org.seasar.teeda.extension.util.TeedaExtensionErrorPageManagerImpl.saveException(TeedaExtensionErrorPageManagerImpl.java:85)
> >       at org.seasar.teeda.extension.util.TeedaExtensionErrorPageManagerImpl.handleException(TeedaExtensionErrorPageManagerImpl.java:59)
> >       at org.seasar.teeda.core.lifecycle.LifecycleImpl.handleException(LifecycleImpl.java:116)
> >       at org.seasar.teeda.core.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:108)
> >       at javax.faces.webapp.FacesServlet.service(FacesServlet.java:94)
> >       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
> >       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> >       at org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:122)
> >       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> >       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> >       at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:63)
> >       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> >       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> >       at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:77)
> >       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> >       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> >       at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
> >       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
> >       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> >       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
> >       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
> >       at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
> >       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
> >       at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
> >       at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
> >       at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
> >       at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
> >       at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
> >       at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
> >       at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
> >       at java.lang.Thread.run(Unknown Source)
> > Caused by: java.io.NotSerializableException: freemarker.core.Environment
> >       at java.io.ObjectOutputStream.writeObject0(Unknown Source)
> >       at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
> >       at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
> >       at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject0(Unknown Source)
> >       at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
> >       at java.io.ObjectOutputStream.defaultWriteObject(Unknown Source)
> >       at java.lang.Throwable.writeObject(Unknown Source)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> >       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> >       at java.lang.reflect.Method.invoke(Unknown Source)
> >       at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
> >       at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject0(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject(Unknown Source)
> >       at java.util.HashMap.writeObject(Unknown Source)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> >       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> >       at java.lang.reflect.Method.invoke(Unknown Source)
> >       at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
> >       at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject0(Unknown Source)
> >       at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
> >       at java.io.ObjectOutputStream.defaultWriteObject(Unknown Source)
> >       at java.util.Collections$SynchronizedMap.writeObject(Unknown Source)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> >       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> >       at java.lang.reflect.Method.invoke(Unknown Source)
> >       at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
> >       at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject0(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject(Unknown Source)
> >       at java.util.HashMap.writeObject(Unknown Source)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> >       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> >       at java.lang.reflect.Method.invoke(Unknown Source)
> >       at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
> >       at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject0(Unknown Source)
> >       at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
> >       at java.io.ObjectOutputStream.defaultWriteObject(Unknown Source)
> >       at java.util.Collections$SynchronizedMap.writeObject(Unknown Source)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> >       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> >       at java.lang.reflect.Method.invoke(Unknown Source)
> >       at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
> >       at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject0(Unknown Source)
> >       at java.io.ObjectOutputStream.writeObject(Unknown Source)
> >       at org.seasar.framework.container.hotdeploy.HotdeployUtil$RebuilderImpl.rebuild(HotdeployUtil.java:156)
> >       ... 37 more
> >
> > On Mon, 17 Sep 2007 22:33:42 +0900
> > "六" <[E-MAIL ADDRESS DELETED]> wrote:
> >
> > > 六です。
> > >
> > > s2maiに同梱またはpom.xmlに設定しているozaccさんのmail libraryで、
> > > SMTPのユーザー名とパスワードが設定される場合に
> > > プロパティ「mail.smtp.auth」の設定がされてませんでした。
> > >
> > > 現在の最新のozacc-mail-libraryの1.2.1のソースを確認すると
> > > 当該プロパティの設定がされています。
> > >
> > > こちらの開発環境で、ozacc-mail-1.2.1.jarに差し替えてテストしましたが
> > > 通りましたので、一度そちらで確認していただけますか?
> > >
> > > jarはこちらからダウンロードできます。
> > > http://sourceforge.jp/projects/spring-ext/
> > > 「ozacc-mail library 1.2」というところです。
> > >
> > > また、Maven2をお使いの場合は、repositoriesに
> > > repositoryを以下のように追加して下さい。
> > >
> > > <repositories>
> > > ・・・・・(略:多分seasarのリポジトリとか)
> > >   <repository>
> > >     <id>spring-ext</id>
> > >     <name>spring-ext</name>
> > >     <url>http://spring-ext.sourceforge.jp/maven</url>
> > >     <layout>legacy</layout>
> > >   </repository>
> > > </repositories>
> > >
> > > で、dependenciesに以下を追加して下さい。
> > >
> > > <dependency>
> > >   <groupId>ozacc-mail</groupId>
> > >   <artifactId>ozacc-mail</artifactId>
> > >   <version>1.2.1</version>
> > >   <type>jar</type>
> > > </dependency>
> > >
> > > これでozacc-mailのバージョンがあがると思います。
> > > お手数ですが宜しく御願いします。
> > >
> > >
> > >
> > > 07/09/17 に Junichi Kato<[E-MAIL ADDRESS DELETED]> さんは書きました:
> > > > 加藤です.
> > > >
> > > > たぶん,私の環境が問題だと思うのですが,アドバイスをお願いいたします.
> > > >
> > > > mailProperties.diconは以下のような構成で,
> > > >
> > > > <components namespace="mailProperties">
> > > >     <include path="config.dicon"/>
> > > >     <component name="host">
> > > >         "mail.grandtech.jp"
> > > >     </component>
> > > >     <component name="port">
> > > >         587
> > > >     </component>
> > > >     <component name="username">
> > > >         "[E-MAIL ADDRESS DELETED]"
> > > >     </component>
> > > >     <component name="password">
> > > >         "hogehoge"
> > > >     </component>
> > > >     <component name="from">
> > > >         null
> > > >     </component>
> > > >     <component name="replyTo">
> > > >         null
> > > >     </component>
> > > >     <component name="returnPath">
> > > >         null
> > > >     </component>
> > > >     <component name="messageId">
> > > >         null
> > > >     </component>
> > > >     <component name="templateEncoding">
> > > >         "UTF-8"
> > > >     </component>
> > > >     <component name="connectionTimeout">
> > > >         10000
> > > >     </component>
> > > >     <component name="readTimeout">
> > > >         10000
> > > >     </component>
> > > >     <component name="mailCharset">
> > > >         "ISO-2022-JP"
> > > >     </component>
> > > > </components>
> > > >
> > > >
> > > > @RunWith(Seasar2.class)
> > > > public class ExampleMaiTest {
> > > >
> > > >         private ExampleMai registerMai;
> > > >
> > > >         @Test
> > > >         public void testSendMail() {
> > > >                 ExampleMailDto mailData = new ExampleMailDto();
> > > >                 mailData.getTo().add(new MailAddress("[E-MAIL ADDRESS DELETED]"));
> > > >                 mailData.setFrom(new MailAddress("[E-MAIL ADDRESS DELETED]"));
> > > >                 registerMai.sendMail(mailData);
> > > >         }
> > > >
> > > > }
> > > >
> > > > というテストを実行すると以下のような例外が発生してしまいます.
> > > >
> > > > ExampleMailDtoには,
> > > >         private MailAddress from;
> > > >         private List<MailAddress> to = new ArrayList<MailAddress>();
> > > >         private List<MailAddress> cc = new ArrayList<MailAddress>();;
> > > >         private List<MailAddress> bcc = new ArrayList<MailAddress>();;
> > > >         private String subject;
> > > > のプロパティがあります.
> > > >
> > > > ExampleMai_sendMail.ftlは,以下の通り.
> > > > Subject: test mail
> > > > test
> > > >
> > > > ちなみに,当該SMTPサーバは通常のメール用途で利用しており,問題なく送信できます.
> > > > SMTP認証は,PLAINと,CRAM-MD5に対応しているサーバです.
> > > >
> > > > mailPropertiesのusernameと,passwordを指定しているのですが,SMTP認証は実行されているのでしょうか?
> > > >
> > > > DEBUG 2007-09-17 14:03:12,849 [main] S2Containerを作成しました。path=mailProperties.dicon
> > > > DEBUG 2007-09-17 14:03:13,108 [main] send mail...
> > > > DEBUG 2007-09-17 14:03:13,109 [main] Mail
> > > > Return-Path: null
> > > > From: [E-MAIL ADDRESS DELETED]
> > > > To: [E-MAIL ADDRESS DELETED]
> > > > Cc: null
> > > > Bcc: null
> > > > Reply-To: null
> > > > Subject: test mail
> > > >
> > > > Subject: test mail
> > > > test
> > > >
> > > > 2007-09-17 14:03:13,689 [main] ERROR com.ozacc.mail.impl.SendMailImpl - メールの送信に失敗しました。
> > > > javax.mail.SendFailedException: Invalid Addresses;
> > > >   nested exception is:
> > > >         com.sun.mail.smtp.SMTPAddressFailedException: 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
> > > >
> > > >         at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1196)
> > > >         at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:584)
> > > >         at com.ozacc.mail.impl.SendMailImpl.processSend(SendMailImpl.java:183)
> > > >         at com.ozacc.mail.impl.SendMailImpl.send(SendMailImpl.java:129)
> > > >         at com.ozacc.mail.impl.SendMailImpl.send(SendMailImpl.java:96)
> > > >         at org.seasar.mai.mail.impl.Invocation.send(Invocation.java:46)
> > > >         at org.seasar.mai.mail.impl.TransportImpl.send(TransportImpl.java:47)
> > > >         at org.seasar.mai.interceptors.S2MaiInterceptor.send(S2MaiInterceptor.java:100)
> > > >         at org.seasar.mai.interceptors.S2MaiInterceptor.sendMail(S2MaiInterceptor.java:80)
> > > >         at org.seasar.mai.interceptors.S2MaiInterceptor.invoke(S2MaiInterceptor.java:66)
> > > >         at org.example.web.mai.ExampleMai$$EnhancedByS2AOP$$1e1ee5d$$MethodInvocation$$sendMail0.proceed(MethodInvocationClassGenerator.java)
> > > >         at org.seasar.framework.aop.interceptors.TraceInterceptor.invoke(TraceInterceptor.java:73)
> > > >         at org.example.web.mai.ExampleMai$$EnhancedByS2AOP$$1e1ee5d$$MethodInvocation$$sendMail0.proceed(MethodInvocationClassGenerator.java)
> > > >         at org.example.web.mai.ExampleMai$$EnhancedByS2AOP$$1e1ee5d.sendMail(ExampleMai$$EnhancedByS2AOP$$1e1ee5d.java)
> > > >         at org.example.web.mai.ExampleMaiTest.testSendMail(ExampleMaiTest.java:21)
> > > >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > > >         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> > > >         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> > > >         at java.lang.reflect.Method.invoke(Method.java:585)
> > > >         at org.seasar.framework.unit.S2TestMethodRunner.executeMethodBody(S2TestMethodRunner.java:673)
> > > >         at org.seasar.framework.unit.S2TestMethodRunner.executeMethod(S2TestMethodRunner.java:648)
> > > >         at org.seasar.framework.unit.S2TestMethodRunner.runTest(S2TestMethodRunner.java:614)
> > > >         at org.seasar.framework.unit.S2TestMethodRunner.runMethod(S2TestMethodRunner.java:253)
> > > >         at org.seasar.framework.unit.S2TestMethodRunner.run(S2TestMethodRunner.java:171)
> > > >         at org.seasar.framework.unit.S2TestClassMethodsRunner.invokeTestMethod(S2TestClassMethodsRunner.java:227)
> > > >         at org.seasar.framework.unit.S2TestClassMethodsRunner.run(S2TestClassMethodsRunner.java:89)
> > > >         at org.seasar.framework.unit.S2TestClassRunner.run(S2TestClassRunner.java:47)
> > > >         at org.seasar.framework.unit.Seasar2.run(Seasar2.java:168)
> > > >         at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
> > > >         at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> > > >         at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
> > > >         at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
> > > >         at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
> > > >         at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> > > > Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
> > > >
> > > >         at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1047)
> > > >         ... 33 more
> > > > DEBUG 2007-09-17 14:03:13,719 [main] END org.example.web.mai.ExampleMai#sendMail([E-MAIL ADDRESS DELETED]) Throwable:com.ozacc.mail.MailSendException: メールの送信に失敗しました。
> > > > DEBUG 2007-09-17 14:03:13,731 [main] トランザクションをロールバックしました。tx={0}
> > > > DEBUG 2007-09-17 14:03:13,754 [main] 環境変数#Envにファイル(env.txt)から値(ct)が設定されました
> > > >
> > > > ───────────────────────────────
> > > >  株式会社 グランテック
> > > >  代表取締役社長
> > > >  加藤 潤一 Junichi Kato
> > > >
> > > > 〒154-0012
> > > > 東京都世田谷区駒沢2-16-1 サンドー駒沢ビル4F
> > > > TEL 050-5538-2383  FAX 03-3487-7211
> > > > HP : http://www.grandtech.jp/
> > > > BLOG : http://d.hatena.ne.jp/j5ik2o/
> > > > E-MAIL : [E-MAIL ADDRESS DELETED]
> > > >
> > > > _______________________________________________
> > > > Seasar-user mailing list
> > > > [E-MAIL ADDRESS DELETED]
> > > > https://ml.seasar.org/mailman/listinfo/seasar-user
> > > >
> > > _______________________________________________
> > > Seasar-user mailing list
> > > [E-MAIL ADDRESS DELETED]
> > > https://ml.seasar.org/mailman/listinfo/seasar-user
> >
> > ───────────────────────────────
> >  株式会社 グランテック
> >  代表取締役社長
> >  加藤 潤一 Junichi Kato
> >
> > 〒154-0012
> > 東京都世田谷区駒沢2-16-1 サンドー駒沢ビル4F
> > TEL 050-5538-2383  FAX 03-3487-7211
> > HP : http://www.grandtech.jp/
> > BLOG : http://d.hatena.ne.jp/j5ik2o/
> > E-MAIL : [E-MAIL ADDRESS DELETED]
> >
> > _______________________________________________
> > Seasar-user mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-user
>
> ───────────────────────────────
>  株式会社 グランテック
>  代表取締役社長
>  加藤 潤一 Junichi Kato
>
> 〒154-0012
> 東京都世田谷区駒沢2-16-1 サンドー駒沢ビル4F
> TEL 050-5538-2383  FAX 03-3487-7211
> HP : http://www.grandtech.jp/
> BLOG : http://d.hatena.ne.jp/j5ik2o/
> E-MAIL : [E-MAIL ADDRESS DELETED]
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>



Seasar-user メーリングリストの案内