`
BucketLi
  • 浏览: 195059 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
5a76a659-f8e6-3bf3-b39a-8ae8f7a0f9d9
Percolator与分布...
浏览量:5674
社区版块
存档分类
最新评论

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" class="com.taobao.monitor.pf.analyse.master.core.JettyDaemon"
	init-method="start" destroy-method="stop">
	<property name="port" value="${master.port}"></property>
   </bean>

3.applicationContext-mvc.xml
       <bean id="urlMapping"
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/task2slave.sv">task2slaveService</prop>
			</props>
		</property>
	</bean>

	<bean id="task2slaveService"
		class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
		<property name="service" ref="taskManager"/>  <!--实现类-->
		<property name="serviceInterface">                  <!--接口,需要提供给调用方-->
			<value>com.taobao.monitor.pf.analyse.inter.Task2Slave</value>
		</property>
	</bean>

4.调用方配置,直接使用task2Slave实例即可    
 <!-- spring http 远程调用 -->     
     <bean   id="httpInvokerRequestExecutor"   
        class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor">   
        <property   
            name="httpClient">   
            <bean   
                class="org.apache.commons.httpclient.HttpClient">  
                <property   
                    name="timeout"   
                    value="${http.timeout}" />   
                <property   
                    name="httpConnectionManager">   
                    <ref   
                        bean="multiThreadedHttpConnectionManager" />   
                </property>   
            </bean>   
        </property>   
    </bean>
	
	<!--  获取远程任务接口对象,用来请求需要的job和rule对象 -->
	<bean id="task2Slave"
		class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
		<property name="serviceUrl">
			<value>http://${master.ip}:${master.port}/task2slave.sv</value>
		</property>
		<property name="serviceInterface">
			<value>com.taobao.monitor.pf.analyse.inter.Task2Slave</value>
		</property>
		<property name="httpInvokerRequestExecutor" ref="httpInvokerRequestExecutor"/>   
	</bean>
分享到:
评论

相关推荐

    用Remoting分布式处理方式

    总结起来,这个压缩包提供了一个学习.NET Remoting的起点,对于想要了解或掌握分布式系统开发的.NET程序员来说,这是一个很好的实践项目。通过深入研究并运行示例,可以加深对.NET Remoting工作原理的理解,并能将其...

    spring jar 包详解

    - **功能简介**:包含了 Web 应用开发时使用 Spring 框架时所需的核心类,包括自动载入 WebApplicationContext 特性的类、Struts 与 JSF 集成类、文件上传的支持类、Filter 类和大量工具辅助类。 - **应用场景**:...

    [Pro.Spring.3(2012)].Clarence.Ho.文字版

    读者将了解到不同的远程调用协议(如RMI、Hessian、Burlap等)与Spring Remoting的集成方式,以及如何构建分布式应用系统。 ### 第17章:使用Spring的Web应用程序 本章专注于Spring MVC框架,讲解了如何使用Spring...

    spring security reference 3.1.6 使用指南

    spring-security-remoting.jar,用于远程支持;spring-security-web.jar提供了与Web应用相关的安全特性;spring-security-config.jar包含了安全配置的代码;spring-security-ldap.jar用于与LDAP服务的集成;spring-...

    如何在Spring框架中使用RMI技术.zip

    本压缩包提供了两个Java工程示例,帮助开发者了解如何在Spring环境中集成并使用RMI。 首先,让我们理解RMI的基本概念。RMI是Java提供的一种机制,使得一个Java对象能够调用运行在不同JVM上的另一个Java对象的方法。...

    开源框架 Spring Gossip

    远程(Remoting) Spring 提供了一致的使用方式,即使所采用的远程服务技术不尽相同,在 Spring 中运用它们的方式却是一致的。 RMI Hessian、 Burlap Http Invoker &lt;br&gt;邮件 对于邮件发送...

    spring框架各jar包详解

    了解每个 jar 包的作用和使用场景对于正确地使用 Spring 框架非常重要。本文将对 Spring 框架中常用的 jar 包进行详细的介绍。 antant.jar, ant-junit.jar, ant-launcher.jar Apache Ant 是 Spring 框架的构建工具...

    flex整合spring的例子

    4. **在Flex客户端中消费服务**:在Flex代码中,你可以使用`RemoteObject`组件来调用配置好的远程目的地,并且通过数据绑定或事件处理程序与Spring服务进行交互。 5. **处理数据和异常**:Flex客户端可以接收来自...

    org.jflux.impl.transport.qpid-0.1.4.zip

    Spring框架,作为一个广泛使用的Java企业级应用开发框架,提供了多种RPC实现方式,其中之一便是Spring-Remoting-AMQP。这个开源项目将Spring的远程调用功能与Advanced Message Queuing Protocol(AMQP)相结合,为...

    Pro Flex On Spring

    而前端的Flex应用则可以透过Remoting或BlazeDS(Adobe提供的开源解决方案)与后端的Spring应用进行通信。 Flex与Spring的整合并不是没有挑战。例如,需要处理不同技术栈之间的数据格式转换,以及保证两个技术栈的...

    webservice xfire spring2.0完整实例

    - Spring通过`org.springframework.remoting.jaxws`包中的类与XFire进行集成,例如`LocalXFireWebServiceProxyFactoryBean`和`XFireWebServiceExporter`。前者用于创建Web服务客户端代理,后者用于暴露服务。 - ...

    xfire 与Spring完整集成实例(WebService)

    3. **理解Spring**:Spring通过其`org.springframework.remoting`包提供了对远程调用的支持,包括对Web服务的支持。Spring允许你将Web服务的实现作为一个bean进行管理,使得集成更容易。 4. **集成过程**: - **...

    用spring和Flex整合的一个例子

    3. **配置远程服务**:使用Spring的`&lt;remoting&gt;`标签在Spring配置文件中声明Flex服务。这使得BlazeDS能够暴露Spring bean为Flex客户端可访问的远程服务。 4. **创建Flex客户端**:在Flex项目中,你可以通过...

    Flex、Spring整合:blazeds

    2. **暴露Spring Bean**:使用Spring的`&lt;flex:remoting-destination&gt;`标签,将Spring的bean暴露为远程服务,使其可以在Flex客户端调用。 3. **Flex客户端配置**:在Flex项目中,需要配置`services-config.xml`文件...

    spring2.0中文开发参考手册(CHM)

    《Spring 2.0中文开发参考手册》是针对Spring框架2.0版本的一份详尽指南,旨在帮助开发者深入理解并充分利用Spring 2.0的新特性与改进。Spring框架是Java开发中的一个核心组件,尤其在企业级应用中广泛使用,它通过...

    spring RMI 实用分享

    在本文中,我们将深入探讨Spring框架如何集成RMI,以及如何创建和使用RMI客户端。 首先,让我们了解RMI的基本概念。RMI是一种机制,它允许一个对象在一台计算机上执行的方法可以在另一台计算机上执行,就好像这些...

    Spring+Dwr整合的项目(源码)

    DWR(Direct Web Remoting)则是一个允许JavaScript与Java在浏览器端进行实时交互的库,它可以实现AJAX(异步JavaScript和XML)的高效通信,为Web应用带来桌面应用般的用户体验。 本项目是Spring与DWR的整合实例,...

    spring3.0整合Xfire1.2.6 开发webservice需要的jar包

    首先,让我们了解Spring 3.0。Spring 3.0是Spring框架的一个重大更新,引入了许多新特性和改进,如支持JSR-303 Bean Validation,对AspectJ注解的支持增强,以及对RESTful Web服务的全面支持等。这些特性使得Spring ...

    Spring HttpInvoker的封装

    了解Spring HttpInvoker的源码有助于我们更好地理解其工作原理和优化点。`HttpInvokerRequestExecutor`是处理HTTP请求的核心类,它使用`HttpURLConnection`发送POST请求,将Java对象序列化为字节数组,然后在服务端...

Global site tag (gtag.js) - Google Analytics