[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 メーリングリストの案内