JAVA发布WebService接口

简介:

利用Eclipse导出Java开发的接口war包,并上传到Tomcat的发布目录,然后利用Java开发客户端进行接口调用

安装环境及版本:

系统环境:CentOS Linux release 7.5.1804 (Core)
JDK版本:apache-tomcat-9.0.36.tar.gz
Tomcat版本:apache-tomcat-9.0.36.tar.gz
NodeJS版本:node-v14.4.0-linux-x64.tar.xz

Eclipse IDE版本:Eclipse IDE for Enterprise Java Developers 
Version: 2020-06 (4.16.0)
Build id: 20200615-1200

一、安装

1.1 安装JDK

参考:《JDK安装(Centos)》

1.2 安装Tomcat

参考:《Tomcat安装(Centos)》

1.3 安装NodeJS

参考:《NodeJS安装(Centos)》

1.4 环境变量设置

由于Tomcat发布JAVA的WEB接口,所以环境变量需要做调整

root环境下安装,直接修改/etc/profile文件即可
命令:vi /etc/profile //在export前面添加

export JAVA_HOME=/usr/local/jdk/jdk1.8.0_211
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.36
export CLASSPATH=.:$JAVA_HOME/lib:$CATALINA_HOME/lib
export PATH=$PATH:$CATALINA_HOME/bin

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

环境变量生效:source /etc/profile

二、构建Java WS接口

2.1 Eclipse新建Dynamic WEB Project项目:WSLogin

在WSLgoin工程下新建类:WebServiceCalledByServlet

package cn.xuzihui.controller;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.xml.ws.Endpoint;
import cn.xuzihui.impl.WebServiceImpl;

@WebServlet(value="", loadOnStartup=0)
public class WebServiceCalledByServlet extends HttpServlet{
	private static final long serialVersionUID = -2864381365175258589L;
	
	public void init() {
		String address = "http://192.168.0.190:8888/WSLogin";
		Endpoint.publish(address, new WebServiceImpl());
		System.out.println("use  WebServiceCalledByServlet webservice success!");
	}
}

在WSLgoin工程下新建类:WebServiceImpl

package cn.xuzihui.impl;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.jws.WebService;
import cn.xuzihui.itf.IWebService;

@WebService
public class WebServiceImpl implements IWebService {
	@Override
	public String sayHello(String name) {
		Date date = new Date();
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String hello = df.format(date) + "," + name + "call the inferface!";
		return hello;
	}
}

在WSLgoin工程下新建接口类:IWebService

package cn.xuzihui.itf;
import javax.jws.WebService;

@WebService
public interface IWebService {
	String sayHello(String name);
}

2.2 导入JAR包

在工程WSLogin下建lib目录,拷贝需要的JAR包进入该目录

image-1.png (228×109)

利用外部添加JAR包的方式添加工程JAR包:

image.png (554×231)

2.3 导出War包

利用ECLIPSE导出WAR包WSLogin.war

将war包上传到服务器Tomcat发布目录:/usr/local/tomcat/apache-tomcat-9.0.36/webapps

Tomcat会自动解析WSLogin.war包:

[root@localhost ~]# ll /usr/local/tomcat/apache-tomcat-9.0.36/webapps/
total 368
drwxr-x--- 16 root root   4096 Jun 28 19:46 docs
drwxr-x---  6 root root     83 Jun 28 19:46 examples
drwxr-x---  5 root root     87 Jun 28 19:46 host-manager
drwxr-xr-x  3 root root     66 Jun 28 22:09 html
drwxr-x---  5 root root    103 Jun 28 19:46 manager
drwxr-x---  3 root root    283 Jun 28 19:46 ROOT
drwxr-x---  4 root root     37 Jun 28 21:10 WSLogin
-rw-r--r--  1 root root 370342 Jun 28 21:10 WSLogin.war
[root@localhost ~]# ll /usr/local/tomcat/apache-tomcat-9.0.36/webapps/WSLogin
total 0
drwxr-x--- 2 root root 44 Jun 28 21:10 META-INF
drwxr-x--- 4 root root 32 Jun 28 21:10 WEB-INF
[root@localhost ~]# ll /usr/local/tomcat/apache-tomcat-9.0.36/webapps/WSLogin/WEB-INF/
total 0
drwxr-x--- 3 root root 16 Jun 28 21:10 classes
drwxr-x--- 2 root root 44 Jun 28 21:10 lib
[root@localhost ~]# ll /usr/local/tomcat/apache-tomcat-9.0.36/webapps/WSLogin/WEB-INF/lib/
total 396
-rw-r----- 1 root root  45386 Mar 20  2009 activation.jar
-rw-r----- 1 root root 355030 Mar 20  2009 mail.jar
[root@localhost ~]# 

2.4 查看wsdl

启动tomcat:/usr/local/tomcat/apache-tomcat-9.0.36/bin/startup.sh

查看发布接口的wsdl:http://192.168.0.190:8888/WSLogin?wsdl

image-2.png (554×449)

三、构建Java Client

3.1 Eclipse新建Dynamic WEB Project项目:WSClient

鼠标右击WSClient项目,选择新建->其他->Web Service Client
,并输入:http://192.168.0.190:8888/WSLogin?wsdl

image-3.png (586×536)

系统自动生成一些必要类

image-4.png (276×124)

在WSClient工程学手动新建测试类:WSClinet

package cn.xuzihui.client;
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import cn.xuzihui.impl.WebServiceImpl;
import cn.xuzihui.impl.WebServiceImplServiceLocator;

public class WSClinet {
	public static void main(String[] args) throws ServiceException, RemoteException {
		WebServiceImpl serviceImpl = new WebServiceImplServiceLocator().getWebServiceImplPort();
		String sayWhat = serviceImpl.sayHello("迪迦");
		System.out.println(sayWhat);
	}

}

3.2 WSClient工程引入外部JAR包:

image-5.png (554×236)

3.3 客户端调用

使用Run As->Java Application运行测试类WSClinet

image-6.png (368×76)

发表回复