论坛首页 Java企业应用论坛

通过Spring进行远程服务访问

浏览 5947 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-01  

最近在做一个项目开发框架.前台使用Applet,服务器端最先考虑使用EJB3进行开发,但由于EJB采用的是RMI-IIOP协议进行底层数据传输,难于跨越防火墙,故考虑使用Spring提供的远程服务访问技术进行服务器端的编程.测试成功,记录下来..

环境:Eclipse3.2.2 JDK1.5 Spring2.0.2

1、由于客户端采用Applet,需要下载代码到客户端,简单起见,将所有的class都打包在一个jar包中,供客户端下载.以后考虑对下载的类进行缓存,以提高应用效率.
2、在IE中对applet进行配置,通过classid可以检测客户端的jre环境,如果不是需要的jdk版本,这里为1.5,则通过/Client下的客户端程序进行下载.由于应用定位于局域网中,下载一个20多M的程序应该不成问题..
3、applet访问本地资源的策略略过,有兴趣的可以留言....

下面主要介绍一下如果在Spring2.0.2中进行远程服务访问
1、定义客户端接口,此接口是暴露给客户端的....

接口中只有一个方法sayHello,作用是;根据客户端传入的str,传到服务器端连接一个字符串,再传到客户端.

2、定义一个类,实现IHelloWorld接口.

3、接下来就是通过xml文件进行组件的配置..
Spring的远程服务访问是通过org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter和org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean 两个类来实现的.HttpInvokerServiceExporter负责将定义的服务进行导出,是目标服务暴露出来.HttpInvokerProxyFactoryBean 负责客户端代理.将http的post请求定位到指定的服务.默认情况下,Spring使用J2SE的http功能.可以通过注入将commons的httpclient指定给HttpInvokerProxyFactoryBean..
步骤:
1、web.xml文件:添加org.springframework.web.context.ContextLoaderListener监听.定义一个org.springframework.web.servlet.DispatcherServlet
命名为 httpinvoker..之后当服务器启动是会自动到WEB-INF下寻找httpinvoker-servlet.xml文件进行bean初始化.
之后定义一个servlet-mapping,使所有以/http/结尾的请求全部定位到httpinvoker Servlet上
2、applicationContext.xml 定义一个Bean  初始化HelloWorldImpl.
3、httpinvoker-servlet.xml 定义两个Bean BeanNameUrlHandlerMapping用于根据BeanName进行映射...HttpInvokerServiceExporter用于远程服务导出.
4、以上三步就已经完成了远程服务的复制工作.以下实现客户端的调用配置.clientContext.xml用于配置客户端的访问..即指定服务器的地址、端口等基础信息.
5、最后就可以在代码进行初始化clientContext.xml文件,通过ctx.getBean(helloWorldService);来进行访问了.

 

java 代码
  1. public class HelloWorldImpl implements IHelloWorld {   
  2.     public String sayHello(String str) {   
  3.         return str +  " ,  欢迎使用Spring远程服务访问..."  
  4.     }   
  5. }   

 

java 代码
  1. public interface IHelloWorld {    
  2.     public  String sayHello(String str);   
  3. }   
   发表时间:2007-03-01  
clientContext.xml没贴出来
0 请登录后投票
   发表时间:2007-03-02  
加上了....
0 请登录后投票
   发表时间:2007-03-02  
有测试数据吗?效率如何
0 请登录后投票
   发表时间:2007-03-02  
目前还没有条件进行大规模的数据测试..可以想到的是Applet作为客户端由于要下载代码到客户端肯定会影响效率.但如果可以进行代码缓存,就可以处理这个问题.使只有第一次运行时候会慢,下次就会好很多...
0 请登录后投票
   发表时间:2007-03-02  
请问LZ: applet访问本地资源的策略 是如何做的?

我这里做法是对jar签名后,Applet修伽自己policy文件,添加例如操作本地硬盘的权限等。但是第一次使用,需要把IE关掉重新进入。比较不爽。
0 请登录后投票
   发表时间:2007-03-02  
我是把applet的访问策略放开了.
grant {
permission java.security.AllPermission;
};
0 请登录后投票
   发表时间:2007-03-05  
问题是如何修改客户端的policy的?
0 请登录后投票
   发表时间:2007-03-05  
我使用了自定义jdk安装包.客户端安装的是修改过策略文件的jdk..
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics