[seasar-dotnet:801] Re: GetComponentで失敗してしまう

山崎健二 [E-MAIL ADDRESS DELETED]
2008年 3月 14日 (金) 19:05:04 JST


山崎です。

ひとまず、<assembly>に必要なものを記述して様子を見たいと思います。
迅速な回答ありがとうございました。


Kazuya Sugimoto さんは書きました:
> 杉本です。
> 
>> この設定が無いことで、一度ロードされてもアンロードされてしまうと
>> いうことでしょうか?
> 
> まずアンロードについてですが、アプリケーションの有効期限が切れると
> 自動的にアンロードされてしまいます。この有効期限がいつ切れるのかが
> 良い資料が見つからないので、ご存じの方がいれば教えて頂きたいのですが、
> 最後のセッションが無効になるとアンロードされるようです。たぶん。
> 
> なので定期的にアクセスがある場合はアンロードは行われないと思います。
> 
> 次に<assembly>の意味ですが、普通に?アセンブリ中のクラスを利用する場合
> には<assembly>でアセンブリのロードを行う必要が無いのですが、あるクラスの
> インスタンスを生成しようとして、そのクラスを含むアセンブリがまだAppDomain
> にロードされていない場合にリフレクション等でインスタンス化を行おうとすると、
> アセンブリがAppDomainにロードできずにクラスが見つかりません。
> 
> これを回避するために<assembly>にアセンブリを指定することで、AppDomain
> にあらかじめアセンブリをロードできるようになっています。
> 
> サーバ起動時には、なんらかの理由で問題が起きているアセンブリが
> AppDomainにロードされているため問題なく動作しているのだと思います。
> 
> ということで<assembly>の設定を行って、試していただけますでしょうか。
> 
> なんかグダグダな説明になってしまいました・・orz
> わかりにくい部分がありましたら、また聞いてください。
> 
> 08/03/14 に 山崎健二さんは書きました:
>> 山崎です。
>>
>> <assembly>の設定はしておりません。
>>
>> この設定が無いことで、一度ロードされてもアンロードされてしまうと
>> いうことでしょうか?
>>
>> Kazuya Sugimoto さんは書きました:
>>> 杉本です。
>>>
>>> しばらく放置すると発生するということは、アプリケーションがアンロードされて
>>> いるような感じですね。前にもあったような・・
>>>
>>> データプロバイダ関係で発生しているようですね。
>>> アプリケーション構成ファイルでアセンブリをAppDomainに読み込む設定は
>>> されてますでしょうか?
>>> http://s2container.net.seasar.org/ja/dicontainer-reference.html#AppConfig
>>>
>>> 08/03/14 に 山崎健二さんは書きました:
>>>> 山崎@テックファームです。
>>>> いつもお世話になります。
>>>>
>>>> 以下の環境でASP.NETアプリケーションを開発しています。
>>>>
>>>> IIS 6.0
>>>> ASP.NET 2.0.50727
>>>> S2Container.NET 1.3.6
>>>> PostgreSQL 8.2
>>>>
>>>> ASPをデプロイ直後には正常に動作するのですが、2時間程度放置した後
>>>> アクセスすると以下のようなエラーが発生しています。
>>>>
>>>> SingletonS2ContainerFactory.Container.GetComponent()を実行していますが
>>>> 何度も繰り返しアクセスしてもエラーは発生せず、放置した場合のみ再現します。
>>>>
>>>> なおGlobal.asaxのApplication_StartでSingletonS2ContainerFactory.Init()を
>>>> 実行してあります。
>>>>
>>>> 何か設定の問題など指摘していただけると幸いです。
>>>>
>>>>
>>>> ---
>>>> イベント コード: 3005
>>>> イベント メッセージ: ハンドルされていない例外が発生しました。
>>>> イベント時間: 2008/03/14 15:45:08
>>>> イベント時間 (UTC): 2008/03/14 6:45:08
>>>> イベント ID: e8fcdb7a099c4de2b5b6126968a8bf45
>>>> イベント シーケンス: 5
>>>> イベント発生: 2
>>>> イベント詳細コード: 0
>>>>
>>>> アプリケーション情報:
>>>>    アプリケーション ドメイン: /LM/W3SVC/1/Root/lgs-1-128499503535468750
>>>>    信頼レベル: Full
>>>>    アプリケーションの仮想パス: /lgs
>>>>    アプリケーション パス: ***
>>>>    コンピュータ名: ***
>>>>
>>>> プロセス情報:
>>>>    プロセス ID: 1592
>>>>    プロセス名: w3wp.exe
>>>>    アカウント名: NT AUTHORITY\NETWORK SERVICE
>>>>
>>>> 例外情報:
>>>>    例外の種類: Exception
>>>>    例外メッセージ: doLogin()で障害。[ESSR0071]SQLで例外が発生しました。
>>>> 理由はSystem.ArgumentNullException: 値を Null にすることはできません。
>>>> パラメータ名: type
>>>>   場所 System.Activator.CreateInstance(Type type, Boolean nonPublic)
>>>>   場所 Seasar.Extension.ADO.Impl.DataProviderDataSource.GetConnection()
>>>>   場所 Seasar.Extension.Tx.Impl.TxDataSource.GetConnection()
>>>>   場所 Seasar.Framework.Util.DataSourceUtil.GetConnection(IDataSource
>>>> dataSource)
>>>
>>
>> _______________________________________________
>> seasar-dotnet mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>
> 
> 




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