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

kotani.k [E-MAIL ADDRESS DELETED]
2011年 12月 7日 (水) 00:25:17 JST


ASOさん

こんにちは。小谷です。

お手数ですが、状況の確認のため二点ご確認させて下さい。

1.Implementation属性を設定しているということは、
 どこかでServiceContractに対してQuillInjectorのInjectメソッドを使ってインジェクションをしている箇所があると思うのですが、
 それはどちらで行っているでしょうか?


2.下記のような修正を行って実行した場合は如何でしょうか?

ServiceContract, OperationContract属性を設定しているクラスからQuill, Seasar.NET関係の属性を外す
↓
LoginメソッドをもつHogeFacadeクラスを作成して
Aaaaa.Bbbbbb.MainService.MainService.Login内で行っている処理をHogeFacade#Loginに移す
↓
HogeFacade#LoginにTransacton,Aspect属性を設定
↓
Aaaaa.Bbbbbb.MainService.MainService.Login内で
HogeFacadeのインスタンスを下記のようにして取得
var facade = (HogeFacade)ComponentUtil.GetComponent(QuillInjector.GetInstance().Container,
typeof(HogeFacade));
↓
facade.Loginメソッドを呼び出す

2011年12月6日16:53 ASO Katsumi <[E-MAIL ADDRESS DELETED]>:
> こんにちは、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 メーリングリストの案内