`

感受野马(Mustang)性情,体会Java SE 6.0的新特性之二--Web服务

    博客分类:
  • Java
阅读更多

在前一篇文章中,讲述了Java SE 6.0新特征的概观。本文将介绍Web服务。

Java Web 涉及到的JSR有 105,173,181,222,224,250。

由于Web服务日趋流行,利用Web服务的功能性的API特征正从最新的Java EE版本中向Java SE 6平台迁移。换言之,针对Web服务不需另外加入额外的工具,在Java EE和Java SE平台拥有相同的API。野马将大把不同的Web服务相关的API加到标准的工具柜中:以JSR 181针对Java 平台的Web服务元数据,通过JSR 224的基于XML 的Web服务Java API(JAX-WS);针对Java的带有附件的SOAP API(SAAJ)作为JSR 67

与三个Web服务API相关的包新增到Java SE 6.0里JAX-WS API 放置到javax.xml.ws包; SAAJ类在javax.xml.soap 包; Web服务的元数据类放置在javax.jws包里。

javax.jws

JSR 181 及其针对Java 平台Web服务元数据的规范提供一个在类中利用标注设计和开发Web服务的机制。标注从J2SE 5.0引入,在Java SE 6.0得到了进一步扩展。在第10章将会完整描述。但是,标注基本上允许将@tag加入到类,方法和特性来描述相关的元数据。一个解析器然后能定位标记并采取适当的行动;尽管行动什么时候发生完全依赖于标记自身。

JAX-WS 2.0 很容易使用. 本文将介绍如何使用Java SE 6。以JAX-WS如何建立一个简单的Web服务。首先建立一个建立一个将要作为Web服务发布的类,如表1所示:

<!---->

 

Java 代码 列表1
  1. package hello;   
  2.   
  3. public class CircleFunctions {   
  4.   
  5.    public double getArea(double radius) {   
  6.        return java.lang.Math.PI * (r * r);   
  7.     }   
  8.   
  9.    public double getCircumference(double radius) {   
  10.        return 2 * java.lang.Math.PI * r;   
  11.    }   
  12. }   
  13.   

 为了输出这些方法,必需做两件事情:引入javax.jws.WebService  包;在类的前面增加@WebService  标注以告诉Java编译器将发布此类为Web服务。下面的代码显示了这种变化(以黑体显示增加的代码)。

<!---->

Java 代码 列表2
  1. package hello;   
  2.   
  3. import javax.jws.WebService;   
  4.   
  5. @WebService  
  6.   
  7. public class CircleFunctions {   
  8.    public double getArea(double r) {   
  9.        return java.lang.Math.PI * (r * r);   
  10.     }   
  11.   
  12.    public double getCircumference(double r) {   
  13.         return 2 * java.lang.Math.PI * r;   
  14.     }   
  15.   
  16. }   
  17.   

在此,有两个基本的标注@WebService@WebMethod。@WebService标注指明HelloService 类作为Web服务。如果没有制定,标注的名称就是类的名称。也能制定命名空间,服务名,WSDL 位置和endpoint 接口等。在指定的上下文环境中,可以使用javax.xml.ws.Endpoint类的publish() 静态方法发布上面的类作为Web服务。代码见列表3:

Java 代码 列表3
  1. import javax.xml.ws.Endpoint;   
  2.   
  3. public static void main(String[] args) {   
  4.   
  5.       Endpoint.publish(   
  6.          "http://localhost:8080/WebServiceExample/circlefunctions",   
  7.          new CircleFunctions());   
  8.   
  9. }   
  10.   

现在,用javac编译源代码。但是源文件能做什么呢?通过对源文件运行 javac编译器进行编译只是产生了class文件。并没有产生特殊的东西。但是在编译类之后,也需要运行wsgen 命令行工具(wsgen 是Web service generator的缩写)。编译源代码后还必需完成更多的步骤:像下面一样调用wsgen工具。

> wsgen –cp . hello.CircleFunctions   

Wsgen工具将在一个叫做wsgen子目录下产生大量的源代码,然后将这些源代码编译成class文件。尽管从未编辑这些文件,但是可以浏览这些文件。注意在使用Wsgen工具时,原始的源代码必需在相应的包里。否则将产生错误。

就这么简单。当运行应用程序时,Java SE 6平台拥有一个小的Web应用服务器,它将在地址为http://localhost:8080/WebServiceExample/circlefunctions 发布Web服务。通过显示CircleFunction的WSDL 来验证Web服务。当JVM仍然运行时,在浏览器输入:

http://localhost:8080/WebServiceExample/circlefunctions?WSDL   

如果在浏览器里看见大量描述Web服务的功能的XML代码,那么Web服务就成功发布了。

 

分享到:
评论

相关推荐

    JDK6.0(Mustang)新特性

    JDK6.0(Mustang)新特性.pdf

    北京圣思源JAVA课程笔记(全)

    jdk 1.6(6.0):Mustang,野马 1. 下载JDK 2. 安装JDK 3. 设定环境变量(可以是用户变量,也可以是系统变量),指向JDK 安装目录中 的bin 目录 4. 通过运行,输入cmd 打开命令行窗口,输入java –version,...

    Mustang-App-Web:Web上托管的Mustang App

    Web上托管的Mustang App 此存储库上的分支和工作流 请检查此文档以了解团队将代码提交到GitHub的政策! 请注意,您不能直接提交给master或dev! 该项目应遵循以下工作流程: 主分支被认为是该项目的稳定分支。 只能...

    Java理论与实践:Mustang中的同步优化

    本文描述的是Sun的HotSpot JVM实现未来版本的特性。每当易变的变量在线程间共享时,都必须使用同步来确保一个线程所做的更新,能够及时地被其他线程看到。同步的主要方式就是使用synchronized块,它既提供了互斥又...

    corejava基础重要知识点总结

    java的优势? 1:跨平台(平台:指的是操作系统) 常见的操作系统:Windows Unix Linux Solaris(Sun) 跨平台:用java开发出来的应用程序不受底层操作系统的限制 底层的功臣:JVM = java虚拟机 = 1 + 2 + 3 = ...

    福特野马壁纸高清汽车新标签主题「Ford Mustang Wallpaper HD Cars New Tab Themes」-crx插件

    安装我的福特野马新标签主题,以获得福特野马汽车的每一个新标签的高清壁纸。 FORD MUSTANG NEW TAB-由FreeAddon提供每次打开新选项卡时,安装我的Ford Mustang New Tab主题,并享受Ford Mustang的各种高清壁纸。 ★...

    mustang-98234-ghal8yh2k3.jpeg_java_work_document_

    A description for a file that I am writing a description to upload. Goat.

    福特野马 - 跑车高清壁纸「Ford Mustang – Sports Cars HD Wallpapers」-crx插件

    每次打开新选项卡时,安装福特野马“新选项卡”主题并浏览福特野马的高清壁纸。 ★福特野马主题包含什么? 此扩展程序提供了各种各样的高清福特野马壁纸。 您可以选择幻灯片播放选项,并欣赏漂亮的福特野马壁纸。 您...

    JavaSE6新特性:HTTP增强

    火龙果软件工程技术中心 本文内容包括:概述NTLM认证轻量级HTTP服务器Cookie管理特性其他新特性结语参考资料2006年底,Sun公司发布了JavaStandardEdition6(JavaSE6)的最终正式版,代号Mustang(野马)。...

    EA_Mustang_v_3.3_fix_ea_MUSTANGea_EA_Mustang_v_3.3_

    myfxbook实盘2年,暂时未爆仓的ea。获利2000%+,最大浮亏48.22%。

    JavaSE6新特性:Instrumentation新功能

    本地方法的InstrumentationJavaSE6新特性:BootClassPath/SystemClassPath的动态增补结语参考资料2006年底,Sun公司发布了JavaStandardEdition6(JavaSE6)的最终正式版,代号Mustang(野马)。跟Tiger(JavaSE5)...

    mustang:野马是业余活动项目

    主屏幕 - - 屏幕 设计的

    野马 新标签页 火爆汽车 高清壁纸 主题-crx插件

    每次打开新标签时都会获得野马不同的高清壁纸。这个新主题除此以外还包括天气,时间,记事本,时钟等其他你想要的强大功能。 Mustang(国内也称“野马”)是福特汽车公司旗下的传奇跑车品牌,首款车型于1964年纽约...

    Ford Mustang New Tab & Wallpapers Collection-crx插件

    福特Mustang New Tab Extension为您的Chrome浏览器带来了新外观。 安装福特野马New Tab&Wallpapers Collection,并欣赏福特野马的精选高清图片。 它带有一些很酷的属性,这些属性可以改善您的“新标签页”体验,...

    mustang-midi-bridge:允许通过MIDI消息控制Fender Mustang系列吉他放大器

    野马-中桥此应用程序使运行Linux的小型计算机能够将MIDI消息转换为Fender Mustang放大器使用的专有USB协议。新:修复了Raspian Stretch发行版! 由于用户社区提供了一些有价值的疑难解答,我已经做出了一些修复,以...

    Java5.0中实现JSR-223的方法

    虽然该版本并不像Java5的更新那么多,但是它确实有一些有趣的新特性。毋庸置疑,其中的一个就是对脚本编写语言的支持。诸如PHP、Ruby、JavaScript、Python(或Jython)之类的脚本编写语言被广泛应用于许多领域,并由于...

    mustang:胡子模板的命令行工具,从各种数据源生成输出

    野马 胡子模板的命令行工具,从各种数据源生成输出抽象的Mustang 是一个命令行工具,通过应用 mustache 模板从各种数据源(例如 CSV/JSON 文件、URL、MySQL、MongoDB)生成所需的输出。安装 $ npm install -g ...

Global site tag (gtag.js) - Google Analytics