今天,看到需求需要WebService进行通信,所以我就先看看WebService是怎样的一个流程,这里做个简单实例
首先我创建了两个工程,一个为服务端,另一个为客户端
part1:服务端(webServiceServer)
我这里创建4个文件,分别如下
User(实体类)
package com.copa.server;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author copa
* @createDate 2022-01-11 17:15
* @function User实体类
*/
@Data
@Accessors(chain = true)
public class User {
private String id;
private String name;
}
UserService
package com.copa.server;
/**
* @author copa
* @createDate 2022-01-11 17:16
* @function User接口
*/
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public interface UserService {
@WebMethod
User publishUserInfo();
}
UserServiceImpl
package com.copa.server;
import javax.jws.WebService;
/**
* @author copa
* @createDate 2022-01-11 17:17
* @function User接口实现类
*/
@WebService
public class UserServiceImpl implements UserService{
@Override
public User publishUserInfo() {
System.out.println("开始进入该service啦~");
return new User()
.setId("1")
.setName("copa");
}
}
MyServerTest(测试类)
package com.copa.server;
import javax.xml.ws.Endpoint;
/**
* @author copa
* @createDate 2022-01-11 17:19
* @function 服务端测试类
*/
public class MyServerTest {
public static void main(String[] args) {
String address = "http://localhost:2333/user_server.asmx";
Endpoint.publish(address, new UserServiceImpl());
System.out.println("发布成功!");
}
}
然后运行
访问 http://localhost:2333/user_server.asmx?wsdl
出现这样,就是服务端测试成功了~
part2:客户端(webServiceClient)
在命令行输入,注意路径
wsimport -s “E:\other function\webServiceClient\src” http://localhost:2333/user_server.asmx?wsdl
会自动生成下面代码
我们写一个客户端测试类MyClientTest
package com.copa.server;
/**
* @author copa
* @createDate 2022-01-11 17:49
* @function 客户端测试类
*/
public class MyClientTest {
public static void main(String[] args) {
UserServiceImplService factory = new UserServiceImplService();
UserServiceImpl userService = factory.getUserServiceImplPort();
System.out.println(userService.publishUserInfo().getId());
System.out.println(userService.publishUserInfo().getName());
}
}
看到下图效果就运行成功啦~
注意事项
如果看到类似两个类具有相同的 XML 类型名称这个bug的话
可以定位到这两个类
添加下面代码即可
namespace = “http://namespace.thats.not.the.same.as.the.generated”
这样就万事大吉啦~