- PR -

Torque3.1の使い方

投稿者投稿内容
TK
常連さん
会議室デビュー日: 2002/08/13
投稿数: 42
投稿日時: 2003-10-28 13:30
お世話になっております、TKです。struts1.1 + Tomcat4.0 + Torque3.0.2で
WEB系システムの開発をしております。
現在使用しているversionのTorqueにはバグがあり、
3.1に上げようと考えております。

Torqueはversionが、3.1になってから
ソース生成部とランタイム部にパッケージが分かれています。

ソースの生成は以前のバージョンと同様な方法でできました。
しかし、「オーバーライトすべきでないメソッドをオーバーライトしてます」
というWarningがでます。

また、ランタイム版の配置がよくわかりません。解凍して得られたlib内のパッケージ
にパスを通してコンパイルできましたが、各種設定ファイルの配置が悪い
らしく、データアクセスできません。特に、新たに追加された二つのファイル
componentConfiguration.xml、roleConfiguration.xmlの意味がよくわかりません。
どなたか、Torque3.1を利用されている方、ご教授ください。
よろしくお願いします。





とまと
ベテラン
会議室デビュー日: 2003/10/18
投稿数: 51
投稿日時: 2003-10-28 15:06
こんにちは。

引用:

TKさんの書き込み (2003-10-28 13:30) より:
ソースの生成は以前のバージョンと同様な方法でできました。
しかし、「オーバーライトすべきでないメソッドをオーバーライトしてます」
というWarningがでます。


具体的にはどのメソッドでしょうか。
コンパイル時のワーニングメッセージを示した方が
いいように思います。

引用:

にパスを通してコンパイルできましたが、各種設定ファイルの配置が悪い
らしく、データアクセスできません。


どのような環境で実行しようとしているのでしょうか。
また、実行時の詳細なエラー内容を示した方がいいように思います。

引用:

特に、新たに追加された二つのファイル
componentConfiguration.xml、roleConfiguration.xmlの意味がよくわかりません。


私もこのファイルについての役割を知らないのですが、
特に設定する必要はないように思います。
実行時に設定するファイルはTorque.propertiesだけ
でよいと思います。
TK
常連さん
会議室デビュー日: 2002/08/13
投稿数: 42
投稿日時: 2003-10-28 16:12
とまとさん、返答ありがとうございます。
詳細については調査中ですが、今のところご報告できることに
ついて報告させていただきます。

まずは、コンパイル時のワーニングメッセージですが、
「特定のメソッドについては記述されず」文字通り、antのログで
「オーバライトすべきでないメソッドまたはAPIをオーバーライドしています」
とでます。特に、何を示すかは調査中です。

環境としましては、eclipseを使用しているのですが、WEB-INF/srcの下の適当な
コンポーネント以下に、generatorで作成したソースを配置し、
WEB-INF/lib以下に、Torque3.1のruntimeパッケージを解凍してえられたlib
以下のjarファイルおよび、torque-gen-3.1.jar、
oracleのドライバーを全てパスに加えています。

また、PluginでTorque.initを行っているのですが、ログを見ると「initTorqueClassic」
という古めかしさをあらわすような(笑)メッセージが出ています。

また、実行時のエラーですが、
java.lang.NoSuchMethodError: org.apache.torque.util.Criteria.getSelectColumns()Lorg/apache/torque/util/UniqueList;
at xxx.torque.BaseTblAAAPeer.doSelectVillageRecords(BaseTblAAAPeer.java:354)
at xxx.torque.BaseTblAAAPeer.doSelectVillageRecords(BaseTblAAAPeer.java:340)
at xxx.torque.BaseTblAAAPeer.doSelect(BaseTblAAAPeer.java:308)
at xxx.data.getAAA.(AAA.java:32)
at xxx.data.getAAA.getInstance(AAA.java:42)
at xxx.plugin.InitTorquePlugIn.init(InitTorquePlugIn.java:42)

となっており、pluginでTorque.initのあと初めてDBにアクセスする個所(下参照)
でエラーとなっています。
Criteria whrc = new Criteria();
//whrcには何もセットせず
List selectList = TblAAAPeer.doSelect(whrc); ←ここで落ちてます。

ソースは全くいじってないのですが・・・、No Such Method...たとえば、
whrcに何もセットしないのがいけなかったりするのでしょうか?

引き続き検証します。

TK
常連さん
会議室デビュー日: 2002/08/13
投稿数: 42
投稿日時: 2003-10-28 18:05
TKです。追記報告をします。
生成時にオーバーライトの警告がでていたのは、
Base〜Peer.javaのpublic static MapBuilder getMapBuilder()でした。
また、
http://www.mail-archive.com/torque-user@db.apache.org/msg01016.html
と同じ現象のようです。解決はされていないようでした。

どなたが、同じ現象に遭遇した方いらっしゃらないでしょうか。
お願いします。


とまと
ベテラン
会議室デビュー日: 2003/10/18
投稿数: 51
投稿日時: 2003-10-28 19:53
こんばんは。

引用:

TKさんの書き込み (2003-10-28 18:05) より:
http://www.mail-archive.com/torque-user@db.apache.org/msg01016.html
と同じ現象のようです。解決はされていないようでした。



全件検索しようとするときに限って(空のCriteriaを指定した場合のみ)
発生するのでしょうか。
また、データベースも同じMySQLでしょうか。

ちなみに、Oracle8i 8.1.7で全件検索を含むその他様々な検索処理を
行ってみましたが、このようなエラーは発生しませんでした。
TK
常連さん
会議室デビュー日: 2002/08/13
投稿数: 42
投稿日時: 2003-10-29 16:07
TKです。とまとさん返答が遅れてすみません。

データベースはoracle9iを使用しています。
エラーの発生は、Criteriaに関係なく最初にデータベースにアクセスするところで下記同様のエラーで落ちます。

以下にTorque.propetiesの内容を記載します。これは、
Torque3.0.2で正常に動いていたものです。

torque.dsfactory.XXX.factory=org.apache.torque.dsfactory.TorqueDataSourceFactory
torque.dsfactory.XXX.pool.defaultMaxConnections=10
torque.dsfactory.XXX.pool.maxExpiryTime=3600
torque.dsfactory.XXX.pool.connectionWaitTimeout=10
torque.dsfactory.XXX.connection.driver = oracle.jdbc.driver.OracleDriver
torque.dsfactory.XXX.connection.url = jdbc:oracle:thin:@localhost:1521:XXX
torque.dsfactory.XXX.connection.user = user
torque.dsfactory.XXX.connection.password = pwd

ちなみに、これまた3.0.2では正常に動いたものですが、commons-dbcpを代わりに使用すると、別のエラー(下記)で落ちます。

java.lang.NoSuchMethodError: org.apache.torque.dsfactory.AbstractDataSourceFactory.initCPDS(Lorg/apache/commons/configuration/Configuration;)Ljavax/sql/ConnectionPoolDataSource;
at org.apache.torque.dsfactory.SharedPoolDataSourceFactory.initialize(SharedPoolDataSourceFactory.java:109)
at org.apache.torque.Torque.initDataSourceFactories(Torque.java:323)
at org.apache.torque.Torque.initialize(Torque.java:237)
at org.apache.torque.Torque.init(Torque.java:406)

クラスパスにあるlibraryは以下の通りです。
avalon-framework-4.1.4.jar
classes12.jar
commons-beanutils-1.6.1.jar
commons-collections-2.1.jar
commons-configuration-1.0-dev-3.20030607.194155.jar
commons-dbcp-20030825.184428.jar
commons-digester.jar
commons-fileupload.jar
commons-lang-1.0.1.jar
commons-logging-1.0.3.jar
commons-pool-20030825.183949.jar
commons-resources.jar
commons-validator.jar
jakarta-oro.jar
jakarta-regexp-1.3.jar
jcs-20030822.182132.jar
jdbc-2.0.jar
jndi-1.2.1.jar
junit-3.8.1.jar
log4j-1.2.8.jar
logkit-1.0.1.jar
stratum-1.0-b3.jar
struts.jar
torque-3.1.jar
village-2.0-dev-20030825.jar
xercesImpl-2.0.2.jar
cmlParserAPIs-2.0.2.jar

些細な情報でもいいので、Torque3.1を使用しているかたの情報をお待ちしています。




とまと
ベテラン
会議室デビュー日: 2003/10/18
投稿数: 51
投稿日時: 2003-10-29 20:52
こんばんは

時間が取れないので、簡単なコメントだけ。

1.次の環境でTorque3.1でデータベースをSELECTすることが
できました。
単純なStandaloneプログラムとして実行しました。

JSDK1.4.2
Torque3.1
Oracle9.2.0
JDBC Driver(ojdbc14.jar)
torque.dsfactory.xxxx.factory=org.apache.torque.dsfactory.SharedPoolDataSourceFactory


2.
引用:

TKさんの書き込み (2003-10-29 16:07) より:
以下にTorque.propetiesの内容を記載します。これは、
Torque3.0.2で正常に動いていたものです。
torque.dsfactory.XXX.factory=org.apache.torque.dsfactory.TorqueDataSourceFactory
<snip>
ちなみに、これまた3.0.2では正常に動いたものですが、commons-dbcpを代わりに使用すると、別のエラー(下記)で落ちます。

java.lang.NoSuchMethodError: org.apache.torque.dsfactory.AbstractDataSourceFactory.initCPDS(Lorg/apache/commons/configuration/Configuration;)Ljavax/sql/ConnectionPoolDataSource;
at org.apache.torque.dsfactory.SharedPoolDataSourceFactory.initialize(SharedPoolDataSourceFactory.java:109)
at org.apache.torque.Torque.initDataSourceFactories(Torque.java:323)
at org.apache.torque.Torque.initialize(Torque.java:237)
at org.apache.torque.Torque.init(Torque.java:406)



Torque.propertiesファイルのコメントを見ると、
「TorqueDataSourceFactoryはバグがあり、推奨されない。
commons-dbcpを使うべき。」
とありますね。
commons-dbcpを使用した場合のこのエラーは、
SELECTを発行するときではなく、
Torqueの初期化時に発生しているということですよね?
必要なJarファイルはクラスパスに追加されていると
思いますので、そうなるとTorque.propertiesファイルの
設定が気になりますね。

以上です。



TK
常連さん
会議室デビュー日: 2002/08/13
投稿数: 42
投稿日時: 2003-10-30 11:41
こんにちは、TKです。とまとさんの環境と比べてみまして、
jdbcドライバーのバージョンが違うことに気が付きました。
そこで、それを変更後のエラー(笑)です。

java.lang.NoSuchMethodError: org.apache.torque.dsfactory.AbstractDataSourceFactory.initCPDS(Lorg/apache/commons/configuration/Configuration;)Ljavax/sql/ConnectionPoolDataSource;
at org.apache.torque.dsfactory.SharedPoolDataSourceFactory.initialize(SharedPoolDataSourceFactory.java:109)
at org.apache.torque.Torque.initDataSourceFactories(Torque.java:323)
at org.apache.torque.Torque.initialize(Torque.java:237)
at org.apache.torque.Torque.init(Torque.java:406)
at com.accenture.stpip.plugin.InitTorquePlugIn.init(InitTorquePlugIn.java:38)
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:1105)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:468)


該当するメソッドは確かにtorque-3.1.jarの該当クラス内に存在しました。

なお、Torque.propertiesですが。

## Using commons-dbcp
torque.dsfactory.XXX.factory=org.apache.torque.dsfactory.SharedPoolDataSourceFactory
torque.dsfactory.XXX.pool.defaultMaxActive=10
torque.dsfactory.XXX.pool.testOnBorrow=false
torque.dsfactory.XXX.pool.validationQuery=SELECT 1 FROM DUAL
torque.dsfactory.XXX.connection.driver = oracle.jdbc.driver.OracleDriver
torque.dsfactory.XXX.connection.url = jdbc:oracle:thin:@localhost:1521:XXX
torque.dsfactory.XXX.connection.user = user
torque.dsfactory.XXX.connection.password = pwd

となっております。

はまってます・・、よろしくお願いします。

スキルアップ/キャリアアップ(JOB@IT)