Web项目通过webservice编写一个接口,部署在远程服务器上

  • Post author:
  • Post category:其他


在我的上一片文章中,我在本地新建了一个普通的类来编写WebService,使用终端类 Endpoint 发布这个WebService,以此来实现让其他类调用这个接口,实现接口中定义的功能。


通过普通类写一个简单的WebService并发布

那么如果是Web项目的话,应该怎么编写并发布WebService呢?

Web项目可以使用监听器或者Servlet来发布WebService,本片实例我用Servlet来发布WebService。

首先新建一个 Dynamic Web Project 项目,之后创建三个类文件:

  • 接口
  • 接口实现类
  • 入口类

在这里插入图片描述

这三个类文件可以放在一个包下,或者像上图那样分别放在对应的包下,推荐后一种

IWebService.java

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

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

WebServiceImpl.java

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;
	}
}

注意要在IWebService.java、WebServiceImpl.java文件中加上@WebService的注解,位置如上所示

WebServiceCalledByServlet.java

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://127.0.0.1:8888/WebServiceWithServlet";
		Endpoint.publish(address, new WebServiceImpl());
		System.out.println("使用WebServiceCalledByServlet发布webservice成功!");
	}
}

这样就完成了WebService的创建,接下来我们要把这个Web项目导出为 war file ,并部署在远程Tomcat服务器上。

选择项目并右击,选择导出

在这里插入图片描述

选择导出的类型为 WAR file

点击下一步

在这里插入图片描述

选择导出的位置,点击完成就生成了 war 文件

在这里插入图片描述

那么接下来就是把这个WebServiceWithServlet.war 文件上传到我们的远程Tomcat服务器,当上传到Tomcat服务器的webapp文件夹中,Tomcat服务器会自动初始化并发布WebService,如下图所示:

在这里插入图片描述

访问我们服务器的Tomcat的管理页面,点击 Manager APP

在这里插入图片描述

你会看到已经存在了我们刚才上传的项目

在这里插入图片描述

我们在浏览器的地址栏中输入WebService入口类文件中定义的address地址,注意,要把ip地址改成你的远程服务器的ip,并且在地址的后面加上 “?wsdl”。

在这里插入图片描述

那么如果出现了上图类似的界面,那么就说明WebService发布成功。

接下来呢,我们就要实现在本地调用这个远程接口。

在本地再新建一个普通的 Java Project 项目

在这里插入图片描述

鼠标右击这个项目,选择新建->其他->Web Service Client

在这里插入图片描述

在弹出的选项框中的 Service definition 填写上一步在浏览器地址栏中填写的URL

在这里插入图片描述

点击完成,系统会自动为我们创建一些必要的类

在这里插入图片描述

红框圈起来的是系统创建的类,上面那个包是下一步我们需要创建的

我们需要自己在创建一个类来实现这些调用这些新创建的类,以到达调用接口的目的

WSClient.java

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);
	}

}

右键点击运行程序

在这里插入图片描述

在结果上会有报错信息,可能是缺少两个jar包

这里写图片描述

需要下载这两个jar包导入到 Client 项目下

下载地址


https://download.csdn.net/download/bronzehammer/10608421

在项目中新建一个 lib文件夹,把这两个jar包放在lib中,并在项目中添加外部jar

这里写图片描述

这里写图片描述

之后我们重新启动服务,应该就不会有报错了

在这里插入图片描述



版权声明:本文为bronzehammer原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。