JAX-WS之旅

2024-05-06 11:18
文章标签 ws 之旅 jax

本文主要是介绍JAX-WS之旅,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 什么是WebService

Web Service 是由企业发布的完成其特定商务需求的在线应用服务,其他公司或者应用软件可以能够通过Internet来访问这项在线服务。

更多资源访问:http://baike.baidu.com/view/837392.htm

 

2. 为什么需要WebService

我们知道如果我们要把一个桌面程序发布成web程序的话,在以前并不是一件很简单的事情,当然在最早的时候有一项分布式开发技术RMI技术就实现了桌面程序web化。现在使用WebService就能够很简单的解决这个问题。其次使用WebService能够让两门语言进行通信,也就是说,你可以服务端是Java语言,而客户端是其他语言,比如Ruby语言。

当然以上只是简单的说明,如果要连接更多的webService还需要您自己细心的体会。

 

3. 主流WebService框架

   Axis2——全称Apache EXtensible Interaction System 即阿帕奇可扩展交互系统。

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

等等。

更多资源:http://wenku.baidu.com/view/5d0ceef5f61fb7360b4c65c9.html

 

4. 利用JAX-WS开发Web服务

   接下来将以一个实例讲解JAX-WS。

在讲解之前我们大体了解下要开发一个JAX-WS的步骤:

(1)编写能够发布成webservice的接口

(2)实现接口,并指定客户端访问的WSDL(WebService Description Language)服务名

(3)发布服务

(4)编写客户端访问

第一步:启动工具

打开开发工具Eclipse,这一步对于编程人员都是very easy的一件事件,直接过。

 

第二步:新建工程(演示工程名为WebService)

新建一个 Java Project.相信能够学习WebService这项技术的人,这个应该不是问题。为了照顾一些部分家人,我们还是稍微讲讲,会的家人这步可以跳过。

【菜单栏】--【File】--【New】--【Project】--【JavaProject】

--【Next】输入【Project name】--【Finish】。

这样我们就创建了一个工程。

 

第三步:建包(演示包为webservice)

   在刚才建立的工程建立包结构。

操作如下:

点击工程src目录【右键】--【New】--【package】--【输入包名】--【Finish】。

 

第四步:新建接口(演示接口名为IMyServer)

在刚才建立的包下新建一个接口。

代码如下:

package webservice;

import javax.jws.WebService;

/**

 * 接口类

 * @author Administrator

 *

 */

@WebService //此代码说明该接口可以进行Web

public interface IMyServer {

   

    /**

     * 在接口里有一个获取作者姓名的方法

     * @param name:姓名

     * @return:String

     */

    public String getMyName(String name);

   

}

注:此接口和我们平时写接口是一样的,只是增加了一条

@WebService这样的代码,这条代码的主要作用是允许我们这个接口交给WebService进行管理。

 

第五步:实现接口(演示实现类名为MyServerImpl)

让我们写一个实现我们刚才接口的类,写法和我们平时的大差不差。

代码如下:

package webservice;

 

import javax.jws.WebService;

 

//以下这句代码的作用是:定义客户端访问的WSDL服务名

@WebService(endpointInterface ="webservice.IMyServer")

public class MyServerImpl implements IMyServer{

 

    @Override

    public String getMyName(String name){

       // TODO Auto-generated method stub

       System.out.println("Called by the client");

       return"Hello,"+name+",I'm happy to learn webservice with you.";

    }

   

}

注意:这个实现类比一般实现类多了以下代码:

@WebService(endpointInterface ="webservice.IMyServer")

这句代码作用是:定义客户端访问的WSDL服务名

webservice是包名,IMyServer是接口。



 

第六步:发布服务(演示名为:PublishServer)

我们需要将我们的类进行发布。

代码如下:

package webservice;

 

import javax.xml.ws.Endpoint;

 

/**

 * 此类的作用是:发布我们要让客户端访问的类

 * @author Administrator

 *

 */

public class PublishServer {

    /**

     * 启动程序

     * @param args

     */

    public static void main(String[] args) {

       /*

        * 参数说明:

        * 第一个参数http:127.0.0.1:2011

        * 这是url地址,需要指定端口

        *

        * 第二个参数 new MyServerImpl()

        * 这个就是我们要让客户端访问的实现类

        *不能是接口(嘎嘎,接口也不允许 new呀。)

        */

       Endpoint.publish("http://127.0.0.1:2011/myweb",new MyServerImpl());

       System.out.println("The Server is started.");

    }

}



 

让我们运行PublishServer

运行成功之后控制台显示:



这表示发布成功了,我们可以打开浏览器进行访问(因为是web,所以网页当然能访问了,嘎嘎)

【打开浏览器】--在地址栏输入

【http://127.0.0.1:2011/myweb?wsdl】

效果图:

至此说明以上操作基本上是没有问题了。

 

第七步:编写客户端程序(演示名为MyClient)

用浏览器访问并不是我们的最终目的,我们是希望通过Java代码去访问服务器。那么接下来让我们编写一下客户端程序。

代码如下:

package webservice;

 

importjava.net.MalformedURLException;

import java.net.URL;

 

import javax.xml.namespace.QName;

import javax.xml.ws.Service;

 

public class MyClient {

 

    /**

     * 启动程序

     * @param args

     * @throws MalformedURLException

     */

    public static void main(String[] args)throwsMalformedURLException {

       //服务URL

       URL url = new URL("http://127.0.0.1:2011/myweb");

      

       /*

        * 参数说明:

        * 第一参数: http://webservice/

        * 服务的URI

        *

        * 第二个参数:MyServerImplService

        * WSDL发布的服务名,这个名称是你的  实现类连接上 Service

        *

        */

       QName qname = new QName("http://webservice/","MyServerImplService");

      

       //创建服务

       Service service = Service.create(url, qname);

      

       //提取服务端口

       IMyServer myServer =service.getPort(IMyServer.class);

      

       //调用方法

       System.out.println(myServer.getMyName("林祥纤"));

    }

 

}

文件目录结构:


 

运行MyClient:

Dos窗口显示接口:


 

注意:服务端不可关闭。

 

伸伸懒腰,终于可以闭灯休息了。

先告一小段落吧。

源码附上

http://linxingliang.iteye.com/admin/blogs/1190850

这篇关于JAX-WS之旅的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/964196

相关文章

Spring Boot 注解探秘:HTTP 请求的魅力之旅

在SpringBoot应用开发中,处理Http请求是一项基础且重要的任务。Spring Boot通过提供一系列丰富的注解极大地简化了这一过程,使得定义请求处理器和路由变得更加直观与便捷。这些注解不仅帮助开发者清晰地定义不同类型的HTTP请求如何被处理,同时也提升了代码的可读性和维护性。 一、@RequestMapping @RequestMapping用于将特定的HTTP请求映射到特定的方法上

28.8K Star,音乐新体验,开启你的高颜值音乐之旅

Hi,骚年,我是大 G,公众号「GitHub 指北」会推荐 GitHub 上有趣有用的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注。 导语 音乐是生活中不可或缺的调味品,一个好的音乐播放器能够极大地提升我们的听觉享受。今天,我要向大家推荐一个名为 YesPlayMusic 的第三方网易云音乐播放器,它不仅拥有高颜值的界面设计,还支持跨平台使用,让你的音乐体验更上一层楼

杨bob的技术之旅

杨bob今天正式入驻csdn,以后要把自己每一点滴写成文章,这也是冲高阶的毕竟之路

Midjourney 随机风格 (Style Random),开启奇幻视觉之旅

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话:       Midjourney 最近推出了 "Style Random"(随机风格),这项功能可以让我们使用独特的随机 sref 代码创建图像,从而每次都能获得不同的美感。通过对这些功能的探索和尝试,我发现了一些很棒的风格,我很高兴能与大家分享,这样可以节省大家的时间,不用自己动手测试。在本文中,我将展示十个M

《长得太长也是错?——后端 Long 型 ID 精度丢失的“奇妙”修复之旅》

引言 在前后端分离的时代,我们的生活充满了无数的机遇与挑战——包括那些突然冒出来的让人抓狂的 Bug。今天我们要聊的,就是一个让无数开发者哭笑不得的经典问题:后端 Long 类型 ID 过长导致前端精度丢失。说到这个问题,那可真是“万恶之源”啊,谁让 JavaScript 只能安全地处理 Number.MAX_SAFE_INTEGER(也就是 9007199254740991)以内的数值呢?

SpringBoot与Minio的极速之旅:解锁文件切片上传新境界

目录 一、前言 二、对象存储(Object Storage)介绍 (1)对象存储的特点 (2)Minio 与对象存储 (3)对象存储其他存储方式的区别 (4)对象存储的应用场景 三、Minio基础介绍 (1)主要特性 (2)应用场景 (3)架构和部署 四、SringBoot集成MinIO实现切片上传 1. 引入依赖 2.配置MinIO相关配置信息 3. 配置 Min

JAX-WS - 二进制处理之MTOM(文件上传)

一、一般模式     服务端: import javax.jws.WebService;@WebServicepublic interface UploadService {public void upload(byte[] file);} import java.io.File;import java.io.FileOutputStream;import java.io.IOEx

JAX-WS - 通过xjc命令把Schema生成Java

一、说明     1、使用示例 D:\Works\WebServices\TestXml\src>xjc -d D:\Works\WebServices\TestXml\src -verbose user.xsd     2、常用参数         -d dirName     : 指定生成的文件的存放路径         -p pkgName     : 指定目标包

JAX-WS - Handler详解

一、Handler说明     Handler用于处理Soap消息,如控制Header(如隐式的添加用户信息等)     Handler分成LogicalHandler和SOAPHandler,常用为SOAPHandler;客户端先处理LogicalHeader再处理SOAPHandler,服务器反之 二、开始前的准备     1、服务端         (1)接口: @W

JAX-WS - Soap详解

一、创建Soap     代码示例如下: @Testpublic void createSoap() throws Exception{// 创建消息工厂MessageFactory factory = MessageFactory.newInstance();// 通过工厂创建Soap的消息SOAPMessage message = factory.createMessage();//