- PR -

S2BlazeDSを用いたFlex+Javaアプリについて

1
投稿者投稿内容
S.Tatsukawa
会議室デビュー日: 2009/03/03
投稿数: 4
投稿日時: 2009-03-03 14:54
はじめまして。
初めて投稿させていただきます。

@ITさんで紹介されていたS2BlazeDSを用いたFlex+JavaアプリでDB接続をSql Server2000に変更したところうまくいかないため、アドバイスお願い致します。
http://www.atmarkit.co.jp/fwcr/rensai2/flexjava02/flexjava02_1.html

記事でサンプルとしてダウンロードできる、「HelloS2BlazeDS」をEclipseのプロジェクトにインポートを行い、以下の点をSql Server2000用に変更してみました。

■jdbc.diconファイル
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.3//EN"
"http://www.seasar.org/dtd/components23.dtd">
<components namespace="jdbc">
<component class="org.seasar.extension.jdbc.impl.BasicResultSetFactory"/>
<component class="org.seasar.extension.jdbc.impl.BasicStatementFactory"/>
<component name="transactionManager"
class="org.seasar.extension.jta.TransactionManagerImpl"/>
<!-- 接続対象DBの設定(MS SQL Server) -->
<component name="xaDataSource"
class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
<property name="driverClassName">
"com.microsoft.jdbc.sqlserver.SQLServerDriver"
</property>
<property name="URL">
"jdbc:microsoft:sqlserver://192.168.0.1:1433;DatabaseName=TEST_DB"
</property>
<property name="user">"sa"</property>
<property name="password">"sa"</property>
</component>
<component name="connectionPool"
class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
<property name="timeout">600</property>
<property name="maxPoolSize">3</property>
<destroyMethod name="close"/>
</component>
<component name="dataSource"
class="org.seasar.extension.dbcp.impl.DataSourceImpl"/>
</components>

■jdbcドライバ
以下のjarファイルをmicrosoftのサイトからダウンロードしてlibフォルダに格納しました。
・msbase.jar
・mssqlserver.jar
・msutil.jar

■java側のTestJdbcクラスのメソッド
SQL文を直接実行したかったので以下の用に変更しました。

public List<Test> getTest(Test test) {
List<Test> results = jdbcManager
.selectBySql(Test.class, "select id, name from TEST_TABLE")
.getResultList();
return results;
}

Testクラスは特に変更していません、以下のようになっています。
package flex.samples.entity;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.Id;

/**
* Testエンティティです。
*/
@Entity
public class Test implements Serializable {

static final long serialVersionUID = 1L;

/** 識別子 */
@Id
public Integer id;

/** 名前です */
public String name;
}


以下はコンソールに出ているログになります。
■Tomcat起動時
2009/03/03 14:45:25 org.apache.catalina.core.AprLifecycleListener init
情報: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\AllInOneEclipse\jre1.6\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/AllInOneEclipse/eclipse/jre/bin/client;C:/AllInOneEclipse/eclipse/jre/bin;C:\oracle\ora92\bin;C:\Program Files\Java\jdk1.6.0_12\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Intel\DMIX;C:\Program Files\Microsoft SQL Server\80\Tools\BINN
2009/03/03 14:45:26 org.apache.coyote.http11.Http11Protocol init
情報: Coyote HTTP/1.1を http-8400 で初期化します
2009/03/03 14:45:26 org.apache.catalina.startup.Catalina load
情報: Initialization processed in 519 ms
2009/03/03 14:45:26 org.apache.catalina.core.StandardService start
情報: サービス Catalina を起動します
2009/03/03 14:45:26 org.apache.catalina.core.StandardEngine start
情報: Starting Servlet Engine: Apache Tomcat/6.0.14
DEBUG 2009-03-03 14:45:29,390 [main] ContextRealPath=C:\AllInOneEclipse\workspace\HelloS2BlazeDS\
SERVER_SOFTWARE=Apache Tomcat/6.0.14, ServletContextName=null, MajorVersion=2, MinorVersion=5
INFO 2009-03-03 14:45:29,718 [main] Loading validation rules file from '/WEB-INF/validator-rules.xml'
DEBUG 2009-03-03 14:45:30,124 [main] 環境変数#Envにファイル(env.txt)から値(ct)が設定されました
DEBUG 2009-03-03 14:45:30,265 [main] S2Containerを作成します。path=hotdeploy.dicon
DEBUG 2009-03-03 14:45:30,281 [main] S2Containerを作成します。path=convention.dicon
DEBUG 2009-03-03 14:45:30,515 [main] S2Containerを作成しました。path=convention.dicon
DEBUG 2009-03-03 14:45:30,515 [main] S2Containerを作成します。path=customizer.dicon
DEBUG 2009-03-03 14:45:30,546 [main] S2Containerを作成します。path=default-customizer.dicon
DEBUG 2009-03-03 14:45:30,546 [main] S2Containerを作成します。path=std-customizer.dicon
DEBUG 2009-03-03 14:45:30,562 [main] S2Containerを作成します。path=std-customizer-tiger.dicon
DEBUG 2009-03-03 14:45:30,609 [main] S2Containerを作成しました。path=std-customizer-tiger.dicon
DEBUG 2009-03-03 14:45:30,624 [main] S2Containerを作成しました。path=std-customizer.dicon
DEBUG 2009-03-03 14:45:30,640 [main] S2Containerを作成しました。path=default-customizer.dicon
DEBUG 2009-03-03 14:45:30,656 [main] S2Containerを作成しました。path=customizer.dicon
DEBUG 2009-03-03 14:45:30,656 [main] S2Containerを作成します。path=creator.dicon
DEBUG 2009-03-03 14:45:30,703 [main] S2Containerを作成しました。path=creator.dicon
DEBUG 2009-03-03 14:45:30,703 [main] S2Containerを作成しました。path=hotdeploy.dicon
WARN 2009-03-03 14:45:30,765 [main] flex.samples.creator.JdbcCreatorの引数(interface org.seasar.framework.container.InstanceDef)が見つからないのでnullを設定します
DEBUG 2009-03-03 14:45:30,765 [main] S2Containerを作成します。path=app.dicon
DEBUG 2009-03-03 14:45:30,781 [main] S2Containerを作成します。path=convention.dicon
DEBUG 2009-03-03 14:45:30,781 [main] S2Containerを作成しました。path=convention.dicon
DEBUG 2009-03-03 14:45:30,781 [main] S2Containerを作成します。path=aop.dicon
DEBUG 2009-03-03 14:45:30,828 [main] S2Containerを作成しました。path=aop.dicon
DEBUG 2009-03-03 14:45:30,828 [main] S2Containerを作成します。path=j2ee.dicon
DEBUG 2009-03-03 14:45:30,828 [main] S2Containerを作成します。path=jta.dicon
DEBUG 2009-03-03 14:45:30,890 [main] S2Containerを作成しました。path=jta.dicon
DEBUG 2009-03-03 14:45:30,890 [main] S2Containerを作成します。path=jdbc.dicon
DEBUG 2009-03-03 14:45:30,968 [main] S2Containerを作成しました。path=jdbc.dicon
DEBUG 2009-03-03 14:45:30,984 [main] S2Containerを作成しました。path=j2ee.dicon
DEBUG 2009-03-03 14:45:30,984 [main] S2Containerを作成します。path=s2jdbc.dicon
DEBUG 2009-03-03 14:45:30,999 [main] S2Containerを作成します。path=s2jdbc-internal.dicon
DEBUG 2009-03-03 14:45:31,046 [main] S2Containerを作成しました。path=s2jdbc-internal.dicon
DEBUG 2009-03-03 14:45:31,171 [main] S2Containerを作成しました。path=s2jdbc.dicon
DEBUG 2009-03-03 14:45:31,171 [main] S2Containerを作成しました。path=app.dicon
WARN 2009-03-03 14:45:31,484 [main] org.seasar.extension.jdbc.manager.JdbcManagerImplのプロパティ(syncRegistry)が見つからないので設定をスキップします
INFO 2009-03-03 14:45:31,499 [main] Running on [ENV]ct, [DEPLOY MODE]Hot Deploy
2009/03/03 14:45:42 org.apache.catalina.core.ApplicationContext log
情報: ContextListener: contextInitialized()
2009/03/03 14:45:42 org.apache.catalina.core.ApplicationContext log
情報: SessionListener: contextInitialized()
******************************************************************************
* *
* Unable to connect to the samples database. *
* You must start the samples database before you can run the samples. *
* To start the samples database: *
* 1. Open a command prompt and go to the {install-dir}/sampledb dir *
* 2. Run startdb.bat (Windows) or startdb.sh (Unix-based systems) *
* *
******************************************************************************
2009/03/03 14:45:47 org.apache.coyote.http11.Http11Protocol start
情報: Coyote HTTP/1.1を http-8400 で起動します
2009/03/03 14:45:47 org.apache.jk.common.ChannelSocket init
情報: JK: ajp13 listening on /0.0.0.0:8009
2009/03/03 14:45:47 org.apache.jk.server.JkMain start
情報: Jk running ID=0 time=0/32 config=null
2009/03/03 14:45:47 org.apache.catalina.startup.Catalina start
情報: Server startup in 21262 ms

■実行時のログ
DEBUG 2009-03-03 14:50:15,335 [http-8400-1] HOT deployを開始します
DEBUG 2009-03-03 14:50:15,351 [http-8400-1] HOT deployを終了しました
DEBUG 2009-03-03 14:50:15,617 [http-8400-1] HOT deployを開始します
DEBUG 2009-03-03 14:50:15,617 [http-8400-1] HOT deployを終了しました
DEBUG 2009-03-03 14:50:15,710 [http-8400-1] HOT deployを開始します
DEBUG 2009-03-03 14:50:15,726 [http-8400-1] HOT deployを終了しました
DEBUG 2009-03-03 14:50:15,914 [http-8400-1] HOT deployを開始します
DEBUG 2009-03-03 14:50:15,914 [http-8400-1] HOT deployを終了しました
DEBUG 2009-03-03 14:50:16,476 [http-8400-1] HOT deployを開始します
DEBUG 2009-03-03 14:50:16,476 [http-8400-1] HOT deployを終了しました
DEBUG 2009-03-03 14:50:22,210 [http-8400-1] HOT deployを開始します
DEBUG 2009-03-03 14:50:22,429 [http-8400-1] HOT deployを終了しました
DEBUG 2009-03-03 14:50:22,585 [http-8400-1] HOT deployを開始します
DEBUG 2009-03-03 14:50:22,663 [http-8400-1] クラス(flex.samples.service.HelloWorldService[helloWorldService])のコンポーネント定義を登録します
DEBUG 2009-03-03 14:50:23,023 [http-8400-1] クラス(flex.samples.jdbc.TestJdbc[testJdbc])のコンポーネント定義を登録します
DEBUG 2009-03-03 14:50:23,054 [http-8400-1] BEGIN flex.samples.service.HelloWorldService#getWorld(flex.samples.dto.HelloWorldRequestDto@8ec1c)
DEBUG 2009-03-03 14:50:23,070 [http-8400-1] トランザクションを開始しました。tx=[FormatId=4360, GlobalId=1236059423070/0, BranchId=]
DEBUG 2009-03-03 14:50:23,070 [http-8400-1] BEGIN flex.samples.jdbc.TestJdbc#getTest(flex.samples.entity.Test@6b581a)
DEBUG 2009-03-03 14:50:33,315 [http-8400-1] select id, name from TEST_TABLE

[SWF] /HelloS2BlazeDS/bin-debug/HelloS2BlazeDS.swf - 936,416 バイト (圧縮後)
[FaultEvent fault=[RPC Fault faultString="java.lang.NullPointerException : null" faultCode="Server.Processing" faultDetail="null"] messageId="9E54C7FE-170B-DF56-EBF4-18712ECF6C6A" type="fault" bubbles=false cancelable=true eventPhase=2]

以上、長くなりましたがどうぞ宜しくお願い致します。

******************************************************
<環境>
・アプリケーションサーバー:Trunky(ver.3-0-0-544)
・Eclipse(ver.3.4.1)※ベクターにてダウンロードを行ったAll In One Eclipseです。
・JDK(ver.1.6.9_12-b04)
・DBサーバー:SQL Server2000
******************************************************
S.Tatsukawa
会議室デビュー日: 2009/03/03
投稿数: 4
投稿日時: 2009-03-03 16:57
追伸:
例外が発生しているのは
List<Test> results = jdbcManager
.selectBySql(Test.class, "select id, name from TEST_TABLE")
.getResultList();
の部分のようでした。
long count = jdbcManager.getCountBySql("select * from TEST_TABLE");
と違うメソッドも試してみたのですが、結果は同じでした。
1

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