<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">志水です。<br>
<br>
<div>>このまま動作させると、ds_がnullとなったため、<br>
</div>
<div><span>>「Seasar.Tests.Quill.</span><span>QuillContainerTest.</span><span>TestRegistDataSource()」
を参考に変更しました。</span></div>
<div><br>
◆すいません、上記に関してはちょっとわかりません。<br>
<br>
◆これって、どういう環境で実行していますか?<br>
①Seasarとかのテスト用プロジェクトを使用しているんですかね?<br>
②それとも、現行システムにQuillを付け足した環境で接続テストの実行をしているんですかね?<br>
</div>
<div> ③それとも、新規プロジェクトを作って接続テストのみしているんですかね?<br>
<br>
→ ①の場合、付属のテスト環境などは使用したことがないのでわからないです。<br>
②の場合、実行するのは一旦やめた方がいいと思います。<br>
上記①、②の場合<br>
③のように新規プロジェクトで接続できる環境を作成して<br>
簡単な画面から接続確認した方が、設定方法などが<br>
わかるので理解するためや後の実験にも使用できるので良いように思います。<br>
現行環境にQuillを入れいるのではなく、<br>
この新規環境に現行システムを移植する方法も検討してもよいのではないでしょうか?<br>
<br>
<br>
</div>
<div>>QuillContainerを使用するということは、「Ado.dicon」を使用しないと認識しております。</div>
<div>>⇒Ado.diconのみでなく、diconファイル自体がなくなると思っています。</div>
<div>>現状、diconファイルが複数存在しています。</div>
<div><br>
◆少なくとも私の環境ではdiconファイルに関して何も意識していませんし、触ったこともありません。<br>
普通に一つのDBを使用する程度ならAppConfigに接続文字列と使用するDB(ORACLE)の指定をするだけでいいと思いま
す。<br>
<br>
<br>
</div>
<div>>①S2Containerからの移行を行う際に、すべての設定は、AppConfig内に集約されるということでしょうか?</div>
<div><br>
◆すべての設定が何かわからないですが、少なくともDB設定はAppConfig内で行えばいいとおもいます。<br>
例えばlog4netはDLしたプロジェクトをソリューションにいれてコンパイルして使用しています。<br>
既存のxmlを使用していないので、AppConfigでなくassemblyInfoに設定しています。<br>
→[assembly: log4net.Config.XmlConfigurator(ConfigFile =
"Log4netConfig.xml", Watch = true)]<br>
<br>
私はDBFLUTE.NETを使っているため<br>
トランザクションは、クラスの更新メソッド実行時に[Transaction]設定しているので<br>
独自のトランザクション開始終了やコミットに関しての設定はわかりません。<br>
<br>
<br>
>②Quillに移行する過程で下記のようにインターフェースに属性を付加しています。</div>
<div>> そもそもの認識が間違っているかもしれませんが、</div>
<div>> 属性の付加とDB接続は全く関係ないのでしょうか?</div>
<br>
私はDBFLUTE.NETを使っているため複数DBの接続を切り替えたりしないのであればDB接続時はなにも意識していません。<br>
※フォームに追加した羽マークのQuillコントロールがうまく制御してくれているのかな?<br>
実行時の接続で「Seasar.Quill.QuillConfig.cs」のSetupDataSourceByQuillSection
を通過すると思うんですがここでDSとれてないんですかね?<br>
<br>
<br>
<br>
<br>
以上<br>
<br>
<br>
</div>
<blockquote
cite="mid:CAAQsZE9Y=B-apcne8NrJ1Q6T8v7jiQfWN23sq_yvZeMKt5YJ1w@mail.gmail.com"
type="cite">
<meta http-equiv="Context-Type" content="text/html; charset=UTF-8">
<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 moz-do-not-send="true"
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>「Seasar.Tests.Quill.</span><span>QuillContainerTest.</span><span>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>
<div> [Implementation]</div>
<div>
[Aspect(typeof(SetConnectionStringInterceptor))] ←
SetConnectionStringInterceptorを付加</div>
<div> ※S2Container使用時は、付加していない</div>
<div> public interface IBhvService</div>
<div> {</div>
</div>
<div> (中略)・・・SQL発行</div>
<div> }</div>
</div>
<div><br>
</div>
<div>デバッグを行うと、IBhvServiceの中のメソッドが呼ばれた後に、
SetConnectionStringInterceptorの<span>Invoke()の</span></div>
<div><span>処理が行われる。</span></div>
<div><span>⇒</span><span>Invoke()内でエラー</span></div>
<div><span> 現状:ds_のNullエラー</span></div>
<div><span> 修正後:</span> Assert.GreaterThanOrEqualTo<int>(ds.DataSourceCollection.Count,
7);でエラー</div>
<div><br>
</div>
<div>長文になってしまい、申し訳ございませんが、</div>
<div>知識不足もあり、根本的な理解ができておらず、</div>
<div>試行錯誤している状態ですが、宜しくお願い致します。<br>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2016年5月10日 10:35 志水正幸 <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:ie2m-smz@asahi-net.or.jp" target="_blank"><a class="moz-txt-link-abbreviated" href="mailto:ie2m-smz@asahi-net.or.jp">ie2m-smz@asahi-net.or.jp</a></a>></span>:<br>
<blockquote class="gmail_quote">
<div>
<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 moz-do-not-send="true"
href="mailto:dbflute@gmail.com"
target="_blank">dbflute@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote">久保(jflute) です<br>
<br>
新谷さん、こんばんは<br>
<br>
> QuillでDB接続(Oracle)が上手くできないため、<br>
<br>
どううまくいかないのか具体的に示した方が、<br>
ML閲覧者も回答しやすいかと思います。<br>
具体的なエラーの内容や、実際にやってみた設定内容など。<br>
(業務上のセキュアな情報はマスクした上で)<br>
_______________________________________________<br>
seasar-dotnet mailing list<br>
<a moz-do-not-send="true"
href="mailto:seasar-dotnet@ml.seasar.org"
target="_blank">seasar-dotnet@ml.seasar.org</a><br>
<a moz-do-not-send="true"
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 moz-do-not-send="true" href="mailto:seasar-dotnet@ml.seasar.org" target="_blank">seasar-dotnet@ml.seasar.org</a>
<a moz-do-not-send="true" 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>
<tbody>
<tr>
<td><a moz-do-not-send="true"
href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient"
target="_blank"><img moz-do-not-send="true"></a></td>
<td>ウイルス フリー。 <a moz-do-not-send="true"
href="https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient"
target="_blank">www.avast.com</a> </td>
</tr>
</tbody>
</table>
</div>
<br>
_______________________________________________<br>
seasar-dotnet mailing list<br>
<a moz-do-not-send="true"
href="mailto:seasar-dotnet@ml.seasar.org">seasar-dotnet@ml.seasar.org</a><br>
<a moz-do-not-send="true"
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>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
seasar-dotnet mailing list
<a class="moz-txt-link-abbreviated" href="mailto:seasar-dotnet@ml.seasar.org">seasar-dotnet@ml.seasar.org</a>
<a class="moz-txt-link-freetext" href="https://ml.seasar.org/mailman/listinfo/seasar-dotnet">https://ml.seasar.org/mailman/listinfo/seasar-dotnet</a>
</pre>
</blockquote>
<br>
<br /> <table style="border-top: 1px solid #aaabb6;">
        <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" target="_blank" style="color: #4453ea;">www.avast.com</a>                 </td>
        </tr>
</table>
</body>
</html>