[seasar-dotnet:2125] Re: QuillのDAO機能でデータベース接続が取得できない

ASO Katsumi [E-MAIL ADDRESS DELETED]
2011年 12月 26日 (月) 12:27:08 JST


こんにちは、ASOです。

先日来、当MLで頂いたご指摘・アドバイスを頼りに色々と試してきましたが状況は好転せず、
一からVisual Studioのプロジェクトを見直したところ、アセンブリの読み込み指定が
漏れていたという結論に達しました。

Oracle.DataAccess.dllを、参照設定やプロジェクトにコピーする設定となっていました。
Web.Configにて、Quill.Daoのロード対象のアセンブリとして指定したところ、件の問題が
再現しなくなりました。

変更内容:次の13行〜16行を追記した。
---- ここから
 1:  <quill>
 2:    <dataSources>
 3:      <dataSource name="ds">
 4:        <provider>ODP</provider>
 5:        <connectionString>"User Id=dev1;Password=dev1;Data Source=orcl;"</connectionString>
 6:        <class>Seasar.Extension.Tx.Impl.TxDataSource</class>
 7:      </dataSource>
 8:    </dataSources>
 9:    <!-- ロード対象アセンブリ -->
10:    <assemblys>
11:      <assembly>Seasar</assembly>
12:      <assembly>Seasar.Dao</assembly>
13:      <assembly>
14:        Oracle.DataAccess, version=2.112.2.0, Culture=Neutral,
15:        PublicKeyToken=89b483f429c47342
16:      </assembly>
17:    </assemblys>
18:  </quill>
---- ここまで

最終的に、設定漏れというオチで大変申し訳ありません。
情報提供やアドバイス頂いた皆さん、どうもありがとうございました。
本件は、以上でクローズさせて頂きます。

P.S.
参照設定やプロジェクトにコピーでも、最初のサービス開始時点では成功する点については、
不思議な感じが残っているのですが、当面の問題が(恐らく)正しい方向でクリアできたので、
追及はしない事にしました。


On Tue, 06 Dec 2011 16:53:12 +0900, ASO Katsumi <[E-MAIL ADDRESS DELETED]> wrote:
> こんにちは、ASOです。
> 
> 現在、WCF+Oracle(ODP)+S2(Quill)でWCFサービス開発を行っています。
> 作成したWCFサービスを、IIS上に配置し、
> 1 初回アクセスは問題無く動作する。
> 2 サービスのタイムアウトを待つ。
> 3 再度同じサービスにアクセスする。
> という操作を行ったところ、3の段階で
> 「Seasar.Framework.Container.Factory.ClassNotFoundRuntimeException」例外が発生し、処理が中断されます。
> 「詳細は "Oracle.DataAccess.Client.OracleConnection"」との事です。
> # ログに記録されたStackTraceを文末に掲載します。
> 
> この現象を回避するか、あるいは原因を突き止め対策したいと思っており、
> 情報収集していますが、これといったリソースを見つけられず、MLで相談しようと
> 考えた次第です。
> 
> 動作環境は次の通りです。
>   Windows Server 2008 R2
>   IIS 7.5
>   .NET Framework V4
>   WCF
>   Seasa2.NET 1.4.0 RC2 改 ([seasar-dotnet:2093]で井上さんに教えて頂いた内容です)
> 
>   Oracle 11g
>   ODP (32bit)
> 以上。
> 
> ログ中の「Aaaaa.Bbbbbb.MainService.MainService」というクラスがServiceContractであり、
> Implementation属性を付けてあります。
> 
> 同じくログ中の「Aaaaa.Bbbbbb.MainService.MainService.Login」というメソッドがOperationContractであり、
> Transaction、Aspect(ログ出力インターセプタークラス)という各属性が付いています。
> 
> 何か、お気付きの事があればお知らせ下さい。
> 情報の不足がございましたら、ご指導下さい。
> 情報ポインタをご紹介頂くだけでも結構です。
> よろしくお願い致します。
> 
> 以下、StackTraceです。
> 2011-12-06 12:14:48,188 ERROR Server-Name request-userid [EXCEPTION] Aaaaa.Bbbbbb.MainService.MainService.Login [ESSR0071]SQLで例外が発生しました。理由はSeasar.Framework.Container.Factory.ClassNotFoundRuntimeException: [ESSR0044]クラスが見つかりませんでした。詳細は "Oracle.DataAccess.Client.OracleConnection"
>    at Seasar.Extension.ADO.Impl.DataProviderDataSource.ForName(String name)
>    at Seasar.Extension.ADO.Impl.DataProviderDataSource.GetConnection()
>    at Seasar.Extension.Tx.Impl.TxDataSource.GetConnection()
>    at Seasar.Extension.ADO.Impl.AbstractSelectableDataSourceProxy.GetConnection()
>    at Seasar.Framework.Util.DataSourceUtil.GetConnection(IDataSource dataSource)
> 2011-12-06 12:14:48,188 ERROR Server-Name request-userid [EXCEPTION] Aaaaa.Bbbbbb.MainService.MainService.Login Seasar
> 2011-12-06 12:14:48,188 ERROR Server-Name request-userid [EXCEPTION] Aaaaa.Bbbbbb.MainService.MainService.Login    at Seasar.Framework.Util.DataSourceUtil.GetConnection(IDataSource dataSource)
>    at Seasar.Extension.Tx.Impl.TransactionContext.OpenConnection()
>    at Seasar.Extension.Tx.Impl.TransactionContext.Begin()
>    at Seasar.Extension.Tx.Impl.LocalRequiredTxHandler.HandleTransaction(IMethodInvocation invocation)
>    at Seasar.Extension.Tx.Impl.LocalRequiredTxHandler.Handle(IMethodInvocation invocation, Boolean alreadyInTransaction)
>    at Seasar.Extension.Tx.TransactionInterceptor.Invoke(IMethodInvocation invocation)
>    at Seasar.Framework.Aop.Impl.DynamicProxyMethodInvocation.Proceed()
>    at Aaaaa.Bbbbbb.Server.LogAop.Invoke(IMethodInvocation invocation) in C:\Aaaaa\Source\Aaaaa.Bbbbbb.Server\Aaaaa\LogAop.vb:line 63
>    at Seasar.Framework.Aop.Impl.InterceptorAdapter.Intercept(IInvocation invocation)
>    at Castle.DynamicProxy.AbstractInvocation.Proceed()
>    at Castle.Proxies.LoginFacadeProxy.Execute(RequstParameter req)
>    at Aaaaa.Bbbbbb.MainService.MainService.Login(RequstParameter req) in C:\Aaaaa\Source\Aaaaa.Bbbbbb.MainService\Aaaaa\MainService.svc.vb:line 39
> 
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet


seasar-dotnet メーリングリストの案内