首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

JAX-WS开发webservice示范详解

2013-08-10 
JAX-WS开发webservice示例详解目录:概述实验环境服务端的实现客户端的实现[一]、概述Java API for XML Web

JAX-WS开发webservice示例详解

目录:

概述实验环境服务端的实现客户端的实现

[一]、概述
Java API for XML Web Services (JAX-WS)是Java程序设计语言一个用来创建Web服务的API。

在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI(service endpoint interface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口。

在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。

当然 JAX-WS 也提供了一组针对底层消息进行操作的API调用,你可以通过Dispatch 直接使用SOAP消息或XML消息发送请求或者使用Provider处理SOAP或XML消息。

JAX-WS2.0 (JSR 224 )是Sun新的web services协议栈,是一个完全基于标准的实现。在binding层,使用的是the Java Architecture for XML Binding (JAXB, JSR 222 ),在parsing层,使用的是the Streaming API for XML (StAX, JSR 173 ),同时它还完全支持schema规范。

JAX-WS与JAX-RPC的区别 可参见:http://java.sun.com/xml/faq.html#JAX-WS-and-JAX-RPC-difference

JAX-WS一些参考资料:

    JAX-RPC 2.0 renamed to JAX-WS 2.0The Java web service Tutorial javax.jws.WebService

[二]、实验环境

java version “1.6.0_18″、Eclipse3.7maven构建项目:mvn archetype:create -DgroupId=com.micmiu.jaxws.demo -DartifactId=jaxws-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

[三]、服务端的实现

1.最基本的实例

编写接口代码:ReportService.java

?编写服务端发布代码:WsServerStart .java

?

可见服务端已经发布成功。

如果出现问题:

JAX-WS开发webservice示范详解

?

原因:cxf需要jaxws-api-2.1.jar及jaxb-api-2.1.jar的支持

?

解决方案

1、将cxf所需的2.1的jar复制一份到jdk目录下的jre\lib\endorsed文件夹中。如果endorsed文件不存在,可新建。如果不行,可能还需要在public class XXX上方加入@SOAPBinding(style = SOAPBinding.Style.RPC)。
2、jdk升级到1.6.0_22版本以上。

?

二、MyEclipse利用网上公开发布WSDL文件,创建WebService Client,进行调用WebService

1. 打开MyEclipse,新建一个Web Project;然后新建 一个package,取名为com.test;

2. 然后再New一个Web Service Client;

点next ,然后录入 WSDL URL: http://localhost:8080/ReportServer?wsdl

点next,点finish;ok了,系统会自动帮忙生成很多代码。

?

2.编写客户端测试程序:ReportClient.java

package com.jshx.http.ws.client;public class ReportClient {public static void main(String[] args) {ReportServiceImplService service = new ReportServiceImplService();ReportServiceImpl report = service.getReportServiceImplPort();System.out.println("start webservice client ...");System.out.println("send Michael to server ");        System.out.println(report.queryDate("Michael"));        System.out.println("test client end.");}}

?运行测试程序,日志如下:

?

start webservice client ...
send Michael to server
hi,Michael welcom to www.micmiu.com
test client end.

?可见客户端调用成功。

热点排行