JiveJdon Community Forums
在线170人   首页   主题表   培训咨询   标签   查搜   注册    登陆 RSS
首页 » 论坛 » 语言平台技术讨论
???en_US.forumThreadPrev.name??? 上一主题
RSS google yahoo 365Key网摘 CSDN网摘 添加到百度搜藏 POCO网摘 新浪ViVi QQ网摘
???en_US.forumThreadNext.name??? 下一主题
Go 共有 3 回复(1页) 阅读487次
 发表新帖子   回复该主题贴
banq



发表文章: 11282
注册时间: 2002年08月03日
悄悄话
个人博客
在线? 当前离线
我要关注该作者发言 70人关注
JavaFX RIA企业应用简要 2009年06月29日 09:56 收藏关注本主题 到本帖网址 加入本帖到收藏夹 请用鼠标选择需要回复的文字再点按本回复键 回复该主题
标签                    
JavaFX结合Hessian可以访问服务器端Web应用,JavaFX等RIA和Struts等是同一个层面的,都属于表现层,架构应该是这样:JavaFX + Hessian + Servlet + Spring/Seam/Jdon。

Hessian主要是一个Proxy开源项目,可以让远程富客户端RIA可以象调用本地Java代码一样调用,类似RMI,不过是基于Http的RMI。

这里关键是要自己做一个Servlet,也就是Hessian通讯的服务器端,Servlet是一个业务层服务的代理,Flamingo开源项目已经提供Seam/Spring的现成Servlet(http://exadel.com/web/portal/flamingo),而Jdon框架的Servlet需要参考Flamingo做一个,我会拓展到下一个版本发布。

首先看看步骤:
一. 客户端代码分两个,一个JavaFX 相当于MVC模式中的View,与B/S架构中的html类似;一个是Java客户端代码,相当于MVC的Controller,主要用来和服务器通讯调用(通过Hessian)。

下面是Java客户端控制器代码:

public class HelloworldClient {

public static HelloworldClient CLIENT;

private String _url;

private HelloworldClient(String string) {
_url = string;
}
private HelloService _service;

public static void setServerUrl(String url) {
CLIENT = new HelloworldClient(url);
}

private HelloService getService() {
if (_service == null) {
try {
//通过Hessian调用服务器端服务
HessianProxyFactory factory = new HessianProxyFactory();
_service = (HelloService) factory.create(HelloService.class, _url);
} catch (MalformedURLException ex) {
System.out.println(ex);
}

}

return _service;
}

//供JavaFX调用
public String hello(String s) {
return getService().hello(s);
}
}


下面是JavaFX代码:

class Hello {
attribute name:String;
attribute str:String;
}

var helloModel = new Hello();

HelloworldClient.setServerUrl(ARGUMENTS:String);

Frame {
width: 300
height: 200
title: "Exadel Flamingo Helloworld Spring Sample"
centerOnScreen: true
onClose: operation(){ System.exit(0);}
content: GridPanel {
border: EmptyBorder {
top: 30
left: 30
bottom: 30
right: 30
}
rows: 3
columns: 1
vgap: 10
cells:
[TextField {
value: bind helloModel.name
},
Button {
text:
"Say Hello!"
action: operation() {
//调用Controller控制器HelloworldClient的hello方法
//将返回结果赋值给JavaFX的数据对象helloModel
helloModel.str = HelloworldClient.CLIENT.hello(helloModel.name);
}
},
Label {
text: bind
"Server says: {helloModel.str}"
}]
}
visible: true
};



二. 服务器端主要是配置Servlet,在Web.xml中配置如下Servlet:

<servlet>
<servlet-name>Exadel Flamingo Hessian2Spring Remote Servlet</servlet-name>
<servlet-class>com.exadel.flamingo.service.spring.HessianToSpringServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Exadel Flamingo Hessian2Spring Remote Servlet</servlet-name>
<url-pattern>/flamingo/hessian/*</url-pattern>
</servlet-mapping>

以上Servlet是针对Spring框架的,Flamingo 也有Seam框架,当然,Flamingo不会提供Jdon框架的Servlet,不过参考Spring的Servlet实现起来应该很方便,我会加入Jdon框架下一个版本。

这样,使用JavaFX我们就可以方便实现一个富客户端的新型多层C/S架构应用,JavaFX当然不会替代AJAX,但是拥有一些自己的独特特点,对于一些领域应用还是有市场的,加上简洁的类似JavaScrpt的表达方式,无缝和java结合,真的是Swing或Applet的替代物。


[该贴被banq于2009-06-29 10:02修改过]
[该贴被banq于2009-06-29 10:02修改过]
banq



发表文章: 11282
注册时间: 2002年08月03日
悄悄话
个人博客
在线? 当前离线
我要关注该作者发言 70人关注
回复:JavaFX RIA企业应用简要 2009年06月30日 09:51 收藏关注本主题 到本帖网址 加入本帖到收藏夹 请用鼠标选择需要回复的文字再点按本回复键 回复该主题
Jdon的Remote Access已经整入Jdonframework 5.8中,在线演示:http://www.jdon.com:8080/jdonremote/

JavaFX + Hessian + Jdon 源码下载:
https://sourceforge.net/project/showfiles.php?group_id=126953&package_id=138962

开发简要步骤:
在web.xml配置Hessian Servlet Proxy如下:
<servlet>
<servlet-name>Hessian2Jdon</servlet-name>
<servlet-class>com.jdon.bussinessproxy.remote.HessianToJdonServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hessian2Jdon</servlet-name>
<url-pattern>/remote/*</url-pattern>
</servlet-mapping>

这样,当远程客户端调用http://localhost:8080//remote/helloService,那么这个Servlet 将在jdonframeowrk.xml查找服务名称为helloService的服务:
<app>
<services>
<pojoService name="helloService" class="sample.HelloServiceImpl"/>
</services>
</app>
远程客户端代码如下:
HessianProxyFactory factory = new HessianProxyFactory();
HelloService _service = (HelloService)
factory.create(HelloService.class, _url);
_service.hello(s);
客户端调用HelloService的hello方法时,将激活HelloServiceImpl.hello方法。Demo在线演示网址:http://www.jdon.com:8080/jdonremote/

[该贴被banq于2009-07-01 17:35修改过]
mikejava



发表文章:
注册时间: 2009年04月18日
悄悄话
个人博客
在线? 当前离线
我要关注该作者发言
JavaFX RIA企业应用简要 2009年07月02日 16:30 收藏关注本主题 到本帖网址 加入本帖到收藏夹 请用鼠标选择需要回复的文字再点按本回复键 回复该主题
测试成功。 不知道 javafx 的前景如何?
banq



发表文章: 11282
注册时间: 2002年08月03日
悄悄话
个人博客
在线? 当前离线
我要关注该作者发言 70人关注
回复:JavaFX RIA企业应用简要 2009年07月07日 08:52 收藏关注本主题 到本帖网址 加入本帖到收藏夹 请用鼠标选择需要回复的文字再点按本回复键 回复该主题
JavaFX前景难料,细分市场还是有的,现在看,大家都喜欢JavaScript,然后结合U3D等进行二维三维表现,因为SUN毕竟不是媒体公司,而是语言公司,而JavaFX之类是面向媒体的语言,所以,除非SUN转型媒体,或者完全开放JavaFX,让民间专业媒体公司使用JavaFX,非常就没有出路。
标签                    
共有 3 回复(1页) Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
正在读取,请等待...
查询本论坛内 回复超过的热门帖子
标题
 
粗体: [b]文本[/b] 斜体: [i]文本[/i] 下划线 [u]文本[/u] 插入网上的图片 [img]http://wwww.xxxx.com/img.ext[/img] 插入代码 [code]程序代码[/code]  插入url链接 [url]http://url[/url] / [url=http://url]URL加下滑线[/url] 上传图片 word文档 Txt等附件
内容
  提交时自动拷贝以上内容到剪贴板 Ctrl+V可取出;提问题前先查询标签列表

使用帮助 手机m.jdon.com RSS add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的软件架构社区 推荐FireFox或Chrome快速浏览本站
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-10 jdon.com

anti spam