[seasar-dotnet:2267] S2Dao DBアクセスがうまくいきません
mea aus
[E-MAIL ADDRESS DELETED]
2013年 4月 23日 (火) 22:19:06 JST
こんばんは。山中と申します。
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>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-dotnet/attachments/20130423/91db9c79/attachment.html>
seasar-dotnet メーリングリストの案内