读书人

Spring Remoting理解与使用

发布时间: 2012-11-05 09:35:12 作者: rapoo

Spring Remoting了解与使用
HttpInvokerServiceExporter只是spring remoting的一种,还有HessianServiceExporter,BurlapServiceExporter
下面一个例子以HttpInvokerServiceExporter为例的综合应用
也可以参考http://www.javaeye.com/topic/417767这个帖子

1.JettyDaemon类的start方法

   server = new Server();   final SelectChannelConnector connector = new SelectChannelConnector();   connector.setReuseAddress(true);   connector.setPort(port);      server.addConnector(connector);    WebAppContext webAppContext = new WebAppContext();    webAppContext.setContextPath("/");       ServletHolder sh = new ServletHolder();   sh.setName("helloServlt");   sh.setClassName(DispatcherServlet.class.getName());   sh.setInitParameter("contextConfigLocation","classpath:applicationContext-mvc.xml");   sh.setInitOrder(0);   webAppContext.addServlet(sh, "*.sv");   webAppContext.setDescriptor("web/WEB-INF/web.xml");   webAppContext.setResourceBase("web");   // webAppContext.setConfigurationDiscovered(true);   webAppContext.setParentLoaderPriority(true);   server.setHandler(webAppContext);   // 保证在退出时能优雅的退出jetty服务   // server.setStopAtShutdown(true);   // 以下代码是关键   webAppContext.setClassLoader(applicationContext.getClassLoader());   XmlWebApplicationContext xmlWebAppContext = new XmlWebApplicationContext();   xmlWebAppContext.setParent(applicationContext);   xmlWebAppContext.setConfigLocations(new String[] { "classpath:applicationContext-mvc.xml" });   xmlWebAppContext.setServletContext(webAppContext.getServletContext());   xmlWebAppContext.refresh();   webAppContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,xmlWebAppContext);   server.start();

2.服务器bean配置,没啥特别,就是让spring自动调用start方法和stop方法
 <bean id="webDaemon" destroy-method="stop"><property name="port" value="${master.port}"></property>   </bean>3.applicationContext-mvc.xml       <bean id="urlMapping"ref="taskManager"/>  <!--实现类--><property name="serviceInterface">                  <!--接口,需要提供给调用方--><value>com.taobao.monitor.pf.analyse.inter.Task2Slave</value></property></bean>

4.调用方配置,直接使用task2Slave实例即可
 <!-- spring http 远程调用 -->          <bean   id="httpInvokerRequestExecutor"                                 value="${http.timeout}" />                   <property                       name="httpConnectionManager">                       <ref                           bean="multiThreadedHttpConnectionManager" />                   </property>               </bean>           </property>       </bean><!--  获取远程任务接口对象,用来请求需要的job和rule对象 --><bean id="task2Slave"ref="httpInvokerRequestExecutor"/>   </bean>

读书人网 >软件架构设计

热点推荐