`
zzc1684
  • 浏览: 1222653 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

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一些参考资料:

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

[二]、实验环境

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

[三]、服务端的实现

1.最基本的实例

编写接口代码:ReportService.java

Reportservice代码  收藏代码
  1. package com.jshx.http.ws;  
  2.   
  3. public interface ReportService {  
  4.     String queryDate(String jsonStr);   
  5. }  

 实现接口并添加webservice注释:ReportServiceImpl.java

Java代码  收藏代码
  1. package com.jshx.http.ws.impl;  
  2.   
  3. import javax.jws.WebMethod;  
  4. import javax.jws.WebParam;  
  5. import javax.jws.WebService;  
  6. import javax.jws.soap.SOAPBinding;  
  7.   
  8. import com.jshx.http.ws.ReportService;  
  9.   
  10. @WebService  
  11. @SOAPBinding(style = SOAPBinding.Style.RPC)  
  12. public class ReportServiceImpl implements ReportService {  
  13.   
  14.     @WebMethod  
  15.     public String queryDate(@WebParam(name="jsonStr") String jsonStr) {  
  16.         return "hi," + jsonStr + " welcom to www.micmiu.com";  
  17.     }  
  18.   
  19. }  

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

Java代码  收藏代码
  1. package com.jshx.http.ws;  
  2.   
  3. import javax.xml.ws.Endpoint;  
  4.   
  5. import com.jshx.http.ws.impl.ReportServiceImpl;  
  6.   
  7. public class WsServerStart {  
  8.     public static void main(String[] args) {  
  9.         ReportService ws = new ReportServiceImpl();  
  10.         Endpoint.publish("http://localhost:8080/ReportServer", ws);  
  11.     }  
  12. }  

 浏览器打开:http://localhost:8080/ReportServer?wsdl 回车显示如下:

 

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

如果出现问题:

 

原因: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

Java代码  收藏代码
  1. package com.jshx.http.ws.client;  
  2.   
  3. public class ReportClient {  
  4.     public static void main(String[] args) {  
  5.         ReportServiceImplService service = new ReportServiceImplService();  
  6.         ReportServiceImpl report = service.getReportServiceImplPort();  
  7.         System.out.println("start webservice client ...");  
  8.         System.out.println("send Michael to server ");  
  9.         System.out.println(report.queryDate("Michael"));  
  10.         System.out.println("test client end.");  
  11.   
  12.     }  
  13. }  

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

 

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

 可见客户端调用成功。

 

 

另一种方法:

1 MyFirstJAX-WS
2.建一个包<包名根据自己需要来我这里是com.wx.jaxws.example>
  在里面建立一个java类
 
Java代码  收藏代码
  1. package com.wx.jaxws.example;  
  2. //import javax.jws.WebMethod;  
  3. //import javax.jws.WebService;  
  4. //import javax.jws.soap.SOAPBinding;  
  5. //@WebService(serviceName = "HelloService", portName = "HelloServicePort", targetNamespace = "http://example.jaxws.wx/jaxws/MyFirstOne")  
  6. //@SOAPBinding(style = SOAPBinding.Style.DOCUMENT,  
  7.  use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)  
  8. public class MyFirstOne {   
  9. //@WebMethod public String sayHello(String s) {    
  10. System.out.println("hello," + s);   
  11.  return "hello," + s;   
  12. }  
  13. }  
 
有很多被注释的地方不管.这个类很简单 就是接收一个字符串 打印并且返回
3.建立服务
右键点击项目File->New->others->Myeclipse->Web Service->Web Service 
点击之后出现的屏幕,在 Strategy 中选择--> <Create web service from Java Bean>Bottom-up scenario
点击next 在接下来的对话框中 输入类的名字 并且找到它  点击FINISH
因为我们已经建立好了类而且想根据它建立JAX-WS服务。
会生成一个 类名+Delegate.java的文件  我这里生成的是 MyFirstOneDelegate.java
 
4.到上一步已经做好了WebService 接下来我们做发布
在项目名称上右击->properties->点击左边的 Java Build Path->选择选项卡 Libraries->点击右边的按钮 Add Library->
选择 Myeclipse Libraries->勾选 JAX-WS 2.1 Runtime Labraries(Project Metro 1.1) 和 JAX-WS 2.1 API Labraries
<其实就是最后面的两个>
 
5.导入几个Jar包<我已经放在目录里了> 其实这几个Jar包在 
MyEclipse 6.5\myeclipse\eclipse\plugins\com.genuitec.eclipse.ws.xfire_6.5.1.zmyeclipse650200806\lib
的目录下也已经存在 不过我们要导入项目中
其实要的是这个包webservices-tools.jar
 
6.然后可以运行了 URL和xfire不一样
http://127.0.0.1:8080/MyFirstJAX-WS/MyFirstOnePort?wsdl
是项目名/类名Port?wsdl
正确出现xml文档则表示ok!
 
---------------------使用-----------------------
7.新建一个工程 java工程也好 web工程也好
我这里方便测试建的java工程 MyTestJAX-WS_New
右键点击项目File->New->others->Myeclipse->Web Service->Web Service Client 
点击next 选择JAX-WS ->选择 WSDL URL 在这个里面输入刚才测试通过的URL 然后点击next等处理一下点击FINISH就好了
会生成很多类  这里我让自动生成的全在test包里
分享到:
评论

相关推荐

    myeclipse6.5上基于JAX-WS开发Webservice(中文示例).doc

    - 如果需要在 WebSphere 平台上开发 JAX-RPC 或 JAX-WS Web 服务,可能需要 MyEclipse 的特定版本,如 MyEclipse Blue Edition。 7. 资源和进一步学习: - 文档的“资源”部分可能包含更多关于使用 JAX-RPC、JAX-...

    MyEclipse6.5上基于JAX-WS开发Webservice

    在 MyEclipse 6.5 中,JAX-WS 是开发 Web 服务的主要框架。 2. MyEclipse 6.5 MyEclipse 是一款集成开发环境(IDE),它是 Eclipse 的扩展,特别为 Java 和 Java EE 应用程序开发提供了额外的支持。在 MyEclipse ...

    webservice之jax-ws

    在提供的链接“https://hgxs-org.iteye.com/blog/1940916”中,可能包含了一个具体的JAX-WS服务开发和调用的示例。读者可以通过阅读该博客文章深入了解JAX-WS的实践应用。 综上所述,JAX-WS是Java平台上的Web服务...

    上传一个基于Jax-ws的WebService

    【标题】:“基于Jax-ws的WebService”详解 在Web服务的世界中,JAX-WS(Java API for XML Web Services)是Java平台上的标准,用于创建和消费SOAP(Simple Object Access Protocol)服务。它提供了从Java类到SOAP...

    设计与开发 JAX-WS 2.0 Web 服务

    ### 设计与开发 JAX-WS 2.0 Web 服务 #### JAX-WS 技术概述 JAX-WS(Java API for XML Web Services)是Java平台中用于简化Web服务开发的一项关键技术。该技术提供了全面的支持,使得开发者能够在Java环境中轻松...

    jax-ws用户指南 pdf版

    ### JAX-WS 2.2 用户指南知识点详解 #### 概览 JAX-WS (Java API for XML Web Services) 是 Java 平台上用于开发和实现 Web 服务的官方标准之一。本用户指南详细介绍了 JAX-WS 2.2 版本的功能、编程模型以及如何...

    Jax-WS的配置方式

    **Jax-WS详解与配置指南** Jax-WS(Java API for XML Web Services)是Java平台上的一个标准,用于创建和消费Web服务。它提供了一种基于SOAP(Simple Object Access Protocol)的、类型安全的方式来处理Web服务。...

    JAX-WS Five Minute Tutorial 源码

    **JAX-WS详解** Java API for XML Web Services (JAX-WS) 是Java平台上的一个标准组件,用于构建和消费Web服务。它提供了一种简单、类型安全的方式来创建和访问基于SOAP的消息传递应用程序。本教程将深入探讨JAX-WS...

    jax-ws基于web容器发布webServer

    1. **源码** - 暗示内容可能涉及到实际的代码示例,读者可以参考这些代码来理解JAX-WS的实现过程。 2. **工具** - 可能提到了一些辅助工具,如Apache CXF或Metro,这些是常见的JAX-WS实现框架,用于简化开发工作。 ...

    jaxws-ri 2.3完整包

    4. **基于注解的开发**:JAX-WS允许开发者使用如`@WebService`、`@SOAPBinding`、`@WebMethod`等注解来声明服务接口和服务实现,简化了开发过程。 5. **WSDL**:Web服务描述语言(WSDL)是用于定义Web服务接口的XML...

    JAX_WS的demo

    **JAX-WS详解与应用** Java API for XML Web Services(JAX-WS)是Java平台上用于构建Web服务和客户端的API,它简化了Web服务的开发和使用。本篇文章将深入探讨JAX-WS的基本概念、核心组件以及如何通过一个简单的...

    java webservice 详细开发示例介绍

    ### Java WebService 详细开发示例介绍 #### 一、引言 随着互联网技术的发展,分布式系统的构建变得越来越重要。WebService作为一种实现系统间通信的重要手段,被广泛应用于各种场景之中。本文将详细介绍Java中...

    ws-exemplo:Glassfish Metro的JAX-WS示例

    标题"ws-exemplo:Glassfish Metro的JAX-WS示例"表明这是一个关于使用Glassfish Metro实现JAX-WS(Java API for XML Web Services)的示例项目。JAX-WS是Java平台上的一个标准,用于构建和部署Web服务,它允许开发...

    JAX WebService开发

    ### JAX WebService开发知识点详解 #### JAX-WS简介及重要性 JAX-WS,全称为Java API for XML Web Services,是Java平台中用于构建和消费Web服务的关键技术。这一技术的主要目标是简化使用Java开发Web服务及其...

    webservice

    #### 三、JAX-WS 技术详解 **1. JAX-WS 概述** - **JAX-WS 2.0** 是 JAX-RPC 1.0 规范的扩展,也是 JAX-RPC 1.1 的后续版本。它提供了新的编程模型并对原有的 Webservice 进行了增强。 - **JAX-WS 2.0 (JSR224)** ...

    Yelp-WebServive-Tomcat:• 通过Jax-WS(Tomcat 服务器)开发了Yelp 应用程序的原型

    《基于Jax-WS在Tomcat上开发Yelp应用程序原型详解》 在现代Web服务开发领域,Java技术栈以其强大的可扩展性和丰富的生态系统占据了一席之地。本篇将深入探讨如何利用Java的Jax-WS(Java API for XML Web Services)...

    JAXWS2.2当前时间最新版

    1. **基于注解的编程模型**:JAX-WS 2.2引入了更多的注解,如`@WebService`、`@WebMethod`、`@SOAPBinding`等,使得开发人员能够更方便地声明服务接口和实现。这些注解允许在Java类上直接定义Web服务行为,减少了XML...

    jdk5 webservice demo

    【标题】"JDK5 WebService Demo"是一个基于Java开发的Web服务示例项目,它展示了在JDK 5.0版本中如何实现和使用Web服务。Web服务是一种通过网络进行通信的应用程序接口(API),它允许不同系统之间的数据交换。JDK 5...

Global site tag (gtag.js) - Google Analytics