在 Intellij IDEA 中创建并调用 WebService

北慕城南 提交于 2020-01-21 05:39:08

在 Intellij IDEA 中创建并调用 WebServices

零、环境准备

  本次实验演示环境为:

  • Windows 10
  • IntelliJ IDEA 2019.2.4 (Ultimate Edition)
  • Apache Tomcat/8.5.35
  • java 1.8.0_211

一、创建 WebServices

1.新建 WebServices 项目

  打开 Intellij IDEA 开发工具,依次点击【File】→【New】→【Project…】

在这里插入图片描述

  接下来,按照图中顺序,依次选择对应的配置,最后点击【Next】

在这里插入图片描述

  输入项目名称,点击【Finish】,Intellij 会自动下载对应的依赖包。

在这里插入图片描述

在这里插入图片描述

  依赖包下载完成后,项目结构目录如下所示。

在这里插入图片描述

2.编写程序

  项目是默认自带 HelloWorld 程序,也可以自定义编写程序,这里就直接使用 HelloWorld 演示,二者本质没有什么区别。

3.依赖配置

3.1 配置 Tomcat

  点击 Intellij 中右上角的 【Add Configuration…】

在这里插入图片描述

  按照图中顺序依次点击添加 Tomcat

在这里插入图片描述

在这里插入图片描述

  修改 Tomcat 名称,点击【Fix】设置部署

在这里插入图片描述

在这里插入图片描述

  这里为方便操作将访问名由【webService_demo_war_exloded】修改为【webService_demo】

在这里插入图片描述

3.2 添加项目依赖

  依次点击【File】→【Project Structure…】,进入项目结构配置。

在这里插入图片描述

  先选择左侧的【Artifacts】,再点击右下角的【Fix…】,选择第一个【Add ……】即可。

在这里插入图片描述

在这里插入图片描述

  到此 WebServices 的创建配置即完成。

4.运行测试

  点击运行 Tomcat

在这里插入图片描述

  在浏览器地址栏中输入 http://localhost:8080/webService_demo/services ,看到以下结果显示即运行成功。

在这里插入图片描述

  点击【HelloWorld(wsdl)】也可以看到详细内容。

在这里插入图片描述

5.生成wsdl

  依次点击 Intellij 最上侧功能栏的【Tools】→【WebServices】→【Generate Wsdl From Java Code…】

在这里插入图片描述

  点击【OK】即可

在这里插入图片描述

  生成后可以看到目录中多了【HelloWorld.wsdl】文件。

在这里插入图片描述

二、调用WebServices

1.创建 client 包

  在 src 目录下创建 client 包,用于存放测试的各个类

2.由 wsdl 文件生成 java 代码

  先点击【HelloWorld.wsdl】文件,再依次点击【Tools】→【WebServices】→【Generate Java Code FromWsdl…】

在这里插入图片描述

  然后会弹出生成 Java 代码的相关配置,主要是 wsdl 来源路径、输出路径等,一般而言不需要更改,直接点击【OK】即可。

在这里插入图片描述

  成功后可以看到 client 目录下生成了很多文件。

在这里插入图片描述

3.编写测试用例

  在 client 目录下新建 test.java ,添加以下测试代码。

package client;

import javax.xml.rpc.ServiceException;
import java.net.MalformedURLException;
import java.net.URL;
import java.rmi.RemoteException;

public class test {
    public static void main(String[] args){
        // 1.指定调用WebService的URL,这里是我们发布后点击HelloWorld
        String url = "http://localhost:8080/webService_demo/services/HelloWorld?wsdl";
        try {
            // 2.创建Locator对象,相当于传统服务的类或者是库
            HelloWorldServiceLocator helloWorldServiceLocator = new HelloWorldServiceLocator();
            // 3.获取port,相当于传统类或库的方法接口
            HelloWorld_PortType service = helloWorldServiceLocator.getHelloWorld(new URL(url));
            // 4.通过port调用服务
            String result = service.sayHelloWorldFrom("summer");
            System.out.println(result);
        }catch (ServiceException | RemoteException | MalformedURLException ex){
            ex.printStackTrace();
        }
    }
}

在这里插入图片描述

4.运行测试用例

  先确保服务端正在运行,也就是 Tomcat 正在运行,之后直接点击右键,选择【Run ‘test.main()’】即可。

在这里插入图片描述

在这里插入图片描述

  WebServices的调用到此即完成。

三、遇到的 Bug 及解决方式

1.运行测试用例报 404

在这里插入图片描述

  最开始编写的测试用例并没有指定目标的 wsdl,所以才会报这个错误,添加指定 URL 即可解决。

//原测试代码
package client;

import javax.xml.rpc.ServiceException;
import java.rmi.RemoteException;

public class test {
    public static void main(String[] args){
        try {
            // 1.创建Locator对象,相当于传统服务的类或者是库
            HelloWorldServiceLocator helloWorldServiceLocator = new HelloWorldServiceLocator();
            // 2.获取port,相当于传统类或库的方法接口
            HelloWorld_PortType service = helloWorldServiceLocator.getHelloWorld();
            // 3.通过port调用服务
            String result = service.sayHelloWorldFrom("summer");
            System.out.println(result);
        }catch (ServiceException | RemoteException ex){
            ex.printStackTrace();
        }
    }
}

2.log4j警告信息

  运行项目时一直显示 log4j 警告

在这里插入图片描述

  在 src 目录下新建文件【log4j.properties】,添加以下代码即可。

log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=firestorm.log

log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

log4j.logger.com.codefutures=DEBUG

参考文章:【1】WebService—— IDEA创建WebServices

     【2】idea搭建WebService HelloWorld程序

     【3】Intellij IDEA开发WebService步骤实例

     【4】intellij 开发webservice

     【5】IntelliJ IDEA java开发 WebService

     【6】Intellij IDEA开发WebService步骤实例

     【5】IntelliJ IDEA java开发 WebService

     【6】Intellij IDEA开发WebService步骤实例

     【7】开发一个简单的Java webService以及相关知识

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!