忍者ブログ
まにょのITメモ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

■applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:aop="http://www.springframework.org/schema/aop"
  xmlns:tx="http://www.springframework.org/schema/tx"
  xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
  xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://www.directwebremoting.org/schema/spring-dwr
    http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">


    <!-- ====================================================== -->
    <!--                    データソースの設定                                                            -->
    <!-- ====================================================== -->
    <bean id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName">
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <property name="url">
            <value>jdbc:mysql://XXX.XXX.XXX.XXX/DBName</value>
        </property>
        <property name="username">
            <value>XXXXX</value>
        </property>
        <property name="password">
            <value>XXXXX</value>
        </property>
    </bean>


    <!-- ====================================================== -->
    <!--                    セッションファクトリーの設定                                            -->
    <!-- ====================================================== -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="mappingResources">
            <value>
                jp/co/nadeshiko/model/User.hbm.xml
                ,jp/co/nadeshiko/model/Commodity.hbm.xml
                ,jp/co/nadeshiko/model/TempUser.hbm.xml
                ,jp/co/nadeshiko/model/AnnoDomini.hbm.xml
            </value>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">
                    org.hibernate.dialect.MySQLDialect
                </prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>

    <!-- ====================================================== -->
    <!--                       トランザクション設定                                                  -->
    <!-- ====================================================== -->
    <tx:advice id="nadeshikoAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="insert*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
            <tx:method name="delete*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
            <tx:method name="update*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
            <tx:method name="insert*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
            <tx:method name="select*" propagation="REQUIRED" rollback-for="java.lang.Exception" read-only="true"/>
            <tx:method name="get*" propagation="REQUIRED" rollback-for="java.lang.Exception" read-only="true"/>
        </tx:attributes>
    </tx:advice>

    <aop:config>
        <aop:pointcut id="nadeshikoPointcut" expression="execution(* jp.co.nadeshiko.service.*Service+.*(..))"/>
        <aop:advisor advice-ref="nadeshikoAdvice" pointcut-ref="nadeshikoPointcut" />
    </aop:config>

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>


※トランザクションの対象設定方法
■■execution(* XX)■■
※XXに適用するメソッドのパターンを記述
 指定したメソッドの呼び出しに対して適用するポイントカット

 execution(* jp.co.sample.aop.SampleBean.*(..))
※jp.co.sample.aop.SampleBeanクラスのすべてのpublicメソッドに適用
execution(* jp.co.sample.aop.*.*(..))
※jp.co.sample.aopパッケージのすべてのpublicメソッドに適用
execution(* jp.co.sample..*.*(..))
※jp.co.sampleパッケージおよびサブパッケージで定義されたすべてのpublicメソッドに適用

 

■■within(XX)■■
※XXに適用するクラスのパターンを記述
 指定したクラスで定義されたメソッドに対する
呼び出しに適用するポイントカット
(サブクラスやスーパークラスでの呼び出しには適用しない)
within(jp.co.sample.aop.SampleBean)
※SampleBeanクラスおよびサブクラスで定義されたメソッドに対する呼び出しに適用

 

■■target(XX)■■
※XXに適用するクラスのパターンを記述
 指定したクラスおよびサブクラスから、
呼び出すメソッドに適用するポイントカット
 target(jp.co.sample.aop.SampleBean)
※SampleBeanクラスおよびサブクラスから呼び出すメソッドに適用

 

■■args(XX)■■

※XXに適用するメソッドシグネチャパターンを記述
 呼び出し先のメソッドの引数の型が一致するメソッドに
適用するポイントカット args(java.lang.String)

※Stringパラメータを1つ取るメソッドにAspectを適用

 

PR

■applicationContext.xmlの設定
    <!-- ====================================================== -->
    <!--                       Ajax設定                                                                   -->
    <!-- ====================================================== -->
    <!-- サービス定義 -->
    <bean id="messageService" class="jp.co.nadeshiko.sample.MessageService">
        <dwr:remote javascript="MessageService">
            <!-- executeメソッド公開 -->
            <dwr:include method="execute" />
        </dwr:remote>
    </bean>

    <!-- JavaScriptへ渡すクラス定義 -->
    <dwr:configuration>
        <dwr:convert type="bean" class="jp.co.nadeshiko.sample.MessageBean" />
    </dwr:configuration>



■Web.xml
    <servlet>
        <servlet-name>dwr-invoker</servlet-name>
        <servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>


■サンプルのJSP
<%@ page contentType="text/html; charset=Shift_JIS"
  language="java" pageEncoding="Shift_JIS"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-bean
" prefix="bean"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<html:html>
<head>
<title>サンプル</title>
<script type="text/javascript" src="dwr/engine.js"> </script>
<script type="text/javascript" src="dwr/util.js"> </script>
<script type="text/javascript" src="dwr/interface/MessageService.js"></script>
<script language="JavaScript" type="text/javascript">
<!--
function show() {
    var message = DWRUtil.getValue("message");
    // コールバックが不要の場合は
    //MessageService.execute(message);

    // コールバックしたい場合
    MessageService.execute(message, callback);
}

function callback(resultVal){
    DWRUtil.setValue("result", resultVal.message);
}

// ロード中のメッセージを表示する
function init() {
    DWRUtil.useLoadingMessage("読み込み中");
}
//-->
</script>
</head>
<body onload="init();">
<p>何か入力してください: <input type="text" id="message" />
<input type="button" value="表示" onclick="show()" /><br/>
メッセージ: <span id="result"  style="background:#CCFF99; padding:4px;"></span>
</p>
</body>
</html:html>


■画面から使用されるJavaのサービス
package jp.co.nadeshiko.sample;

public class MessageService {
    private String massage;

    public void setMassage(String massage) {
        this.massage = massage;
    }

    public MessageBean execute(String value) {
        MessageBean bean = new MessageBean();
        bean.setMessage(value);
        return bean;
    }
}

画面で使用されるJavaのBean
package jp.co.nadeshiko.sample;

public class MessageBean {

    private String message;

    public String getMessage() {
        return message;
    }
    public void setMessage(String value) {
        message = value;
    }
}

設定を書くとこ

applicationContext.xm・・・Service, Daoの定義(Spring)

action-servlet.xml・・・Actionの定義(自作)

struts-config.xml・・・ActionForm, ActionMappingの定義(Struts)
忍者ブログ * [PR]