<div dir="ltr">志水様<div><br></div><div>回答いただき、ありがとうございます。</div><div><br></div><div>AppConfigの設定は、ある程度、理解できました。</div><div><br></div><div>そこで、根本的な質問になってしまうのですが、ご回答いただけると大変助かります。</div><div><br></div><div>現状、S2Containerを使用している箇所が、下記のように設定しています。</div><div><br></div><div>【Ado.dicon】</div><div><br></div><div>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------</div><div><br></div><div><div><?xml version="1.0" encoding="utf-8" ?></div><div><!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"</div><div>"<a href="http://www.seasar.org/dtd/components.dtd">http://www.seasar.org/dtd/components.dtd</a>"></div><div><components namespace="Ado"></div><div><br></div><div> <!-- データプロバイダ --></div><div> <component name="Oracle" class="Seasar.Extension.ADO.DataProvider"></div><div> <property name="ConnectionType">"Oracle.DataAccess.Client.OracleConnection"</property></div><div> <property name="CommandType">"Oracle.DataAccess.Client.OracleCommand"</property></div><div> <property name="ParameterType">"Oracle.DataAccess.Client.OracleParameter"</property></div><div> <property name="DataAdapterType">"Oracle.DataAccess.Client.OracleDataAdapter"</property></div><div> </component></div><div><br></div><div> <!-- データソース --></div><div> <component name="setConStrinterceptor" class="****(名前空間).SetConnectionStringInterceptor"></div><div> <property name="DataSource">DataSource</property></div><div> </component></div><div> <component name="DataSource" class="Seasar.Extension.Tx.Impl.TxDataSource"></div><div> <property name="DataProvider">Oracle</property></div><div> <!-- ConnectionStringはServer.configで設定--></div><div> <aspect>setConStrinterceptor</aspect></div><div> </component></div><div><br></div><div> <!-- ローカルトランザクション用のインターセプターで使用します。 --></div><div> <component class="Seasar.Extension.Tx.Impl.TransactionContext" /></div><div><br></div><div><br></div><div> <!--</div><div> <component class="Seasar.Extension.ADO.Impl.BasicCommandFactory" /></div><div> <component class="Seasar.Extension.ADO.Impl.BasicDataReaderFactory" /></div><div> --></div><div> </div><div></components></div></div><div><br></div><div>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br></div><div><br></div><div>【SetConnectionStringInterceptor 】</div><div><br></div><div>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br></div><div><br></div><div><div> /// <summary></div><div> /// DataSourceにConnectionStringをセットするインターセプター</div><div> /// </summary></div><div> public class SetConnectionStringInterceptor : AbstractInterceptor</div><div> {</div><div> private Seasar.Extension.Tx.Impl.TxDataSource ds_;</div><div> //private int intPort;</div><div><br></div><div> /// <summary></div><div> /// 対象のデータセット</div><div> /// </summary></div><div> public Seasar.Extension.Tx.Impl.TxDataSource DataSource</div><div> {</div><div> set { ds_ = value; }</div><div> get { return ds_; }</div><div> }</div><div><br></div><div> /// <summary></div><div> /// 処理</div><div> /// </summary></div><div> /// <param name="invocation"></param></div><div> /// <returns></returns></div><div> public override object Invoke(IMethodInvocation invocation)</div><div> {</div><div> if (ds_.ConnectionString == null || ds_.ConnectionString == string.Empty)</div><div> {</div><div> ds_.ConnectionString = GetConnectionString(); ← 接続文字列取得</div><div> }</div><div><br></div><div> object result = invocation.Proceed();</div><div><br></div><div> return result;</div><div> }</div><div><br></div><div> }</div></div><div><br></div><div>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br></div><div><br></div><div>このまま動作させると、ds_がnullとなったため、<br></div><div><span style="font-size:14px">「Seasar.Tests.Quill.</span><span style="font-size:14px">QuillContainerTest.</span><span style="font-size:14px">TestRegistDataSource()」を参考に変更しました。</span></div><div><br></div><div><br></div><div>QuillContainerを使用するということは、「Ado.dicon」を使用しないと認識しております。</div><div>⇒Ado.diconのみでなく、diconファイル自体がなくなると思っています。</div><div><br></div><div>現状、diconファイルが複数存在しています。</div><div><br></div><div>①S2Containerからの移行を行う際に、すべての設定は、AppConfig内に集約されるということでしょうか?</div><div><br></div><div>②Quillに移行する過程で下記のようにインターフェースに属性を付加しています。</div><div> そもそもの認識が間違っているかもしれませんが、</div><div> 属性の付加とDB接続は全く関係ないのでしょうか?</div><div><br></div><div><div style="font-size:14px"><div> [Implementation]</div><div> [Aspect(typeof(SetConnectionStringInterceptor))] ← SetConnectionStringInterceptorを付加</div><div> ※S2Container使用時は、付加していない</div><div> public interface IBhvService</div><div> {</div></div><div style="font-size:14px"> (中略)・・・SQL発行</div><div style="font-size:14px"> }</div></div><div style="font-size:14px"><br></div><div style="font-size:14px">デバッグを行うと、IBhvServiceの中のメソッドが呼ばれた後に、SetConnectionStringInterceptorの<span style="font-size:small">Invoke()の</span></div><div style="font-size:14px"><span style="font-size:small">処理が行われる。</span></div><div style="font-size:14px"><span style="font-size:small">⇒</span><span style="font-size:small">Invoke()内でエラー</span></div><div style="font-size:14px"><span style="font-size:small"> 現状:ds_のNullエラー</span></div><div style="font-size:14px"><span style="font-size:small"> 修正後:</span> Assert.GreaterThanOrEqualTo<int>(ds.DataSourceCollection.Count, 7);でエラー</div><div style="font-size:14px"><br></div><div style="font-size:14px">長文になってしまい、申し訳ございませんが、</div><div style="font-size:14px">知識不足もあり、根本的な理解ができておらず、</div><div style="font-size:14px">試行錯誤している状態ですが、宜しくお願い致します。<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016年5月10日 10:35 志水正幸 <span dir="ltr"><<a href="mailto:ie2m-smz@asahi-net.or.jp" target="_blank">ie2m-smz@asahi-net.or.jp</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>初めまして<br>
志水と申します。<br>
<br>
エラー内容に関してはわからないので、質問の回答にはならないのですが<br>
私の動作環境はNETFrameworkの4.6.1を使用してるので<br>
環境的には類似していると思い返信させてもらいました。<br>
<br>
DBはSQLServerです。<br>
参考になるかわかりませんが、私のAppConfigの設定内容です。<br>
※以前に竹内さんから頂いたメーリングリスト「[seasar-dotnet:2353] Re:
QuillでのSQLServerの接続について」を参考に<br>
実際の接続文字列の内容は、Properties設定をプログラム内で再設定しています。<br>
メーリングリスト[seasar-dotnet:2353]
の内容はブラウザで「[seasar-dotnet:2353]」を検索すれば確認できると思います。<br>
<br>
<br>
<?xml version="1.0" encoding="utf-8"?><br>
<configuration><br>
<configSections><span class=""><br>
<section name="quill"
type="Seasar.Quill.Xml.QuillSectionHandler, Seasar.Quill" /><br></span>
<sectionGroup name="userSettings"
type="System.Configuration.UserSettingsGroup, System,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
><br>
<section name="ProjectWin.Properties.Settings"
type="System.Configuration.ClientSettingsSection, System,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
allowExeDefinition="MachineToLocalUser" requirePermission="false"
/><br>
</sectionGroup><br>
</configSections><br>
<br>
<startup><br>
<supportedRuntime version="v4.0"
sku=".NETFramework,Version=v4.6.1"/><br>
</startup><br>
<br>
<br>
<quill><br>
<dataSources><br>
<br>
<dataSource name="Project_45"><br>
<provider>SqlServer</provider><br>
<connectionString>ProjectWin.Helpers.ConnectionStringHelper</connectionString><span class=""><br>
<class>Seasar.Extension.Tx.Impl.TxDataSource</class><br>
</dataSource> <br>
<br>
</dataSources><br>
<assemblys><br></span>
<!-- for .NET4.0 --><br>
<!--<assembly>MySql.Data, version=6.3.5.0,
Culture=neutral,
PublicKeyToken=c5687fc88969c44d</assembly>--><br>
<!-- for .NET2.0 --><br>
<!--<assembly>MySql.Data, version=1.0.10.1,
Culture=neutral,
PublicKeyToken=c5687fc88969c44d</assembly>--><br>
</assemblys><br>
</quill><br>
<br>
<br>
<userSettings><br>
<ProjectWin.Properties.Settings><br>
<setting name="DatabaseDataSource"
serializeAs="String"><br>
<value>WIN2008-SQLSV\MSSQL2014SERVER</value><br>
</setting><br>
<setting name="DatabasePort" serializeAs="String"><br>
<value>1433</value><br>
</setting><br>
<setting name="DatabasePassword" serializeAs="String"><br>
<value>ug7ku02IjB4DsAOWfJXeDQ==</value><br>
</setting><br>
<setting name="DatabaseInitialCatalog"
serializeAs="String"><br>
<value>Project</value><br>
</setting><br>
<setting name="DatabaseUserID" serializeAs="String"><br>
<value>Projectdb</value><br>
</setting><br>
<setting name="Keycd" serializeAs="String"><br>
<value>1</value><br>
</setting><br>
</ProjectWin.Properties.Settings><br>
</userSettings><br>
</configuration><br>
<br>
<br>
以上<br>
<br>
<br>
</div><div><div class="h5">
<blockquote type="cite">
<div dir="ltr">新谷です。
<div><br>
</div>
<div>久保様、大変申し訳ございません。</div>
<div>各設定を記載させていただきます。</div>
<div><br>
</div>
<div>【AppConfig】</div>
<div>---------------------------------------------------------------------------------------------------------------------------------------------</div>
<div><br>
</div>
<div>
<div><?xml version="1.0"?></div>
<div><configuration></div>
<div><br>
</div>
<div> <configSections></div>
<div> <section name="log4net"
type="System.Configuration.IgnoreSectionHandler"/></div>
<div> <section name="seasar"
type="Seasar.Framework.Xml.S2SectionHandler, Seasar"/></div>
<div> <section name="quill"</div>
<div> type="Seasar.Quill.Xml.QuillSectionHandler,
Seasar.Quill" /></div>
<div> </configSections></div>
<div> </div>
<div>(中略)</div>
<div><br>
</div>
<div> <quill></div>
<div> <dataSources></div>
<div> <dataSource name="ds"></div>
<div> <provider>Oracle</provider></div>
<div>
<connectionString>"接続文字列"</connectionString></div>
<div>
<class>Seasar.Extension.Tx.Impl.TxDataSource</class></div>
<div> </dataSource></div>
<div> </dataSources></div>
<div> <assemblys></div>
<div> <assembly>Seasar.Dao</assembly> </div>
<div> <!-- Oracle Data Provider for .NET を使用する場合に必要です。
--></div>
<div> <assembly></div>
<div> Oracle.DataAccess, version=2.111.7.0,
Culture=neutral,</div>
<div> PublicKeyToken=89b483f429c47342</div>
<div> </assembly></div>
<div> </assemblys></div>
<div> </quill></div>
<div> </div>
<div><startup><supportedRuntime version="v4.0"
sku=".NETFramework,Version=v4.6"/></startup></configuration></div>
</div>
<div><br>
</div>
<div>---------------------------------------------------------------------------------------------------------------------------------------------<br>
</div>
<div><br>
</div>
<div><br>
</div>
<div>接続文字列の箇所を別のConfigファイルから変更したいと考えています。</div>
<div><br>
</div>
<div>また、エラー内容につきましては、</div>
<div><br>
</div>
<div>インターフェース</div>
<div><br>
</div>
<div>
<div> [Implementation]</div>
<div> [Aspect(typeof(SetConnectionStringInterceptor))]</div>
<div> public interface IBhvService</div>
<div> {</div>
</div>
<div> (中略)</div>
<div> }</div>
<div><br>
</div>
<div>
<div> public override object Invoke(IMethodInvocation
invocation)</div>
<div> {</div>
<div> QuillContainer container = new QuillContainer();<br>
</div>
<div><br>
</div>
<div> QuillComponent qc =
container.GetComponent(typeof(SelectableDataSourceProxyWithDictionary));</div>
<div><br>
</div>
<div> Dictionary<int, string> dict = new
Dictionary<int, string>();</div>
<div><br>
</div>
<div>
Assert.AreEqual(typeof(SelectableDataSourceProxyWithDictionary),
qc.ComponentType, "1");</div>
<div> SelectableDataSourceProxyWithDictionary ds =
(SelectableDataSourceProxyWithDictionary)qc.GetComponentObject(</div>
<div>
typeof(SelectableDataSourceProxyWithDictionary));</div>
<div> Assert.IsNotNull(ds, "2");</div>
<div>
Assert.GreaterThanOrEqualTo<int>(ds.DataSourceCollection.Count,
7);</div>
<div><br>
</div>
<div><br>
</div>
<div> foreach (string key in
ds.DataSourceCollection.Keys)</div>
<div> {</div>
<div> IDataSource part = ds.DataSourceCollection[key];</div>
<div> if (part is TxDataSource)</div>
<div> {</div>
<div> // 全てのTxDataSource系のデータソースに</div>
<div> // TransactionContextが設定されているか確認</div>
<div> Assert.IsNotNull(((TxDataSource)part).Context,</div>
<div>
"全てのTxDataSource系のデータソースにTransactionContextが設定されていない");</div>
<div> }</div>
<div> }</div>
<div><br>
</div>
<div> object result = invocation.Proceed();</div>
<div><br>
</div>
<div> return result;</div>
<div><br>
</div>
<div> }</div>
</div>
<div><br>
</div>
<div>上記実行で、「Expected left to be greater or equal than
right.」とエラーが発生します。</div>
<div><br>
</div>
<div>参考は
「Seasar.Tests.Quill.QuillContainerTest.TestRegistDataSource()」
です。</div>
<div><br>
</div>
<div>正直な話、参考にしている箇所も理解できていない状態で参考元が正しいのか?</div>
<div>また、正しかった場合、どこの箇所を変更する必要があるのか?</div>
<div>がわかっていない状況です。</div>
<div><br>
</div>
<div>大変、大雑把な質問で申し訳ございませんが、</div>
<div>ご回答いただけると大変助かります。</div>
<div><br>
</div>
<div>以上、宜しくお願い致します。</div>
<div><br>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2016年5月9日 20:36 kubo <span dir="ltr"><<a href="mailto:dbflute@gmail.com" target="_blank"></a><a href="mailto:dbflute@gmail.com" target="_blank">dbflute@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">久保(jflute)
です<br>
<br>
新谷さん、こんばんは<br>
<br>
> QuillでDB接続(Oracle)が上手くできないため、<br>
<br>
どううまくいかないのか具体的に示した方が、<br>
ML閲覧者も回答しやすいかと思います。<br>
具体的なエラーの内容や、実際にやってみた設定内容など。<br>
(業務上のセキュアな情報はマスクした上で)<br>
_______________________________________________<br>
seasar-dotnet mailing list<br>
<a href="mailto:seasar-dotnet@ml.seasar.org" target="_blank">seasar-dotnet@ml.seasar.org</a><br>
<a href="https://ml.seasar.org/mailman/listinfo/seasar-dotnet" rel="noreferrer" target="_blank">https://ml.seasar.org/mailman/listinfo/seasar-dotnet</a><br>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
seasar-dotnet mailing list
<a href="mailto:seasar-dotnet@ml.seasar.org" target="_blank">seasar-dotnet@ml.seasar.org</a>
<a href="https://ml.seasar.org/mailman/listinfo/seasar-dotnet" target="_blank">https://ml.seasar.org/mailman/listinfo/seasar-dotnet</a>
</pre>
</blockquote>
<br>
<br> </div></div><table style="border-top:1px solid #aaabb6">
        <tbody><tr>
<td style="width:55px;padding-top:18px"><a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient" target="_blank"><img src="https://ipmcdn.avast.com/images/2016/icons/icon-envelope-tick-round-orange-v1.png"></a></td>
                <td style="width:470px;padding-top:20px;color:#41424e;font-size:13px;font-family:Arial,Helvetica,sans-serif;line-height:18px">ウイルス フリー。 <a href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient" style="color:#4453ea" target="_blank">www.avast.com</a>                 </td>
        </tr>
</tbody></table>
</div>
<br>_______________________________________________<br>
seasar-dotnet mailing list<br>
<a href="mailto:seasar-dotnet@ml.seasar.org">seasar-dotnet@ml.seasar.org</a><br>
<a href="https://ml.seasar.org/mailman/listinfo/seasar-dotnet" rel="noreferrer" target="_blank">https://ml.seasar.org/mailman/listinfo/seasar-dotnet</a><br>
<br></blockquote></div><br></div>