Top / Java / Pingアプリケーション / Springの設定

先にhibernate-spring.xmlにDAO関連の記述の説明をしましたが、ちょっとSpringでやったことをまとめておきます。

データベース関連

beans.xmlはXDocletから自動生成されるけど、SpringのdataSourceやsessionFactoryなどはXDoclet向けの記述を書く場所がわからなかったので、とりあえずhibernate-spring.xmlってファイルを作って読み込ませることにしました。ちなみに、複数のファイルを読み込ませるにはweb.xmlで以下の内容を記述しておきます。

<context-param>
  <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/classes/beans.xml,
               /WEB-INF/classes/hibernate-spring.xml
  </param-value>  ここは一行で。
</context-param>

ちなみにこのようなソースファイルに記述するものではないモノについては、XDocletのマージファイル web-settings.xmlに書いておきます。

hibernate-spring.xml

とりあえず、要件や発生した課題は以下の感じです。

  • WEBコンテナのDataSource?を使いたい
  • Hibernate3.xを使いたい
  • できれば、Hibernate Annotation使って楽したい(*.hbm.xml作りたくない)
  • でも、通常hibernate.cfg.xmlで書く
    <mapping class="nu.mine.kino.rss.hibernate.Rss" />
    をhibernate-spring.xmlで書く書き方がわからない

いろいろ調べて以下のように行くことにしました。

  • hibernate-spring.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
     "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
      <!-- WEBコンテナのDataSourceを使う設定 -->
      <bean id="dataSource" 
        class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName">
          <value>java:comp/env/jdbc/MySqlDS</value>
        </property>
      </bean>
      
      <bean id="sessionFactory" 
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
          <ref local="dataSource" />
        </property>
        <property name="configLocation">
          <value>/WEB-INF/hibernate.cfg.xml</value>
          <!-- Mappingクラスだけ既存ファイルに書く  -->
        </property>
        <property name="configurationClass">
          <value>org.hibernate.cfg.AnnotationConfiguration</value>
        </property>
      </bean>
    </beans>
    このファイルはsource直下など、クラスパスが通っているところに置いておきます。指定されている/WEB-INF/hibernate.cfg.xmlは
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
            <mapping class="nu.mine.kino.rss.hibernate.Rss" />
        </session-factory>
    </hibernate-configuration>
    とAnnotationが書いてあるクラスファイルを指定しました。

その他のJavaBeans?の設定

その他のJavaBeans?に関しては、XDocletを使ってEclipse上で自動生成するようにしています。XDocletで生成されるファイルはbeans.xmlとしました。たとえばPingClient?だったら、クラスコメントに

/**
 * PingサーバにweblogUpdates.pingを打つクライアントです。
 * @spring.bean id = "pingClient"
 */

んで、エンドポイントを決めるセッターメソッドに

/**
 * @spring.property list =
 *           "http://localhost:8080/PingWeb/PingReceiver,
 *            http://ping.cocolog-nifty.com/xmlrpc,
 *            http://ping.bloggers.jp/rpc/,
 *            http://www.blogpeople.net/servlet/weblogUpdates,
 *            http://ping.myblog.jp"
 */             ↑ 実際は改行しない
public void setEndpointURLList(List endpointURLLis
    this.endpointURLList = endpointURLList;
}

と書いておきます。すると以下のようなbeans.xmlが生成されます。

<bean
    id="pingClient"
    class="nu.mine.kino.ping.PingClient"
>
  <property name="endpointURLList">
    <list>
      <value>http://ping.cocolog-nifty.com/xmlrpc</value>
      <value>http://localhost:8080/PingWeb/PingReceiver</value>
      <value>http://ping.bloggers.jp/rpc/</value>
      <value>http://www.blogpeople.net/servlet/weblogUpdates</value>
      <value>http://ping.myblog.jp</value>
    </list>
  </property>
</bean>

この記事は

選択肢 投票
おもしろかった 3  
そうでもない 0  

Top / Java / Pingアプリケーション / Springの設定

現在のアクセス:6312


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-02-10 (火) 11:36:00 (3848d)