`
txf2004
  • 浏览: 7042326 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

学习JavaFX Script,第三部分:使用JAX-WS进行客户端-服务器通信

阅读更多
原文地址:http://java.sun.com/developer/technicalArticles/scripting/javafxpart3/

文章索引(Articles Index)
本系列文章的第一部分向Java开发者介绍了JavaFX Script语言的语法和语义。接下来的第二部分演示了如何使用Java的远程方法调用(RMI)技术利用助手类实现简单的客户端-服务器连接。
RMI是一个很好的原始工具,但是在真实世界的使用中它也具有自己的缺陷。在Internet上创建客户端-服务器工具的通常解决方案是利用面向服务架构(SOA),例如Java API for XML Web Services(JAX-WS)。本文将采用本系列前一篇文章向你展示如何使用RMI的方式,向你展示如何利用JAX-WS2.1使用JavaFX Script访问web服务。

使用NetBeans IDE 5.5.1导出一个服务器类作为Web服务(Exporting a Server Class as a Web Service Using NetBeans IDE 5.5.1)

由使用JAX-WS 2.1创建一个简单web服务开始这个任务。你首先需要一个类,它包含了一个或多个你希望导出为一个web服务的方法。为了简单期间,你可以使用该系列文章第二部分中的服务器代码,如代码示例1所示:
Code Example 1
packageserver;

importjava.io.*;

publicclassServerImpl...{

privateStringname;

publicServerImpl()...{
super();
}


publicStringping(Strings)...{
return"Hello"+s;
}


}
为了导出这个方法,你需要做两件事情:添加一个导入javax.jws.WebService的语句;以及在开始处增加@WebService注释,告诉Java解释器你打算把这个类的方法发布为一个web服务。这些新增的代码在代码示例2中粗体显示:
Code Example 2
packageserver;

importjava.io.*;
importjavax.jws.WebService;

@WebService

publicclassServerImpl...{

privateStringname;

publicServerImpl()...{
super();
}


publicStringping(Strings)...{
return"Hello"+s;
}


}

这时,就可以将web服务发布到应用服务器上。本文讨论如何在NetBeans IDE 5.5.1中发布web服务。如果你想使用Java SE 6内嵌的服务器创建web服务,IDE除外,那么可以浏览这篇文章《Introducing JAX-WS 2.0 With the Java SE 6 Platform, Part1》。
1、选择File→New Project,应该可以看到如图1所示的对话框:
NetBeans IDE 5.5.1 New Project对话框
图1 NetBeans IDE 5.5.1 NewProject对话框
2、在Categories栏中,选择Web。在Projects子窗口中,选择Web Application。点击Next,应该看到如图2所示页面:
新Web Application对话框
图2 New Web Application对话框
3、在Project Name域中,输入WebServiceExample。注意将web应用程序的上下文根路径改为同样的名字。另外,如果Set Source Level to 1.4是选中状态,则取消对其选择。源代码的级别必须是1.5或者更高,这样才能把web服务添加到项目中。最后,点击Finish按钮。如果不小心点击了Next,NetBeans IDE会提示选择不同的框架。只需忽略这些框架,按下Finish即可。
此时对话框应该关闭,你应该看到WebServiceExample项目被添加到了左上的Projects子窗口中,如图3所示:
包含了WebServiceExample项目的NetBeans IDE 5.5.1 Projects子窗口
图3 包含了WebServiceExample项目的NetBeans IDE 5.5.1 Projects子窗口
4、接下来,左键点击WebServiceExample项目的名称以选中。也就是,点击左侧的图标为小地球的根节点。右键点击,选择New→Web Service...你应该看到如图4所示的对话框。
New Web Service对话框
图4 New Web Service对话框
5、在Web Service Name域中,输入ExampleService。在Package域中,输入ws。选中Create an Empty Web Servie单选按钮,点击Finish。NetBeans IDE将会产生空的web服务源代码。
假如使用JAX-WS 2.0,你也许会注意到NetBeans IDE创建的注释比本文前面介绍的@WebService注释稍微复杂一些。不用担心,这些参数和额外的注释帮助你改善Java SE 6或JAX-WS 2.0发布web服务的方式。然而,功能和默认的仍旧是一致。
6、将类的源代码改为和代码示例3一样。
Code Example 3
/**//*
*ExampleService.java
*
*CreatedonAugust17,2007,2:03PM
*
*Tochangethistemplate,chooseTools|TemplateManager
*andopenthetemplateintheeditor.
*/


packagews;

importjava.io.*;
importjavax.jws.WebService;

@WebService

publicclassExampleService...{

privateStringname;

publicExampleService()...{
super();
}


publicStringping(Strings)...{
return"Hello"+s;
}


}
7、部署这个例子,在Projects子窗口中再次右击WebServiceExample,如图3所示,这次选择Deploy Project菜单项。这将会启动应用服务器,编译web服务,并部署它。当一切完成时,打开浏览器,输入如下的地址:
http://localhost:8084/WebServiceExample/ExampleService
注意NetBeans IDE 5.5.1默认的应用服务器是Apache Tomcat,其默认发布端口是8084,并不是其他web服务器经常使用的8080。浏览器定位到这个URL后,应该在其中看到类似图5的表格,表示web服务处于活动状态。
运行在本地计算机上的示例Web服务
图5 运行在本地计算机上的示例Web服务
你还可以点击链接显示web服务的Web Service Definition Language(WSDL)文件。不用担心,你是否可以理解该WSDL文件的内容。在完成本指南时,并不需要。

使用GlassFish服务器或者Sun Java System Application Server 9(Using the GlassFish Server or Sun Java System Application Server 9)

如果你想使用GlassFish服务器或者Sun Java System Application Server 9(SJSAS 9)代替默认的Tomcat服务器,请确保已经事先在NetBeans IDE中下载、安装并注册了该服务器。在这篇出色的文章后面的部分,你可以找到如何逐步设置GlassFish服务器。针对本文的目的,是保证在New Web Application对话框的Server域中指定合适的应用服务器,如图2所示。注意默认的端口根据服务器的不同而不同。更多细节可以查看服务器的文档。

在NetBeans IDE 5.5.1中创建一个JavaFX Web Services客户端(Creating a JavaFX Web Services Client in NetBeans IDE 5.5.1)

此时,你可以在NetBeans IDE 5.5.1中执行下面的步骤,创建一个web服务客户端的类库。当创建客户端时,无论你使用Java SE 6 mini-web服务器、NetBeans IDE内置的Tomcat服务器,还是SJSAS 9 或者GlassFish服务器都没有关系。然而,服务器一定要在运行中,要让NetBeans IDE 5.5.1可以访问WSDL文件。
1、选择File→New Project。你应该看到类似图6的对话框。从Projects类别中选择Java Class Library,点击Next。
创建一个新的Java项目
图6 创建一个新的Java项目
2、在Project Name域中,输入JavaFXWebServiceClient,如图7所示。注意,在NetBeans IDE 5.5中有一个bug,可能会阻止你在项目文件中创建路径包含空格的web服务客户端。所以,例如,路径不能是C:\Documents and Settings\...然后点击Finish。
创建一个新的Java类库
图7 创建一个新的Java类库
3、这将会在Projects子窗口中创建一个JavaFXWebServiceCilent项目,如先前图3所示。右键点击项目节点,选择New→Web Service Client。为了定位WSDL选择Project,点击Project域右边的Browse按钮。你应该看到类似图8的对话框。
浏览在WebServicesExample项目中Web服务
图8 浏览在WebServicesExample项目中的Web服务
浏览你希望使用的web服务。选择web服务ExampleService,点击OK。你将会看到图9所示的对话框。注意,你可以手动指定一个本地文件或者WSDL位置的URL。
New Web Service Client对话框
图9 New Web Service Client对话框
在Package域中输入ws,点击Finish。Projects子窗口显示新的web服务客户端,如图10所示。
在Projects子窗口中的新的Web服务客户端项目
图10 在Projects子窗口中的新的Web服务客户端项目
接着,在ws包里,创建一个名为ConnectionHelper的Java文件,如代码示例4所示。
Code Example 4
packagews;

publicclassConnectionHelper...{

publicstaticws.ExampleServicegetWSConnection()...{

try...{

ws.ExampleServiceServiceservice
=newws.ExampleServiceService();
returnservice.getExampleServicePort();

}
catch(Exceptionex)...{
//TODOhandlecustomexceptionshere
}


returnnull;
}


}
你可以重用本系列第二部分中同样的JavaFX Script代码,以同样的方式创建一个名为ws.MyClient.fx的文件。即,在ws包上点击右键,选择New→JavaFX File打开图11所示的对话框。
创建一个JavaFX Script文件
图11 创建一个新的JavaFX Script文件
事实上,唯一的变化是对ConnectionHelper类的静态getWSConnection()方法的调用,以及显示的文本。代码示例5给出了源代码,变化使用粗体标出。
importjava.lang.*;
importjavafx.ui.*;
importjava.rmi.*;

importws.ExampleService;
import
ws.ConnectionHelper;

classButtonClickModel...{
attributenumClicks:Number;
}


varmodel
=newButtonClickModel();

varwin
=Frame...{
width:
200
content:GridPanel
...{
border:EmptyBorder
...{
top:
30
left:
30
bottom:
30
right:
30
}

rows:
3
columns:
1
vgap:
10
cells:
[Button
...{
text:
"ClicktomakeWebServicesconnection!"

mnemonic:I
action:operation()
...{

do...{//DostatementsareexecutedofftheEDT

try...{

varremoteServer:ExampleService
=
ConnectionHelper.getWSConnection();

varresults
=remoteServer.ping("Test");
System.out.println(
"response:{results}");
model.numClicks
++;

}
catch(e:Exception)...{
System.out.println(
"exception:{e}");
}

}

}

}
,

Label
...{
text:bind
"NumberofWSconnections:{model.numClicks}"


}

]
}

visible:
true
}
;

使用本系列第二部分中同样的步骤修改JavaFXWebServiceClient属性,在执行项目是运行JavaFX Script客户端。步骤如下:
1、在Project窗口中,右键点击项目节点,选择Properties。
2、在Properties对话框的Categories面板中选择Run。
3、确保Main Class是net.java.javafx.FXShell。
4、在Argument域中输入脚本的名称,ws.MyClient。点击OK。
作为参考,图12是Project Properties对话框中Run的屏幕截图。
Project Properties对话框中Run
图12 Project Properties对话框中Run
最后,右键点击项目节点,选择Run Project。输出窗口应该如图13所示。
运行JavaFX Script Web服务器客户端项目
图13 运行JavaFXScript Web服务客户端项目
此时,你应该有一个完好的理解,对于如何在NetBeans IDE 5.5.1使用JavaFX Script与服务器跨网络通信,无论是通过JAX-WS 2.1,还是RMI。如果你想了解更多利用JavaFX Script创建GUI的信息,可以参考本文For More Information部分中针对Swing程序员的指南。另外,记住JavaFX规范仍然在开发中,因此过一段时间语言的参数可能会发生改变。可以参考OpenJFXOpenJFX Compiler网站获得最新的消息。

For More Information
分享到:
评论

相关推荐

    javafx_scenebuilder-2_0-windows.rar

    JavaFX Scene Builder是一款强大的图形用户界面(GUI)构建工具,专为JavaFX平台设计,用于简化和加速桌面应用的界面设计。它允许开发者通过拖放组件的方式,无需编写任何代码,即可创建美观且功能丰富的用户界面。...

    JavaFX+Jfoenix 学习笔记(一)--环境搭建及多款Hello World演示源码

    通过这个学习笔记,初学者可以快速了解如何配置开发环境,以及如何使用JavaFX和JFoenix创建简单的应用程序。同时,通过分析和运行Hello World示例,可以深入理解这两个库的核心功能和使用方式。

    javaFx script

    学习JavaFX Script的最佳起点是官方提供的教程,该教程详细介绍了JavaFX Script的核心概念和语言语法。通过这个教程,开发者可以逐步掌握JavaFX Script的基础知识,并进一步了解如何构建图形用户界面(GUI)应用程序...

    Javafx Script - Dynamic Java Scripting For Rich Internet-Client-Side Applications (Apress, 2007).pdf

    3. **第3章:使用JavaFX创建用户界面**(29-80页) - 深入讲解如何使用JavaFX Script定义和设计用户界面。 - 探讨了如何使用声明式语法创建复杂的UI元素。 - 展示了如何利用JavaFX Script的布局管理器和其他组件...

    JavaFX+Jfoenix 学习笔记(三)--TableView数据表格源码

    在"JavaFX+Jfoenix 学习笔记(三)--TableView数据表格源码"中,我们将重点讨论如何使用JavaFX的TableView组件结合JFoenix来展示和操作数据。TableView是JavaFX中的一个核心组件,它允许用户以表格的形式查看和操作...

    javafx-sdk-11.0.2

    2. **示例代码**:可能包含`samples`目录,其中提供了使用JavaFX编写的示例应用程序,帮助开发者理解和学习如何使用JavaFX进行开发。 3. **文档**:SDK可能还包括API文档,通常位于`docs`目录下,这对于查阅JavaFX...

    (六)Java Ee平台上实现Web服务及多种客户端实例-小结.rar

    在Java EE中,主要使用两种技术来实现Web服务:JAX-WS(Java API for XML Web Services)和JAX-RS(Java API for RESTful Web Services)。 1. **JAX-WS**:它是Java EE中的SOAP(Simple Object Access Protocol)...

    javafx_scenebuilder-2_0-windows

    JavaFX Scene Builder是JavaFX平台中的一个重要工具,用于可视化构建用户界面(UI)。它提供了图形化界面,使得开发者可以无需编写代码就能设计出美观且功能丰富的GUI。在本压缩包"javafx_scenebuilder-2_0-windows...

    javafx-sdk-17.0.2-lts-windows-x64

    JavaFX SDK 17.0.2 LTS 是一个用于创建桌面和基于浏览器的富客户端应用程序的工具包,专为Windows x64平台设计。这个版本是长期支持(LTS)版本,意味着它将提供更长期的维护和支持,适合于那些需要稳定开发环境的...

    javafx-11.0.2 jar.rar

    6. **JavaFX Swing**: 为了让JavaFX与传统的Swing组件兼容,提供了`javafx.swing.jar`,允许在JavaFX应用中嵌入Swing组件,或者在Swing应用中使用JavaFX的部分功能。 7. **JavaFX SWT**: 类似于JavaFX Swing,`...

    JavaFX Demo学习2-----ImageRollover

    在"JavaFX Demo学习2-----ImageRollover"这个主题中,我们将深入探讨如何使用JavaFX来实现图像鼠标悬停时的效果变化,即Image Rollover效果。这种效果常见于网页设计和图形用户界面开发中,当鼠标指针移到图像上时,...

    javafx 11 jar包,亲测可用

    JavaFX是Oracle公司推出的用于构建桌面、移动以及云端应用程序的现代Java GUI框架,它在Java 8中作为标准库的一部分,但在Java 9之后被移出JDK,转为独立的模块。本主题关注的是JavaFX 11的jar包,这是一个经过验证...

    JavaFx-Voice-messenger:使用JavaFx(服务器和客户端)以及作者的消息交换协议(如XMPP)以及作者的RTP编写的语音信使

    JavaFX-Voice-Messenger是一个基于JavaFX的语音通信应用程序,它结合了服务器和客户端功能,同时利用了消息交换协议(如XMPP)和实时传输协议(RTP)。这个项目为开发者提供了一个平台,用于实现即时语音通信解决...

    (四)Java EE 5实现Web服务(Web Services)及多种客户端实例-胖客户端.rar

    - 胖客户端是指包含所有业务逻辑和用户界面的客户端应用程序,与服务器通信获取或更新数据。 - 在Java EE 5中,胖客户端可以使用生成的Web服务客户端代理来调用远程服务。 - 客户端可能使用Swing或JavaFX等库构建...

    javafx_scenebuilder-2_0-windows.msi

    javafx_scenebuilder-2_0-windows.msi 官方下载地址: https://www.oracle.com/java/technologies/javafxscenebuilder-1x-archive-downloads.html

    Client-Server-Sudoku:Java 客户端-服务器数独

    【标题】"Client-Server-Sudoku:Java 客户端-服务器数独"是一个基于Java技术实现的项目,它展示了如何构建一个分布式系统,让用户在客户端进行数独游戏,而游戏逻辑和数据存储则在服务器端处理。这个系统强调了网络...

    JavaFX Script 语言教程(面向Swing 程序员).pdf

    ### JavaFX Script 语言教程(面向Swing程序员) #### 概述 JavaFX Script 是一种专为简化图形用户界面(GUI)开发而设计的声明式编程语言,它为Java平台带来了一种全新的编程范式。JavaFX Script 提供了一系列...

    JavaFX Script - Dynamic Java Scripting for Rich Internet-Client-Side Applications

    3. **第三章:使用 JavaFX 创建用户界面**(Creating User Interfaces in JavaFX) - 讲解如何使用 JavaFX Script 创建复杂的用户界面元素,并介绍各种可用的布局管理器。 - 通过实例演示如何创建按钮、文本框等...

Global site tag (gtag.js) - Google Analytics