wicket-seasar2 sampleでS2JDBCを使うことに成功しました
こういう素朴なことを誰も書いていないので。。。
ちょっとdiconファイルとPOMを書き換えるだけで成功しました。
手順
doltengが生成したdiconファイルをマージしました。
まず、app.diconに
<include path="s2jdbc.dicon"/>
を追加します。
以下、全文
<components> <include path="s2jdbc.dicon"/> <component name="address1" class="jp.javelindev.wicket.seasar2.sample.bean.Address"> <property name="address1">"住所1"</property> <property name="address2">"住所2"</property> </component> <component name="user1" class="jp.javelindev.wicket.seasar2.sample.bean.User"> <property name="name">"テストユーザ"</property> <property name="address">address1</property> </component> <component name="address2" class="jp.javelindev.wicket.seasar2.sample.bean.Address"> <property name="address1">"住所3"</property> <property name="address2">"住所4"</property> </component> <component name="user2" class="jp.javelindev.wicket.seasar2.sample.bean.User"> <property name="name">"テストユーザ2"</property> <property name="address">address2</property> </component> </components>
次に、以下のdiconファイルをコピーします。
HotDeployを使い場合は以下も追加します。
- s2contailner.dicon
- env.txt
現時点の僕では、customizer.docon, creater.diconが何をやっているのかちゃんと説明できません。
だから無責任にならないように、全文掲載は控えときます。
あと、MavenのPOMファイルも書き換えてます。こちらはどこを直したのか覚えていないので全文掲載します。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>jp.javelindev</groupId> <artifactId>wicketseasar2sample</artifactId> <packaging>war</packaging> <version>1.0-beta1</version> <!-- TODO project name --> <name>Wicket-Seasar2 Sample</name> <!-- TODO <organization> <name>company name</name> <url>company url</url> </organization> --> <licenses> <license> <name>The Apache Software License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> </license> </licenses> <scm> <connection>scm:svn:http://www.javelindev.jp/repos/share/wicketseasar2sample</connection> <url>http://www.javelindev.jp/repos/share/wicketseasar2sample</url> </scm> <dependencies> <!-- WICKET DEPENDENCIES --> <dependency> <groupId>org.apache.wicket</groupId> <artifactId>wicket</artifactId> <version>${wicket.version}</version> </dependency> <!-- OPTIONAL <dependency> <groupId>org.apache.wicket</groupId> <artifactId>wicket-extensions</artifactId> <version>${wicket.version}</version> </dependency> --> <!-- LOGGING DEPENDENCIES - LOG4J --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.5.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.5.6</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.14</version> </dependency> <!-- JUNIT DEPENDENCY FOR TESTING --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.6</version> <scope>test</scope> </dependency> <!-- JETTY DEPENDENCIES FOR TESTING --> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty</artifactId> <version>${jetty.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-util</artifactId> <version>${jetty.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-management</artifactId> <version>${jetty.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>jp.javelindev</groupId> <artifactId>wicketseasar2</artifactId> <version>1.0-beta1</version> </dependency> <dependency> <groupId>org.seasar.container</groupId> <artifactId>s2-extension</artifactId> <version>2.4.34</version> </dependency> <dependency> <groupId>org.seasar.container</groupId> <artifactId>s2-framework</artifactId> <version>2.4.34</version> </dependency> <dependency> <groupId>org.seasar.container</groupId> <artifactId>s2-tiger</artifactId> <version>2.4.34</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.1.104</version> </dependency> <dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <version>8.3-603.jdbc3</version> </dependency> <dependency> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> <version>1.0.1B</version> </dependency> <dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-ejb_3.0_spec</artifactId> <version>1.0</version> <type>jar</type> </dependency> <dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-jta_1.1_spec</artifactId> <version>1.1</version> <type>jar</type> </dependency> <dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-jpa_3.0_spec</artifactId> <version>1.1</version> <type>jar</type> </dependency> <dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-interceptor_3.0_spec</artifactId> <version>1.0</version> <type>jar</type> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/resources</directory> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**</include> </includes> <excludes> <exclude>**/*.java</exclude> </excludes> </resource> </resources> <testResources> <testResource> <directory>src/test/java</directory> <includes> <include>**</include> </includes> <excludes> <exclude>**/*.java</exclude> </excludes> </testResource> </testResources> <plugins> <plugin> <inherited>true</inherited> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> <optimise>true</optimise> <debug>true</debug> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-eclipse-plugin</artifactId> <configuration> <downloadSources>true</downloadSources> </configuration> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.2</version> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <phase>verify</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-eclipse-plugin</artifactId> <configuration> <wtpversion>1.5</wtpversion> <downloadSources>true</downloadSources> <downloadJavadocs>true</downloadJavadocs> </configuration> </plugin> </plugins> </build> <distributionManagement> <repository> <uniqueVersion>false</uniqueVersion> <id>javelindev.jp</id> <name>JavelinDev Maven2 Repository</name> <url>scp://www.javelindev.jp/home/maven2/maven2.javelindev.jp/html/repository</url> <layout>default</layout> </repository> </distributionManagement> <repositories> <repository> <id>maven.seasar.org</id> <name>The Seasar Foundation Maven2 Repository</name> <url>http://maven.seasar.org/maven2</url> </repository> <repository> <id>javelindev.jp</id> <name>JavelinDev Maven2 Repository</name> <url>http://maven2.javelindev.jp/repository</url> </repository> </repositories> <properties> <wicket.version>1.4-rc4</wicket.version> <netbeans.hint.deploy.server>Tomcat60</netbeans.hint.deploy.server> <jetty.version>6.1.4</jetty.version> </properties> </project>
直したら、おなじみの
を実行します。
S2jdbcPageを作成
では早速使ってみます。
wicketseasar2sampleには、Seasar2Pageというページクラスが含まれていて、
このページが最初に表示されるようになっています。
そこで、隣にS2jdbcPageというページクラスを作って、そちらをロードしてもらうように変えてしまいましょう。
WicketApplication.javaを以下のように変更します。
/** * @see org.apache.wicket.Application#getHomePage() */ public Class<? extends WebPage> getHomePage() { return S2jdbcPage.class; }
Eclipseだと、「S2jdbcPageがないよー」と、怒られますので、赤い波線にカーソルをあわせて「Ctrl+1」を押して、クラスを生成します。
package jp.javelindev.wicket.seasar2.sample; import java.util.List; import jp.javelindev.wicket.seasar2.S2Component; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; import org.seasar.extension.jdbc.JdbcManager; /** * * @author Susumu ISHIGAMI */ public class S2jdbcPage extends WebPage { private static final long serialVersionUID = 8543968514745513657L; @S2Component private JdbcManager jdbcManager; public S2jdbcPage() { add(new Label("managerClassName", jdbcManager.getClass().getName())); List<Test> tests = jdbcManager.from(Test.class).getResultList(); add(new Label("id", tests.get(0).id.toString())); add(new Label("name", tests.get(0).name)); } }
上記と同様に、Test.javaを作成します。
package jp.javelindev.wicket.seasar2.sample; import javax.persistence.Entity; @Entity public class Test { public Integer id; public String name; }
S2jdbcPage.htmlは以下のようにシンプルです。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> </head> <body> <h1>S2JDBC Page</h1> <div> データソースクラス名:<span wicket:id="managerClassName">aaa</span><br /> IDカラム値: <span wicket:id="id">名前</span> NAMEカラム値: <span wicket:id="name">名前</span> </div> </body> </html>
これで、Tomcatを起動すると、以下のようになりました。
HotDeployも動いていることを確認しましょう。
ただ、その前にTomcatのreloadable="true"にしてあると、TomcatがReloadしてうざいので、offにするといい感じです。
server.xmlの断片
<Context docBase="wicketseasar2sample" path="/wicketseasar2sample" reloadable="false" source="org.eclipse.jst.j2ee.server:wicketseasar2sample"/></Host>
以下のようにJavaを書き換えると、即座にページに反映されるのを確認できます。
public S2jdbcPage() { add(new Label("managerClassName", jdbcManager.getClass().getName())); List<Test> tests = jdbcManager.from(Test.class).getResultList(); add(new Label("id", tests.get(0).id.toString() + "だよ")); // 修正した add(new Label("name", tests.get(0).name)); }
WicketがDevelopmentモードだと、htmlファイルの変更も検知します。
そうなってくると、Jettyで開発した方が良いかもしれませんね。速いし。