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

kotani.k [E-MAIL ADDRESS DELETED]
2013年 4月 25日 (木) 00:04:22 JST


山中さん

小谷です。

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
>
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-dotnet/attachments/20130425/5b483f1e/attachment.html>


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