[seasar-dotnet:1534] Re: IDbConnectionにORACLE固有のOracleConnectionプロパティを設定する方法について

KIYOSUE Minoru [E-MAIL ADDRESS DELETED]
2009年 12月 24日 (木) 10:25:42 JST


宮城 様

早々のご回答大変ありがとうございます。

本日組み込んでテストしてみます。
結果は改めて報告いたします。


--------------------------------------------------
From: "Ryo Miyagi" <[E-MAIL ADDRESS DELETED]>
Sent: Wednesday, December 23, 2009 1:12 PM
To: <[E-MAIL ADDRESS DELETED]>
Subject: [seasar-dotnet:1533] Re:IDbConnectionにORACLE固有のOracleConnectionプロパティを設定する方法について

> 宮城です。
>
>> Open→SQLの発行の間で、OracleConnection.ClientIdを設定
>> する方法があるのでしょうか?
>
> CLIENT_IDENTIFIERを使ったことはありませんが、
> DataSourceUtil.GetConnection(IDataSource dataSource)
> の引数で渡しているIDataSource dataSourceを拡張することで対応できるかと思います。
>
> IDataSourceの定義は、diconファイル(例: Ado.dicon) で指定しています。
>
> 例: Ado.dicon
>  <component name="DataSource" 
> class="Seasar.Extension.Tx.Impl.TxDataSource">
>    <property name="DataProvider">Oracle</property>
>    <property name="ConnectionString">"Data Source=ORCL;User
> ID=s2dotnetdemo;Password=s2dotnetdemo"</property>
>  </component>
>
> 上記例の場合、IDataSourceの実装は、Seasar.Extension.Tx.Impl.TxDataSource 
> になります。
>
> OracleConnection.ClientId を設定したい場合、
> Seasar.Extension.Tx.Impl.TxDataSource を継承したクラスを作成します。
>
> 例: MyTxDataSource
>
> public class MyTxDataSource : Seasar.Extension.Tx.Impl.TxDataSource
> {
>        public override IDbConnection GetConnection()
>        {
>            IDbConnection con = base.GetConnection();
>            OracleConnection oracleCon = (OracleConnection) con;
>            oracleCon.ClientId = GetClientId();
>            return oracleCon;
>        }
>
>        private string GetClientId() {
>             // ODP.NET のヘルプ見て実装しただけなので、間違っているかも。
>             WindowsPrincipal user = new
> WindowsPrincipal(WindowsIdentity.GetCurrent());
>             return user.Identity.Name;
>        }
> }
>
> 実装した MyTxDataSource を diconファイルに定義します。
>
> 例: Ado.dicon
>  <!-- componentタグのclass属性を、"MyNameSpace.MyTxDataSource" に変更 -->
>  <component name="DataSource" class="MyNameSpace.MyTxDataSource">
>    <property name="DataProvider">Oracle</property>
>    <property name="ConnectionString">"Data Source=ORCL;User
> ID=s2dotnetdemo;Password=s2dotnetdemo"</property>
>  </component>
>
>
> 以上
>
> 2009年12月23日12:15 KIYOSUE Minoru <[E-MAIL ADDRESS DELETED]>:
>>
>>
>> いつも大変お世話になります、清末@JMIです。
>>
>> DBのセキュリティ強化の観点から、Oracleのアプリケーションコ
>> ンテキストを利用しようと考えております。
>>
>> この際、接続クライアントからDBサーバーへの接続時にODP.NETで
>> CLIENT_IDENTIFIERを設定したいと思っています。
>> OracleConnection.ClientIdを設定する場合は、接続をOpenした
>> 後にのみ設定可能であるため、Open→SQLの発行の間での設定を
>> 考えております。
>>
>> SeasarのConnection取得は、DataSourceUtil.GetConnection
>> で実装されているため、Open直後にClientIdを設定する為には、
>> 当該のUtilクラスを変更することになってしまいます。
>>
>> しかしながら、今後の保守を考えるとSeasarのソースを変えてし
>> まうのは、バージョンアップ対応などが煩雑になるためしたくは
>> ありません。
>>
>> Open→SQLの発行の間で、OracleConnection.ClientIdを設定
>> する方法があるのでしょうか?
>>
>>
>> ご多忙中大変恐縮に存じますが、よろしくお願いいたします。
>>
>>
>> _______________________________________________
>> seasar-dotnet mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> 


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