模拟三方webservice地址
第一步:定义接口
@javax.jws.WebService(name = "webService",// 定义Port名称
targetNamespace = "http://v/webs"// 定义命名空间,默认为倒置的包名
,serviceName ="myWebService"//修改WebService服务名称
)
public interface WebServiceInter { // 提供一个对外公开的服务
@WebMethod(operationName ="getNameById")
// 修改方法名
String getName(@WebParam(name="userId")String userId);
@WebMethod(operationName ="getUserInfo")
// 修改方法名
String userInfo(@WebParam(name = "userInfo") String userInfo);
}
第二步:定义实现类
@javax.jws.WebService(endpointInterface = "com.speed.test.WebServiceInter"
,name = "webServiceV"// 定义Port名称
,targetNamespace = "http://v/webs" // 定义命名空间,默认为倒置的包名
,serviceName ="myWebServiceV"// 修改WebService服务名称
//服务实现类和接口的注解要一样全
)
public class WebServiceInterimpl implements WebServiceInter {
@WebMethod(operationName = "getNameById")// 修改方法名
@Override
public String getName(String userId) {
if ("admin".equals(userId)) {
return "success";
}
return "error";
}
@WebMethod(operationName = "getUserInfo")// 修改方法名
@Override
public String userInfo( @WebParam(name = "userInfo")
String userInfo) {
if ("www".equals(userInfo)) {
return "my name is "+userInfo;
}
return "not this name";
}
}
1.serviceName是调用的工厂
2.targetNamespace 是cmd创建的包的名字
3.name 是这个webservice的名字
第三步:启动类:(每次更改需要重新启动)
public static void main(String[] args) {
//指定服务url
String url = "http://localhost:8889/web?wsdl";
//指定服务实现类
WebServiceInter server = new WebServiceInterimpl();
//采用命令行发布者Endpoint发布服务
Endpoint.publish(url, server);
}
执行:打开命令行窗口,切换到项目的src目录,执行"wsimport -keep http://localhost:8889/web?wsdl"生成客户端代码,如下图所示
调用webservice
public static void main(String[] args) {
//调用serviceName生成的属性名称方法
MyWebServiceV factory1 = new MyWebServiceV();
WebService webServicePort = factory1.getWebServiceVPort();
String userInfo = webServicePort.getUserInfo("www");
System.out.println(userInfo);
}
1.需先调用之前定义的serviceNama里面的属性名称方法获取工厂
2.根据工厂获取方法Port方法
3.调用自己定义的方法
参考:java调用第三方的webservice应用实例 - Mr_伍先生 - 博客园
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。