• Java开发WebService(使用Java-WS)


    前言:

    初学Java,因为工作需要,直接跳到开发WebService。以前用.NET开发过WebService,对比一下,Java的WebService开发部署难度高了不止一个档次。网上的教程各式各异,刚开始我学着使用XFire开发,但是配置过程已经把我给搞糊涂了,弄了两天没搞好。

    最后使用Java1.6的新特性,Java-WS专门用于开发WebService,发现这个方法特别的简单(相对而言),但是其中还是有不少注意事项,我这篇主要是参考http://www.cnblogs.com/lee0oo0/archive/2013/01/25/2876357.html,但是我在参考这篇文章时遇到了不少的问题,会在我的文章里面指出来。

    有关WebService的名词定义,建议自行百度,或者参考http://blog.csdn.net/icecream0/article/details/6955524。

    以下开始讲解如何在MyEclipse中开发一个WebService。

    内容:

    我使用的是MyEclipse 2014,tomcat是内置的。
    第一部分:如何在本地发布一个WebService。

    1、新建一个Web Service Project

    2、我的工程名是“EbonyWS”,WebService Framework选择JAX-WS。

    3、定义一个Java包,存放服务端的类与接口等。新建一个Java包:com.ebony.service

    4、先定义一个服务需要具有的方法的接口。新建一个接口:IHello

     1 package com.ebony.service;
     2 
     3 /**
     4  * 服务需要具备的接口方法
     5  * @author Administrator
     6  *
     7  */
     8 public interface IHello {
     9     /**
    10      * 必须具备的方法sayHello
    11      * @param name    姓名
    12      * @return
    13      */
    14     public String sayHello(String name);
    15 }

    5、定义此接口的一个实现类,实现类里的方法可以理解成最终调用WebService的具体函数所在地。新建一个类:HelloImpl

     1 package com.ebony.service;
     2 
     3 /**
     4  * 具体的方法实现,最终调用的方法所在地
     5  * @author Administrator
     6  *
     7  */
     8 public class HelloImpl implements IHello {
     9 
    10     @Override
    11     public String sayHello(String name) {
    12         String string = "Congratulations! " 
    13                 + name + ", you have finished your first WebService!";
    14         return string;
    15     }
    16 
    17 }

     6、部署工程到服务器上。可以搜索菜单"Add and Remove Project Deployments..."或者点击按钮。

    搜索:

    或点击按钮:

    7、在打开的"Project Deployments"菜单里,单击"Add"。

     

    8、在弹出的菜单中选择"MyEclipse Tomcat",内置的Tomcat,也可以选择自己的Tomcat位置,不过选择内置的更不容易出错。

    添加之后的显示:

    9、配置好工程的Tomcat之后,启动服务

    启动服务成功,会在Console中显示,此时可以确认以上部署服务过程无误:

    10、设置Tomcat服务器的端口。因为默认是8080端口,往往这个端口是被占用了的,这样会造成发布WebService不成功。此时需要先修改"Windows-Perferences-MyEclipse-Servers-Integated Sandbox-MyEclipse Tomcat 6"里的Port Number为8089(可自行选择,不要选择被占用的)。

    如果你是内置额Tomcat,修改这里就行了,如果是自己下载的Tomcat,还需要修改Tomcat目录下的"conf-server.xml"下的port为8089。

        <Connector port="8089" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443" />

    11、部署Tomcat之后,开始在此服务上发布WebService

    Strategy选择下面的一项,可以为工程生成wsdl文件。

     下图中,1处需要选择一个实现类,我们这里选择我们已经写好的实现类"com.ebony.service.HelloImpl",并勾选2处的"Generate WSDL in project"。

    发布之后会在我们的包"com.ebony.service"生成一个类HelloImplDelegate,作为提供给外部调用的类。

    还会为工程生成一个wsdl目录,双击打开"HelloImplService.wsdl"文件。

    修改红框内的端口"8080"为"8089",HelloImplPort里的地址,就是我们可以提供给外部调用的WebService地址。

    12、在浏览器中打开地址"http://localhost:8089/EbonyWS/HelloImplPort",显示一下内容说明WebService发布成功。

    第二部分:如何在Java中调用此WebService

    1、新建一个EbonyClient的Java Project。

    2、导入WebService。

    3、在红框内填入之前的WebService地址,注意要加上"?wsdl",即:

    http://localhost:8089/EbonyWS/HelloImplPort?wsdl

    导入之后我们会发现,com.ebony.service这个包会导入到了我们的EbonyClient中。

    4、新建一个客户端包:com.ebony.client。

    5、新建一个客户端类:Client.java

     1 package com.ebony.client;
     2 
     3 import com.ebony.service.HelloImplDelegate;
     4 import com.ebony.service.HelloImplService;
     5 
     6 /**
     7  * 调用WebService的客户端
     8  * @author Administrator
     9  *
    10  */
    11 public class Client {
    12     public static void main(String[] args) {
    13         //实例化服务
    14         HelloImplService helloImplService = new HelloImplService();
    15         //实例化服务委托
    16         HelloImplDelegate helloImplDelegate = helloImplService.getHelloImplPort();
    17         //使用委托调用服务的方法
    18         System.out.println(helloImplDelegate.sayHello("ebony"));
    19     }
    20 }

    至此调用服务的工程开发完成。

  • 相关阅读:
    [LeetCode] 1160. Find Words That Can Be Formed by Characters
    [LeetCode] 561. Array Partition I
    [LeetCode] 942. DI String Match
    [LeetCode] 852. Peak Index in a Mountain Array
    [LeetCode] 461. Hamming Distance
    [LeetCode] 617. Merge Two Binary Trees
    SSM项目实现连接两个mysql数据库
    springboot导入excel到mysql
    Mysql修改表备注, 列信息
    sql.xml where ids in的写法
  • 原文地址:https://www.cnblogs.com/Ebony-Ivory/p/4431700.html
Copyright © 2020-2023  润新知