webService 制作简单demo(webservice接口开发教程)
制作demo
服务端
定义一个webService接口.使用@WebService
注释,想要通讯的方法使用@WebMethod
@javax.jws.WebService public interface WebService { @WebMethod String hello(String name); } 复制代码
实现类 : 使用@WebService注释
@javax.jws.WebService public class WebServiceImpl implements WebService{ @Override public String hello(String name) { System.out.println("请求成功"); name += "访问成功"; return name; } } 复制代码
执行.将webService服务启动到指定网址
public class PublishWebService { public static void main(String[] args) { String address = "<http://localhost:8181/service/webService>"; Endpoint.publish(address,new WebServiceImpl()); System.out.println("发布成功"); } } 复制代码
客户端
通过idea可以自动生成客户端代码
在执行下面的操作前,需要将鼠标锁定到输出目录
url 即服务端的网址,需要在后面加上?wsdl
生成成功,输出的目录在client,结构如下图
如何调用:
具体的调用流程如左图,代码流程如右图
调用生成的客户端代码流程
public class ClientService { public static void main(String[] args) { // 创建wsd文档中的service的name WebServiceImplService service = new WebServiceImplService(); // 创建 portType的name WebServiceImpl webServiceImplPort = service.getWebServiceImplPort(); // 执行 opration中的name String yzy = webServiceImplPort.hello("yzy"); System.out.println(yzy); } } 复制代码
返回结果
探索出入参
点进hello方法,接口中规定了入参类型和出参类型
这两个其实就是通讯方法入参出参的String类型封装了一下
更换出入参
为了验证我的猜想是不是正确的,可以将通讯方法中的String改成自定义类.
//通讯方法 public Animal trans(User user) { Animal animal = new Animal(); String sex = user.isSex()==true?"公":"母"; animal.setType(sex +" : "+ user.getName()); LocalDate now = LocalDate.now(); animal.setBirthYear(now.minusYears(user.getAge()).getYear()); return animal; } 复制代码
重新启动后,wsdl文档如下
Trans入参里面就有一个User. Trans即入参合集
,因为可能有多个入参.
User和我们创建的一模一样
客户端调用接口
// 客户端调用通讯方法 public static void main(String[] args) { // 创建wsd文档中的service的name WebServiceImplService service = new WebServiceImplService(); // 创建 portType的name WebServiceImpl webServiceImplPort = service.getWebServiceImplPort(); // 执行 opration中的name User user = new User(); user.setAge(22); user.setName("yzy"); user.setSex(true); Animal trans = webServiceImplPort.trans(user); System.out.println(JSONObject.toJSONString(trans)); } 复制代码
![image.png](p9-juejin.byteimg.com/to「这是我参与11月… "juejin.cn/post/702364…?)
把通讯方法的入参改成三个
Animal trans(User user,String name,int age); 复制代码
trans 就会有三个参数.
作者:顽疾
链接:https://juejin.cn/post/7029615855348482061