リモーティング機能は、Spring Frameworkアプリケーションから別プロセスのIJServerクラスタへ配備されたSpring Frameworkアプリケーションの呼び出しを実現します。
本機能を利用することにより、アプリケーションを分離することが可能になるため、負荷分散などのスケーラブルな運用ができます。本製品ではリモーティング機能として次の2つの方式をサポートします。
HttpInvoker
JmsInvoker
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> |