ページの先頭行へ戻る
Interstage Business Application Server オープンJavaフレームワークユーザーズガイド
FUJITSU Software

3.3.4 リモートティング機能によるWeb-AP分離

リモーティング機能は、Spring Frameworkアプリケーションから別プロセスのIJServerクラスタへ配備されたSpring Frameworkアプリケーションの呼び出しを実現します。

本機能を利用することにより、アプリケーションを分離することが可能になるため、負荷分散などのスケーラブルな運用ができます。本製品ではリモーティング機能として次の2つの方式をサポートします。

HttpInvokerの定義例(Web側)

■applicationContext.xmlまたはサーブレット名-servlet.xml

・・・
    <!-- (5) 業務アプリケーションで使用するBeanの定義-->
<!--
    <bean id="businessService" class="test.ListServiceImpl">
        <property name="employeeDao" ref="employeeDao00"/>
    </bean>
    <bean id="employeeDao00" class="test.EmployeeDaoImpl" />
-->
    <bean id="businessService"
        class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
        <property name="serviceUrl"
            value="http://localhost/backapp/remoting/httpinvokeapp" />
         <property name="serviceInterface" value="test.ListService" />
    </bean>
</beans>

HttpInvokerの定義例(AP側)

■web.xml

<?xml version="1.0" encoding="Shift_JIS"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>httpinvokeapp</servlet-name>
        <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>httpinvokeapp</servlet-name>
        <url-pattern>/remoting/httpinvokeapp</url-pattern>
    </servlet-mapping>
</web-app>

注) servlet-classにはDispatcherServletではなくHttpRequestHandlerServletを使用してください。

■applicationContext.xml

    <!-- (5) 業務アプリケーションで使用するBeanの定義-->
    <bean id="businessService" class="test.ListServiceImpl">
        <property name="employeeDao" ref="employeeDao00"/>
    </bean>
    <bean id="employeeDao00" class="test.EmployeeDaoImpl" />
    <bean name="httpinvokeapp"
        class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
        <property name="service" ref="businessService" />
        <property name="serviceInterface" value="test.ListService" />
    </bean>
</beans>

注) bean名とサーブレット名を同一の名前にしてください。

JmsInvokerの定義例(Web側)

■applicationContext.xmlまたはサーブレット名-servlet.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:jee="http://www.springframework.org/schema/jee"
xmlns:jms="http://www.springframework.org/schema/jms"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 http://www.springframework.org/schema/jee 
 http://www.springframework.org/schema/jee/spring-jee.xsd 
http://www.springframework.org/schema/jms
 http://www.springframework.org/schema/jms/spring-jms-2.5.xsd">
・・・
    <!-- (5) 業務アプリケーションで使用するBeanの定義-->
<!--
    <bean id="businessService" class="test.ListServiceImpl">
        <property name="employeeDao" ref="employeeDao00"/>
    </bean>
    <bean id="employeeDao00" class="test.EmployeeDaoImpl" />
-->
    <jee:jndi-lookup id="connectionFactory" jndi-name="jmsfactory01"/>
    <jee:jndi-lookup id="messageQueue" jndi-name="queue01"/>
    <bean id="businessService"
        class="org.springframework.jms.remoting.JmsInvokerProxyFactoryBean">
        <property name="serviceInterface" value="test.ListService" />
        <property name="connectionFactory" ref="connectionFactory"/>
        <property name="queue" ref="messageQueue"/>
    </bean>
</beans>

JmsInvokerの定義例(AP側)

■applicationContext.xmlまたはサーブレット名-servlet.xml

・・・
    <!-- (5) 業務アプリケーションで使用するBeanの定義-->
<!--
    <bean id="businessService" class="test.ListServiceImpl">
        <property name="employeeDao" ref="employeeDao00"/>
    </bean>
-->
    <bean id="employeeDao00" class="test.EmployeeDaoImpl" />
    <jee:jndi-lookup id="connectionFactory" jndi-name="jmsfactory01"/>
    <jee:jndi-lookup id="messageQueue" jndi-name="queue01"/>
    <bean id="businessService"
        class="org.springframework.jms.remoting.JmsInvokerServiceExporter">
        <property name="service" ref="businessService" />
        <property name="serviceInterface" value="test.ListService" />
    </bean>
    <jms:listener-container connection-factory="connectionFactory" container-type="default">
        <jms:listener ref="businessService" method="getEmployeeList"  destination="messageQueue"/>
    </jms:listener-container>
</beans>