- 浏览: 233325 次
- 性别:
- 来自: 我也来自火星?
文章分类
最新评论
-
chengUFO:
Test tes = c.newInstance();执行以上 ...
自定义ClassLoader -
lliiqiang:
资料太少了,伪造客户端和事先标准以外数据为攻击,其它的是bug ...
Openlaszlo调用JavaRPC和JAVA类通信 -
tianshaojie:
楼主,为什么我安装你的方法建立工程后,访问就出错,我用的是ta ...
Tapestry4入门 -
panshunchang:
发帖过程这么辛苦,还要回答一大堆问题,受不了了
[常用代码整理]JAVA反射 -
活靶子:
生成一个join的SQL语句
SELECT items.* F ...
Better looking URLs with friendly_id
JavaRPC允许Laszlo客户端远程调用服务端的JAVA类和方法。在laszlo中使用<javarpc>标签来声明一个JavaRPC对象:
classname(String): 必需。指定需要访问的JAVA类名
attributename(String):使用服务端对象时的关键词。当scope为session或webapp时使用。
Scope(String): 必需。在session,webapp和none三个中选一个。
Loadoption(String): loadcreate,loadonly和create三个中任选一个。Loadcreate:如果服务器上存在该对象时加载,如果不存在,则在加载前自动创建该对象。Loadonly:只负责加载对象,如果该对象不存在,则返回一个错误。Create:在加载对象时总是在服务器端创建该对象。默认为loadcreate。
Createargs(Array): 只有当loadoption为loadcreate或create时才有效。Createargs
数组包含一些变量,这些变量用来在服务端创建对象时使用。默认为null。
Objectreturntype(String): pojo和javabean中任选一个。如果从服务端返回一个对象,使用pojo只返回该对象中所有声明为public的成员变量。使用javabean将返回含有getXXX()方法的成员变量。
Autoload(Boolean): true或false。True:在初始化时自动加载指定的对象。False:需要在使用对象前调用load()方法。默认为true。
Secure(Boolean): true或false。如果选择true的话,会在服务端和客户端之间建立一个安全的连接。
Secureport(Number):: 只有才secure为true时才有效。
如:
<javarpc name=”returnsun” scope=”none” class=”RetuenSum”>通过returnsun来建立javarpc和java之间的桥梁。其中name就是指定一个rpc的属性(attributename)。再通过remotecall调用java类的方法:
说明:在使用javarpc前,首先要将JAVA类定义为安全的,如下:
funcname对应java类的方法名称。
如果调用的方法带有参数,remotecall需用<param>来传递参数,这个参数对应JAVA方法中的形参。在传递时,remotecall会根据param的位置和JAVA方法形参的位置匹配。
<method event="ondata" args="sum"/>,使用args来接收JAVA方法的返回值,无需定义数据类型。
下面通过一个小DEMO来演示一下使用JavaRPC和JAVA进行通信:
TypesExample类:
LZX文件 demo.lzx
<javarpc classname="..." attributename="..." scope="[session|webapp|none]" loadoption="[loadcreate|loadonly|create]" createargs="..." objectreturntype="[pojo|javabean]" autoload="[true|false]" secure="[true|false]" secureport="...">
classname(String): 必需。指定需要访问的JAVA类名
attributename(String):使用服务端对象时的关键词。当scope为session或webapp时使用。
Scope(String): 必需。在session,webapp和none三个中选一个。
Loadoption(String): loadcreate,loadonly和create三个中任选一个。Loadcreate:如果服务器上存在该对象时加载,如果不存在,则在加载前自动创建该对象。Loadonly:只负责加载对象,如果该对象不存在,则返回一个错误。Create:在加载对象时总是在服务器端创建该对象。默认为loadcreate。
Createargs(Array): 只有当loadoption为loadcreate或create时才有效。Createargs
数组包含一些变量,这些变量用来在服务端创建对象时使用。默认为null。
Objectreturntype(String): pojo和javabean中任选一个。如果从服务端返回一个对象,使用pojo只返回该对象中所有声明为public的成员变量。使用javabean将返回含有getXXX()方法的成员变量。
Autoload(Boolean): true或false。True:在初始化时自动加载指定的对象。False:需要在使用对象前调用load()方法。默认为true。
Secure(Boolean): true或false。如果选择true的话,会在服务端和客户端之间建立一个安全的连接。
Secureport(Number):: 只有才secure为true时才有效。
如:
<javarpc name=”returnsun” scope=”none” class=”RetuenSum”>通过returnsun来建立javarpc和java之间的桥梁。其中name就是指定一个rpc的属性(attributename)。再通过remotecall调用java类的方法:
<remotecall name=”getSun” funcname="getSun"> <param id=”a” name=”a” value=”’’”/> <param id=”b” name=”b” value=”’’”/> <method event="ondata" args="sum"/> </remotecall>
说明:在使用javarpc前,首先要将JAVA类定义为安全的,如下:
<security> <allow> <pattern>^com.sum.ReturnSum</pattern> </allow> </security>
funcname对应java类的方法名称。
如果调用的方法带有参数,remotecall需用<param>来传递参数,这个参数对应JAVA方法中的形参。在传递时,remotecall会根据param的位置和JAVA方法形参的位置匹配。
<method event="ondata" args="sum"/>,使用args来接收JAVA方法的返回值,无需定义数据类型。
下面通过一个小DEMO来演示一下使用JavaRPC和JAVA进行通信:
TypesExample类:
package examples; import java.util.Vector; import java.util.Hashtable; public class TypesExample { public static String passInteger(int i) { return "got integer parameter: " + i; } public static String passDouble(double d) { return "got double parameter: " + d; } public static String passBoolean(boolean b) { return "got boolean parameter: " + b; } public static String passClientArray(Vector v) { return "got vector parameter: " + v; } public static String passClientObject(Hashtable t) { return "got hashtable parameter: " + t; } }
LZX文件 demo.lzx
<canvas debug="true" height="300" width="800"> <debug x="250" y="10" width="500" height="275" /> <security> <allow> <pattern>^examples.TypesExample</pattern> </allow> </security> <!-- See WEB-INF/classes/TypesExample.java for java source. --> <javarpc name="types_example_rpc" scope="none" classname="examples.TypesExample"> <method event="onload"> <!-- Set buttons visible only after JavaRPC object loads --> canvas.buttons.setAttribute('visible', true); </method> <method event="ondata" args="res"> Debug.write('(types ondata) response is:', res); </method> <method event="onerror" args="errmsg"> Debug.write('(types onerror) error:', errmsg); </method> <!-- Declaratively pass an integer. --> <remotecall funcname="passInteger"> <param value="42" /> </remotecall> <!-- Declaratively pass a double. Note that we name this function pd1 because we have multiple remotecall declarations that call passDouble but with different parameters. --> <remotecall name="pd1" funcname="passDouble"> <param value="42.1" /> </remotecall> <!-- Declaratively pass a double with 0 decimal. The 0 decimal will truncate and the number will become an integer type when it reaches the server. This call will fail. --> <remotecall name="pd2" funcname="passDouble"> <param value="42.0" /> </remotecall> <!-- Declaratively pass a double with 0 decimal. Wrapping the double in DoubleWrapper will ensure the value will remain a double when reaching the server. --> <remotecall name="pd3" funcname="passDouble"> <param> <method name="getValue"> return new LzRPC.DoubleWrapper(42.0); </method> </param> </remotecall> </javarpc> <view name="buttons" visible="false" layout="spacing: 10"> <button text="pass integer" onclick="types_example_rpc.passInteger.invoke()" /> <button text="pass double" onclick="types_example_rpc.pd1.invoke()" /> <button text="pass double (will fail)" onclick="types_example_rpc.pd2.invoke()" /> <button text="pass double w/LzRPC.DoubleWrapper" onclick="types_example_rpc.pd3.invoke()" /> <button text="pass boolean" onclick="this.passBoolean.invoke()"> <!-- This is a way to declare a remotecall closer to where it's being used. The remotecontext must be set. --> <remotecall funcname="passBoolean" remotecontext="$once{ types_example_rpc }"> <param value="true" /> </remotecall> </button> <button text="pass array" onclick="this.passArray.invoke()"> <remotecall name="passArray" funcname="passClientArray" remotecontext="$once{ types_example_rpc }"> <param value="[1, 'a string', 4.5, false]" /> </remotecall> </button> <button text="pass hash" onclick="this.passObject.invoke()"> <remotecall name="passObject" funcname="passClientObject" remotecontext="$once{ types_example_rpc }"> <param value="{ a: 1, b: 3.14159, c: 'a string value', d: true}"> </param> </remotecall> </button> </view>
发表评论
-
vim补全
2009-10-13 16:42 0引用VIM自动不齐不需要特殊配置,只需要打开 filetype ... -
一次小项目的思考
2009-08-20 23:11 3450最近的一个项目,四个 ... -
IntelliJ Idea插件Jetty Integration恢复开发
2009-08-19 14:34 3583今天在je上面看到了一条新闻 Google 选择 Jetty, ... -
PowerDesigner 中将Comment(注释)及Name(名称)内容互相COPY的VBS代码
2009-07-30 14:05 2259在用PowerDesigner时.常常在NAME或Commen ... -
使用VisualSVN Server构建自己的版本库
2008-12-16 16:13 1705VisualSVN Server是用于Subversion管理 ... -
在laszlo方法中使用参数
2006-03-22 14:56 963<canvas debug="true&quo ... -
openlasz入门---openlaszlo环境的建立
2006-04-11 22:09 1698关于openlaszlo的介绍网站上面也蛮多了,所以,在这里也 ... -
使用 JavaMail 收发邮件,解决中文附件问题
2007-02-07 11:22 3845几天来一直在开发一个项目,其中一部分需要用 JavaMail ... -
FCKEditor使用说明
2007-02-17 13:53 14971. FCKeditor 介绍 FCKeditor 这个开源的 ... -
一个不错的开源数据库H2
2007-02-17 14:10 1496H2是一个采用Java开发开源的嵌入式SQL数据库。它支持集群 ... -
JAVA获取系统当前的用户
2007-03-02 17:15 6732public class Test { ... -
FCKeditor插件开发
2007-03-23 21:45 2960FCKeditor插件开发建立 ... -
Idea8试用
2008-03-23 21:56 1666刚刚在新闻频道看到关于Idea的新闻,对它的javascrip ... -
HtmlUnit测试页面
2008-03-02 22:29 9884HtmlUnit简介:引自 www.open-open.com ... -
java的数据结构
2007-11-11 19:04 1490线性表,链表,哈希表是常用的数据结构,在进行Java开发时,J ... -
P6SPY监控数据库性能
2007-11-11 18:51 2929P6SPY监控数据库性能 P6SPY通过对JDBC API的 ... -
Idea7.0注册机
2007-10-20 22:55 3231Idea7.0注册机 -
[转]普元JS验证
2007-09-16 22:25 1685* -------------------------- ... -
Apache和Subversion搭建版本控制环境
2007-08-03 23:40 15331. 安装Apache2.0.59(Apache 2.2.4和 ... -
IDEA的RUBY插件试用
2007-07-31 22:21 3876经过http://www.intellij.org.cn站长的 ...
相关推荐
4. **安全限制**:由于安全沙箱的限制,Applet和OpenLaszlo的通信需要遵循特定的规则,例如使用JavaScript Bridge或者Flash ExternalInterface来规避安全策略。 5. **文件操作**:如果需要在客户端进行文件上传或...
手册中的"labs.openlaszlo.org"可能是一个指向OpenLaszlo官方实验室的链接,这个实验室通常包含各种示例、实验项目和最新的技术探索,是学习和了解OpenLaszlo最新功能的好地方。在这里,开发者可以找到实际的代码...
OpenLaszlo —— 一个快速构建和部署富 Internet 应用程序的平台 -- Linux,C,C++,Java,Ajax,XML,perl,php,python,ruby,MySQL,Gnome,KDE,Qt,Gtk,bash,shell,嵌入式,网络,信息安全,操作系统,数据结构,编译原理
### OpenLaszlo:领先的开源富互联网应用开发平台 #### 一、项目概述与历史 OpenLaszlo 是一个开放源代码平台,...通过不断的技术创新和社区合作,OpenLaszlo 正逐步成为开发高质量、高性能富互联网应用的理想选择。
openlaszlo应用程序开发使用的是基于XML的LZX语言,它可以被编译成DHMTL,SWF等格式。 openlaszlo可作为openmeetings客户端的编译。 因安装程序90+MB,所以切分为两个压缩包。 openlaszlo-4.9.0-windows-dev-install....
openlaszlo应用程序开发使用的是基于XML的LZX语言,它可以被编译成DHMTL,SWF等格式。 openlaszlo可作为openmeetings客户端的编译。 因安装程序90+MB,所以切分为两个压缩包。 openlaszlo-4.9.0-windows-dev-install....
1. **LPS和Java Servlet容器**:LPS是Laszlo应用程序的基础,它将LZX文件转化为Java Servlet。因此,Laszlo应用需要在支持Java Servlet的容器中运行,如Tomcat。在集成Laszlo到Java Web工程时,需将LPS部署到Tomcat...
openlaszlo应用程序开发使用的是基于XML的LZX语言,它可以被编译成DHMTL,SWF等格式。 是openmeetings视频会议系统的默认开发编译工具。
这是用Openlaszlo开发的计算器程序,可以实现基本的计算操作。 我是刚学openlaszlo,欢迎朋友们提出宝贵意见!
使用OpenLaszlo构建J2EE中的RIA程序,高春阳,龚群侃,当前,Web 应用程序就要进入了一个新的时期,富互联网客户端(RIA ,Rich Internet Application) 以其极大地用户交互性、优秀的外观设计、良好��
OpenLaszlo的核心是其基于LZX的声明式编程语言,这是一种类似于XML的标记语言,用于定义用户界面的结构和行为。LZX允许开发者分离UI设计和业务逻辑,使得代码更易于理解和维护。通过LZX,开发者可以创建复杂的交互式...
数据绑定特性和远程过程调用(RPC)的介绍,使得数据管理变得更加高效。 最后,通过滑条效果、树形菜单和数据展示等实例,手册展示了OpenLaszlo的实际应用,帮助读者将理论知识转化为实际开发技能。 总之,...
安装这些组件之后,你还需要按照OpenMeeting的官方文档对各个组件进行配置,包括数据库连接、Red5服务器和OpenLaszlo服务器的设置。在数据库中创建必要的表结构,配置OpenMeeting的应用程序上下文,以及调整Red5和...
- 确保OpenLaszlo的组件库(LPS)和JAR包已经被正确地添加到Struts项目的类路径中。 - 修改Struts项目的`web.xml`文件,以便能够识别OpenLaszlo定义的Servlet。 - 创建LZX文件并在Struts应用中引用它们。可以通过在...
OpenLaszlo Server 默认包含了 LPS 和 Tomcat,方便开发者在Web工程中集成Laszlo。 **Laszlo 运行环境** 1. **集成步骤** - 首先,你需要下载 OpenLaszlo Server 的servlet包,例如 `openlaszlo-3.3.3-servlet....
API是一组预定义的函数、类、对象和常量,开发者可以利用它们来构建软件应用。在C++中,API通常由第三方库提供,允许开发者轻松地添加特定功能,如图形处理、网络通信或者,就像这个案例中,火焰识别。 火焰识别...
1. **类的继承、定义与使用**:在OpenLaszlo中,可以创建自定义组件并实现继承,以便重用和扩展已有组件的功能。 2. **事件与触发**:OpenLaszlo支持事件驱动编程,允许组件之间通过事件进行通信,如点击按钮触发...
Geoar - WMS/WFS OpenLaszlo 客户端GeoAr 是 WMS 和 WFS 服务的富客户端实现。 它是在 LZX (OpenLaszlo) 上开发的,因此它向用户的浏览器提供 dhtml 或 flash,从而提供在它们之间进行选择的机会,但只有一个服务器...
OpenMeetings使用了OpenLaszlo的新流媒体格式,并基于开源Flash服务器Red5运行,而Red5是一个用Java编写的流媒体服务器。该系统遵守LGPL开源协议,保证了自由和免费的使用特性。 为在Windows Server 2003上成功搭建...