[seasar-dotnet:2279] Re: S2Dao DBアクセスがうまくいきません

kotani.k [E-MAIL ADDRESS DELETED]
2013年 4月 30日 (火) 06:02:04 JST


山中さん

小谷です。

お役に立てず、申し訳ないです。
Seasar.NETとしてはDIコンテナはQuill推奨なので、そちらで問題ないということであれば、
Quillのご利用をお願い致します。

また、プロパティインジェクションは、こちらのページに記載されているように
(http://s2container.net.seasar.org/ja/dicontainer-reference.html#DIType)
プロパティにDIコンテナ上に定義したオブジェクトを自動的に設定することを言います。

1.3.19でも駄目、毎回必ずDaoMetaDataImplのDataSourceがnullになっており、
更に他のプロパティインジェクションが正常に行われているとしたら、
恐らくDaoMetaDataImplへのプロパティインジェクションの設定が何らかの形で間違っている、と考え
書かせていただきました。

以上です。


2013年4月27日 0:01 mea aus <meaaus @ gmail.com>:

> 小谷さん
>
> 山中です。
>
> ・SingletonS2ContainerFactory.Init()メソッドは呼んでいるか?
> →呼んでいました。
> ・他のプロパティインジェクションは機能しているか?
> →requestやsessionということでいいでしょうか?セットされていました。
> ・Seasar.NET1.3.19+.NET Framework3.5で同じ処理を実行した場合も同様(DataSourceがnullのまま)か?
> →同じでした。
>
> いただいた確認事項も含め色々と試行錯誤の中、S2ContainerからQuilへ変更したところ、あっさりDataSourceがとれました。
> 規模の小さいアプリで、S2Containerを使う理由も特にありませんので、あきらめようと思います。
> S2Containerでだめだった根本原因はわかっておりませんが、クローズとさせてください。
> お手数をおかけし、申し訳ありません。ありがとうございました。
>
>
>
> 2013/4/26 kotani.k <keikotani926 @ gmail.com>
>
> 山中さん
>>
>> 小谷です。
>>
>> 駄目でしたか。。。
>> 環境については了解しました。
>>
>> お手数ですが、下記の確認をしてみていただけないでしょうか?
>> ・SingletonS2ContainerFactory.Init()メソッドは呼んでいるか?
>> ・他のプロパティインジェクションは機能しているか?
>> ・Seasar.NET1.3.19+.NET Framework3.5で同じ処理を実行した場合も同様(DataSourceがnullのまま)か?
>>
>> 以上です。
>> よろしくお願い致します。
>>
>>
>>
>> 2013年4月25日 21:08 mea aus <meaaus @ gmail.com>:
>>
>> 山中です。
>>>
>>> 小谷さん、ありがとうございます。
>>> OracleEx.diconのデータソースについての定義、変えてみましたがDataSourceはnullのままでした。
>>>
>>> 環境は、下の通りです。
>>> .NET Framework 4
>>> Seaser 1.4.0
>>>
>>> C# ASP.NET MVC
>>> 開発マシン:Windows7 64bit
>>> DBサーバー:REHL6 Oracle11g
>>>
>>>
>>> よろしくお願い致します。
>>>
>>> 2013/4/25 kotani.k <keikotani926 @ gmail.com>
>>>
>>> 山中さん
>>>>
>>>> 小谷です。
>>>>
>>>> OracleEx.diconのデータソースについての定義を
>>>>  <component name="SqlDataSource" class="Seasar.Extension.Tx.
>>>> Impl.TxDataSource">
>>>>>>>>  <component name="DataSource" class="Seasar.Extension.Tx.
>>>> Impl.TxDataSource">
>>>>
>>>> に変えるといかがでしょうか?
>>>> DataSourceがnullということはインジェクションが行われていないようなので。
>>>>
>>>> また、できればお使いになっているSeasar.NETと.NET <http://Seasar.xn--net-yb4b.NET>Frameworkのバージョン、環境を教えていただけるとありがたいです。
>>>> (ログを見る限りではASP.NET MVC?)
>>>>
>>>> 以上です。
>>>>
>>>>
>>>>
>>>>
>>>> 2013年4月23日 22:19 mea aus <meaaus @ gmail.com>:
>>>>
>>>>> こんばんは。山中と申します。
>>>>> S2dao.netを使ってWebアプリを作成していますが、うまくDBアクセスできず、原因がわからず困っています。
>>>>> Seasar.Dao.Impl.DaoMetaDataImpl.Initialize()
>>>>> の85行目、DataSourceがnullで落ちているようなので、
>>>>> DataSourceがうまく取得できていないようです。
>>>>> 原因について、何か心当たりがありましたらご教授いただけますでしょうか。
>>>>> よろしくお願い致します。
>>>>>
>>>>> ・実行コード
>>>>> ...
>>>>> IS2Container container = SingletonS2ContainerFactory.Container;
>>>>> IxxxDao xxxDao = container.GetComponent(typeof(IxxxDao)) as
>>>>> IxxxDao; ←Container、Daoはうまく生成できています
>>>>> xxxDao.GetOverview(1234); ←ここでNullPointerが発生
>>>>>
>>>>> ・スタックトレース
>>>>>
>>>>> [NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。]
>>>>>    Seasar.Dao.Impl.DaoMetaDataImpl.Initialize() +85
>>>>>    Seasar.Dao.Impl.DaoMetaDataFactoryImpl.CreateDaoMetaData(Type
>>>>> daoType) +375
>>>>>    Seasar.Dao.Impl.DaoMetaDataFactoryImpl.GetDaoMetaData(Type daoType)
>>>>> +187
>>>>>    Seasar.Dao.Interceptors.S2DaoInterceptor.Invoke(IMethodInvocation
>>>>> invocation) +159
>>>>>    Seasar.Framework.Aop.Proxy.AopProxy.Invoke(IMessage msg) +842
>>>>>
>>>>>  System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&
>>>>> msgData, Int32 type) +237
>>>>>    xxx.Dao.IxxxHistoryDao.GetOverview(Int32 zzz) +0
>>>>>    PaymentRefund.Controllers.xxx.Overview(String zzz) in
>>>>> D:\develop\iis\xxx\xxx\Controllers\xxx.cs:47
>>>>>    lambda_method(Closure , ControllerBase , Object[] ) +162
>>>>>    System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase
>>>>> controller, Object[] parameters) +51
>>>>>    System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext
>>>>> controllerContext, IDictionary`2 parameters) +409
>>>>>
>>>>>  System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext
>>>>> controllerContext, ActionDescriptor actionDescriptor, IDictionary`2
>>>>> parameters) +52
>>>>>
>>>>>  System.Web.Mvc.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a()
>>>>> +127
>>>>>
>>>>>  System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter
>>>>> filter, ActionExecutingContext preContext, Func`1 continuation) +436
>>>>>
>>>>>  System.Web.Mvc.<>c__DisplayClassf.<InvokeActionMethodWithFilters>b__c() +61
>>>>>
>>>>>  System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext
>>>>> controllerContext, IList`1 filters, ActionDescriptor actionDescriptor,
>>>>> IDictionary`2 parameters) +305
>>>>>
>>>>>  System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext
>>>>> controllerContext, String actionName) +830
>>>>>    System.Web.Mvc.Controller.ExecuteCore() +136
>>>>>    System.Web.Mvc.ControllerBase.Execute(RequestContext
>>>>> requestContext) +111
>>>>>
>>>>>  System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext
>>>>> requestContext) +39
>>>>>    System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__4() +65
>>>>>    System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +44
>>>>>
>>>>>  System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult
>>>>> _) +42
>>>>>    System.Web.Mvc.Async.WrappedAsyncResult`1.End() +141
>>>>>    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult
>>>>> asyncResult, Object tag) +54
>>>>>    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult
>>>>> asyncResult, Object tag) +40
>>>>>    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult
>>>>> asyncResult) +52
>>>>>
>>>>>  System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult
>>>>> result) +38
>>>>>
>>>>>  System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
>>>>> +8836977
>>>>>    System.Web.HttpApplication.ExecuteStep(IExecutionStep step,
>>>>> Boolean& completedSynchronously) +184
>>>>>
>>>>>
>>>>>
>>>>> ・設定ファイル
>>>>> [Web.config]
>>>>> ...
>>>>>   <configSections>
>>>>>     <section name="log4net"
>>>>> type="System.Configuration.IgnoreSectionHandler" />
>>>>>     <section name="seasar"
>>>>> type="Seasar.Framework.Xml.S2SectionHandler, Seasar" />
>>>>>   </configSections>
>>>>>
>>>>>   <!-- ▼log4netの設定 -->
>>>>>   <log4net>
>>>>> (略)
>>>>>   </log4net>
>>>>>
>>>>>   <!-- ▼Seasarの設定 -->
>>>>>   <seasar>
>>>>>     <!--ルートのdiconファイルを設定-->
>>>>>     <configPath>xxx.Dicon.app.dicon</configPath>
>>>>>     <assemblys>
>>>>>       <!--読み込むアセンブリ-->
>>>>>       <assembly>Seasar.Dao</assembly>
>>>>>       <assembly>System.Data.OracleClient, version=1.0.5000.0,
>>>>> Culture=neutral, PublicKeyToken=b77a5c561934e089</assembly>
>>>>>     </assemblys>
>>>>>   </seasar>
>>>>> ...
>>>>>
>>>>> [OracleEx.dicon]
>>>>> <?xml version="1.0" encoding="utf-8" ?>
>>>>> <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
>>>>> "http://www.seasar.org/dtd/components21.dtd">
>>>>> <components namespace="OracleEx">
>>>>>   <!-- データプロバイダ -->
>>>>>   <component name="Oracle" class="Seasar.Extension.ADO.DataProvider">
>>>>>     <property
>>>>> name="ConnectionType">"System.Data.OracleClient.OracleConnection"</property>
>>>>>     <property
>>>>> name="CommandType">"System.Data.OracleClient.OracleCommand"</property>
>>>>>     <property
>>>>> name="ParameterType">"System.Data.OracleClient.OracleParameter"</property>
>>>>>     <property
>>>>> name="DataAdapterType">"System.Data.OracleClient.OracleDataAdapter"</property>
>>>>>   </component>
>>>>>
>>>>>   <!-- データソース -->
>>>>>   <component name="SqlDataSource"
>>>>> class="Seasar.Extension.Tx.Impl.TxDataSource">
>>>>>     <property name="DataProvider">Oracle</property>
>>>>>     <property name="ConnectionString">"Data Source=aaa;User
>>>>> Id=bbb;Password=ccc;"</property>
>>>>>   </component>
>>>>>
>>>>>   <!-- DaoInterceptor -->
>>>>>   <component class="Seasar.Extension.ADO.Impl.BasicDataReaderFactory"
>>>>> />
>>>>>   <component class="Seasar.Extension.ADO.Impl.BasicCommandFactory" />
>>>>>   <component class="Seasar.Dao.Impl.DaoMetaDataFactoryImpl" />
>>>>>   <component name="DaoInterceptor"
>>>>> class="Seasar.Dao.Interceptors.S2DaoInterceptor"/>
>>>>>
>>>>>   <!-- ローカルトランザクション用のインターセプター -->
>>>>>   <component name="LocalRequiredTx"
>>>>> class="Seasar.Extension.Tx.TransactionInterceptor">
>>>>>     <arg>
>>>>>       <component
>>>>> class="Seasar.Extension.Tx.Impl.LocalRequiredTxHandler" />
>>>>>     </arg>
>>>>>     <property
>>>>> name="TransactionStateHandler">TransactionContext</property>
>>>>>   </component>
>>>>>
>>>>>   <!-- 分離レベルの指定 -->
>>>>>   <component name="TransactionContext"
>>>>> class="Seasar.Extension.Tx.Impl.TransactionContext">
>>>>>     <property
>>>>> name="IsolationLevel">System.Data.IsolationLevel.ReadCommitted</property>
>>>>>   </component>
>>>>>
>>>>> </components>
>>>>>
>>>>> _______________________________________________
>>>>> seasar-dotnet mailing list
>>>>> seasar-dotnet @ ml.seasar.org
>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> seasar-dotnet mailing list
>>>> seasar-dotnet @ ml.seasar.org
>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>
>>>>
>>>
>>> _______________________________________________
>>> seasar-dotnet mailing list
>>> seasar-dotnet @ ml.seasar.org
>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>
>>>
>>
>> _______________________________________________
>> seasar-dotnet mailing list
>> seasar-dotnet @ ml.seasar.org
>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>
>>
>
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-dotnet/attachments/20130430/fc68be8d/attachment.html>


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