最q在做一个项目开发框?前台使用Applet,服务器端最先考虑使用EJB3q行开?但由于EJB采用的是RMI-IIOP协议q行底层数据传输,难于跨越防火?故考虑使用Spring提供的远E服务访问技术进行服务器端的~程.试成功,记录下来..
环境:Eclipse3.2.2 JDK1.5 Spring2.0.2
1、由于客L采用Applet,需要下载代码到客户?单v?所有的class都打包在一个jar包中,供客L下蝲.以后考虑对下载的c进行缓?以提高应用效?
2、在IE中对appletq行配置,通过classid可以客L的jre环境,如果不是需要的jdk版本,q里?.5,则通过/Client下的客户端程序进行下?׃应用定位于局域网?下蝲一?0多M的程序应该不成问?.
3、applet讉K本地资源的策略略q?有兴的可以留言....
下面主要介绍一下如果在Spring2.0.2中进行远E服务访?br> 1、定义客L接口,此接口是暴露l客L?...
接口中只有一个方法sayHello,作用?Ҏ客户端传入的str,传到服务器端q接一个字W串,再传到客L.
2、定义一个类,实现IHelloWorld接口.
3、接下来是通过xml文gq行lg的配|?.
Spring的远E服务访问是通过org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter和org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean 两个cL实现?HttpInvokerServiceExporter负责定义的服务q行导出,是目标服务暴露出?HttpInvokerProxyFactoryBean 负责客户端代?http的posth定位到指定的服务.默认情况?Spring使用J2SE的http功能.可以通过注入commons的httpclient指定lHttpInvokerProxyFactoryBean..
步骤:
1、web.xml文g:dorg.springframework.web.context.ContextLoaderListener监听.定义一个org.springframework.web.servlet.DispatcherServlet
命名?nbsp;httpinvoker..之后当服务器启动是会自动到WEB-INF下寻找httpinvoker-servlet.xml文gq行bean初始?
之后定义一个servlet-mapping,使所有以/http/l尾的请求全部定位到httpinvoker Servlet?br> 2、applicationContext.xml 定义一个Bean 初始化HelloWorldImpl.
3、httpinvoker-servlet.xml 定义两个Bean BeanNameUrlHandlerMapping用于ҎBeanNameq行映射...HttpInvokerServiceExporter用于q程服务导出.
4、以上三步就已经完成了远E服务的复制工作.以下实现客户端的调用配置.clientContext.xml用于配置客户端的讉K..x定服务器的地址、端口等基础信息.
5、最后就可以在代码进行初始化clientContext.xml文g,通过ctx.getBean(helloWorldService);来进行访问了.
java 代码
- public class HelloWorldImpl implements IHelloWorld {
- public String sayHello(String str) {
- return str + " , Ƣ迎使用Springq程服务讉K..."
- }
- }
java 代码
- public interface IHelloWorld {
- public String sayHello(String str);
- }
|