Spring发布多协议的远程服务其实比较简单,感觉Spring这方面已经做的好了,自己没必要再去搞些什么服务池。
1.ServiceExporter
public class ServiceExporter extends RemoteExporter
implements Controller, InitializingBean {
/**
*访问协议属性
*/
public static final String REMOTE_EXPORTER = "RemoteExporter";
/**
*访问协议hession
*/
public static final String HESSIAN_SERVICE_EXPORTER = "HessianServiceExporter";
HessianServiceExporter hessian=new HessianServiceExporter();
/**
*访问协议HttpInvoker
*/
public static final String HTTP_INVOKER_SERVICE_EXPORTER = "HttpInvokerServiceExporter";
HttpInvokerServiceExporter httpInvoker=new HttpInvokerServiceExporter();
/**
*访问协议Burlap
*/
public static final String BURLAP_SERVICE_EXPORTER = "BurlapServiceExporter";
BurlapServiceExporter burlap=new BurlapServiceExporter();
public void setService(Object service) {
super.setService(service);
hessian.setService(service);
httpInvoker.setService(service);
burlap.setService(service);
}
public void setServiceInterface(Class serviceInterface) {
super.setServiceInterface(serviceInterface);
hessian.setServiceInterface(serviceInterface);
httpInvoker.setServiceInterface(serviceInterface);
burlap.setServiceInterface(serviceInterface);
}
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception{
//检查访问协议属性
String remoteExporter = request.getHeader(ServiceExporter.REMOTE_EXPORTER);
// 访问协议Hessian
if(remoteExporter==null) {
hessian.handleRequest(request,response);
return null;
}
//访问协议HttpInvoker
if(remoteExporter.equalsIgnoreCase(ServiceExporter.HTTP_INVOKER_SERVICE_EXPORTER))
httpInvoker.handleRequest(request,response);
//访问协议Burlap
else if(remoteExporter.equalsIgnoreCase(ServiceExporter.BURLAP_SERVICE_EXPORTER))
burlap.handleRequest(request,response);
//访问协议Hessian
else
hessian.handleRequest(request,response);
return null;
}
public void afterPropertiesSet() throws Exception {
hessian.afterPropertiesSet();
burlap.afterPropertiesSet();
httpInvoker.afterPropertiesSet();
}
2.把接口发布为多协议远程服务
<bean name="/log/BusinessLogMessageService" class="bpo.ServiceExporter">
<property name="service" ref="log.BusinessLogMessageBPOTx"/>
<property name="serviceInterface" value="log.ILogMessageService"/>
</bean>
分享到:
相关推荐
在IT行业中,Spring框架是Java开发中的一个核心组件,它提供了丰富的功能,包括依赖注入、面向切面编程以及企业级服务。在分布式系统中,远程调用是一个常见需求,Spring为此提供了一种轻量级的解决方案——...
【标题】"CXF+Spring+Tomcat发布WebService"涉及的是使用Apache CXF框架与Spring框架结合,在Tomcat服务器上部署和消费Web服务的过程。这是一个常见的企业级应用开发场景,特别是对于实现基于SOAP协议的Web服务。...
RMI允许对象方法跨虚拟机(VM)边界被调用,Spring通过`java.rmi.Remote`接口和`java.rmi.RemoteException`异常处理机制,简化了RMI的配置和使用,使得开发者可以更容易地创建和消费RMI服务。 ### 2. HTTP Invoker ...
Spring Remoting提供了多种远程调用协议的抽象,如RMI、Hessian、 Burlap、HTTP Invoker和JMS等,允许开发者根据项目需求选择最适合的方案。 1. RMI(Remote Method Invocation):RMI是Java平台上的标准远程调用...
除了传统的 Java EE 服务之外,Spring 还支持远程调用等高级功能。 #### 15. Spring Messaging 随着微服务架构的流行,消息传递成为了不可或缺的技术。Spring 提供了完整的消息传递支持。 #### 16. Spring ...
它提供了SOAP和RESTful服务的实现,并且与Spring框架无缝集成,使得配置和服务管理变得更加简单。在这个"**cxf+spring+client**"的主题中,我们将深入探讨CXF与Spring框架结合创建客户端服务的细节,以及如何利用...
在这个Demo中,可能会展示最基础的同步调用,即服务消费者通过服务接口直接调用服务提供者的方法,并等待返回结果。 6. **测试验证**:通常会有一个测试类,通过模拟消费者调用服务提供者的某个接口,验证整个服务...
Spring还包含一套完整的数据访问、事务管理、安全性和远程服务支持的组件,使得开发者能够构建健壮且模块化的应用程序。 3. **CXF与Spring的整合** 将CXF与Spring整合,可以利用Spring的DI特性来管理CXF服务及其...
- **Web**:提供了丰富的Web应用开发功能,包括MVC框架、远程调用、Web服务等。 - **测试**:为单元测试和集成测试提供了便利,可以方便地进行Mock操作。 #### 三、使用场景 - **企业级应用开发**:Spring框架因其...
本篇文章将深入探讨Spring框架中与邮件服务相关的知识点,帮助开发者理解如何利用Spring轻松实现邮件的发送,以及相关的基础协议知识。 一、邮件传输基础 1. SMTP(Simple Mail Transfer Protocol):简单邮件传输...
9. **远程调用**:Spring支持RMI、Hessian、 Burlap等远程调用协议,方便分布式系统的开发。 10. **Web服务**:Spring Web Services模块提供了创建和消费SOAP服务的能力,同时支持WSDL-first和代码-first的开发方式...
通过 Spring Cloud Config 可以将应用的配置信息统一存储在 Git 仓库或其他版本控制系统中,并通过 HTTP 协议远程拉取配置。 - **服务端**:Spring Cloud Config Server 作为配置服务器,用于存放应用程序的各种...
7. **MVC的REST支持**:Spring 3.0引入了对构建RESTful服务的支持,使得创建基于HTTP协议的资源变得简单。 8. **JSR-303/JSR-349 Bean Validation**:Spring 3.0集成了Bean Validation标准,用于验证Java bean属性...
BlazeDS 提供了 ChannelSet、MessageBroker 等组件,使得 Flex 可以通过 Topic(发布/订阅)或 Remoting(远程方法调用)的方式与服务器通信。 对于 Spring 框架,它是一个轻量级的、全面的 Java 应用开发框架,...
常见的Web服务协议有SOAP(简单对象访问协议)、REST(表述性状态转移)等。本项目可能采用了SOAP,它基于HTTP协议,使用XML作为消息格式,保证了服务的互操作性。 【spring框架】:Spring是Java领域中最流行的应用...
Spring的远程调用支持,使得开发者能够在不同的系统或服务之间进行通信,无论是基于RMI、HTTP还是其他协议,Spring都能提供相应的支持。 ### Web应用开发 Spring MVC框架提供了强大的Web应用开发支持,包括请求...
为了更好地理解微服务远程调用的过程,下面通过一个简单的示例来说明如何使用Spring Cloud中的Feign进行远程调用。 **步骤1**:创建一个Feign客户端接口 ```java @FeignClient(name = "service-provider") public ...
Spring WS支持多种消息传输协议,包括SOAP和非SOAP协议,并提供了对现代Web服务标准的支持,如WSDL和WS-Security。 ##### 1.2 运行环境 Spring WS的设计旨在与现有的Java EE环境无缝集成,因此它能够运行在任何支持...