Spring之集成之使用Hession或Burlap通过http远程调用业务
来源:互联网 发布:北京程序员周末培训班 编辑:程序博客网 时间:2024/06/08 19:46
Hession提供二进制基于HTTP远程协议。
为Hession连接DispatcherServlet
Hession借助HTTP通信并使用一个通用级别完成这些。使用Spring的DispatcherServlet 原则,你可以轻易地这样的Servlet来暴露你的业务。首先我们得在你的应用程序中创建一个新的Servlet(这是来自web.xml的引用)。
<servlet> <servlet-name>remoting</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup></servlet><servlet-mapping> <servlet-name>remoting</servlet-name> <url-pattern>/remoting/*</url-pattern></servlet-mapping>
你可能熟悉Spring的DispatcherServlet原理。如果是这样,你知道现在得在‘WEB-INF’目录下创建一个Spring容器的配置资源,命名为'remoting-servlet.xml' (你的Servlet名字)。这个应用程序上下文将在下一章节用到。
作为可选地,考虑Spring更简单的HttpRequestHandlerServlet的用法。允许在你的根应用上下文中嵌入远程输出者定义(默认在'WEB-INF/applicationContext.xml'),各个Servlet 定义指向指定的输出bean。每个Servlet名字需要匹配目标输出者的bean名。
21.3.2 通过使用HessianServiceExporter暴露你的bean
在新建的应用上下文“remoting-servlet.xml”,我们创建HessianServiceExporter来暴露你的业务。
<bean id="accountService" class="example.AccountServiceImpl"> <!-- any additional properties, maybe a DAO? --></bean><bean name="/AccountService" class="org.springframework.remoting.caucho.HessianServiceExporter"> <property name="service" ref="accountService"/> <property name="serviceInterface" value="example.AccountService"/></bean>
现在我们准备连接客户端的业务。没有指定直接的处理器映射,映射请求到对应的业务上,这样将使用BeanNameUrlHandlerMapping
。因此,这个业务将通过其bean名由URL(包含了DispatcherServlet
的映射)指定来暴露(如上定义):'http://HOST:8080/remoting/AccountService'
作为可选地,在你的根应用程序上下文中创建一个HessianServiceExporter
:(例如:'WEB-INF/applicationContext.xml'
)
<bean name="accountExporter" class="org.springframework.remoting.caucho.HessianServiceExporter"> <property name="service" ref="accountService"/> <property name="serviceInterface" value="example.AccountService"/></bean>
在后面的例子中,为这个调用者在web.xml中定义一个对应的Servlet,这样有相同的结局结果:调用者映射到请求路劲:/remoting/AccountService
。注意到Servlet的名字需要映射到目标调用者的bean名称。
<servlet> <servlet-name>accountExporter</servlet-name> <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class></servlet><servlet-mapping> <servlet-name>accountExporter</servlet-name> <url-pattern>/remoting/AccountService</url-pattern></servlet-mapping>
21.3.3 在客户端联系业务
使用HessianProxyFactoryBean
我们可以在客户端联系业务。同样的原理适用于RMI例子。我们将创建一个独立的bean工厂或者应用程序上下文,并提醒下面的beans,SimpleObject正在使用AccountService
管理账户。
<bean class="example.SimpleObject"> <property name="accountService" ref="accountService"/></bean><bean id="accountService" class="org.springframework.remoting.caucho.HessianProxyFactoryBean"> <property name="serviceUrl" value="http://remotehost:8080/remoting/AccountService"/> <property name="serviceInterface" value="example.AccountService"/></bean>
21.3.4 使用Burlap
这里不讨论Burlap,与Hessian基于XML的相同。细节方面,由于其也是可配置的和与Hessian同样的方式,这里只需要将Hassian用Burlap替换就可以了。
21.3.5 应用HTTP基本校验通过Hessian或者Burlap暴露业务
Hessian和Burlap的优点之一是可以轻易应用HTTP的基本校验,因为两者的协议都是基于HTTP的。一般的HTTP服务安全机制可以很容易地应用使用web.xml的安全功能。通常,你不使用每个用户的安全认证,而是在Hessian/BurlapProxyFactoryBean
层次共享认证定义(与JDBC DataSource相似)。
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"> <property name="interceptors" ref="authorizationInterceptor"/></bean><bean id="authorizationInterceptor" class="org.springframework.web.servlet.handler.UserRoleAuthorizationInterceptor"> <property name="authorizedRoles" value="administrator,operator"/></bean>
这是个直接提到
BeanNameUrlHandlerMapping
并且设置一个调用者仅允许管理员和调用者来调用应用程序上下文中的beans。注意:当然了,这个例子没有显示一中灵活的安全机制。更多详情可以参考Spring提供的spring-security
- Spring之集成之使用Hession或Burlap通过http远程调用业务
- hession、burlap和http invoker远程调用方案的使用和比较
- 远程服务调用之RMI、Hessian、Burlap、Spring的HTTPinvoker
- 《pro Spring》学习笔记之Spring HTTP 远程方法调用集成Tomcat实现安全验证
- 远程调用之RMI、Hessian、Burlap、Httpinvoker、WebService的比较
- Spring的Hessian,Burlap,HttpInvoker远程调用
- 《pro Spring》学习笔记之Spring HTTP 远程方法调用
- Spring与远程调用RMI、Hessian、Burlap、HttpInvoker、Jax-WS
- Hession集成到spring mvc
- Spring之集成之远程访问SLSBs
- 使用Spring HTTP invoker进行远程调用
- 《pro Spring》学习笔记之Spring HTTP 远程方法调用返回复杂类型的方法
- java远程调用之spring和hessian
- Spring Framework 开发参考手册 之十六 通过Spring使用远程访问和web服务
- Spring 远程调用 HTTP invoker
- Spring之集成之Exposing services using HTTP invokers
- Hessian or Burlap in Spring via Http
- Spring与RMI 集成,实现远程调用
- Linux下执行程序出现 Text file busy 时的解决办法
- NRF2401
- python【二】python的字符串操作
- VMWare Linux安装vmware tools
- Python 使用ctypes调用 C 函数
- Spring之集成之使用Hession或Burlap通过http远程调用业务
- C++枚举文件
- 程序员最值得关注的10个C开源项目
- 剑指offer31--连续子数组的最大和
- ubuntu下MySQL键值不支持中文解决办法
- 如何清除windows清除com口
- 读书笔记--容器操作总结
- ProgressBar
- linux at 命令