简介:
利用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包进入该目录
利用外部添加JAR包的方式添加工程JAR包:
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
三、构建Java Client
3.1 Eclipse新建Dynamic WEB Project项目:WSClient
鼠标右击WSClient项目,选择新建->其他->Web Service Client
,并输入:http://192.168.0.190:8888/WSLogin?wsdl
系统自动生成一些必要类
在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包:
3.3 客户端调用
使用Run As->Java Application运行测试类WSClinet