服务端:
1、首先需要 1个接口 以及对应的实现类,一个测试主类
2、代码如下
1)接口
package com.testServer;
public interface ITestService {
public String sayhello(String str);
}
2)实现类
package com.testServer;
import javax.jws.WebService;
@WebService
public class ITestServiceImpl implements ITestService{
@Override
public String sayhello(String str) {
if("hello".equals(str)) {
return"回答正确";
}else if ("test".equals(str)) {
return "this is a test";
}
return "暂无此答案 !";
}
}
3)创建主类发布服务
package com.testServer;
import javax.xml.ws.Endpoint;
public class ServerDemo {
public static void main(String[] args) {
//参数1:指的是webservice的地址不带后缀wsdl 第二个参数指的是实现类
Endpoint.publish("http://localhost:8080/ITestService", new ITestServiceImpl());
System.out.println("webservice服务已经成功发布。。。。");
}
}
客户端:
1、首先生成客户端的代码
1)进入你所在客户端项目文件的 src 下 在地址栏输入cmd直接进入该路径
2)使用wsimport -s ./ wsdl地址或者直接将提供的xml拖进去 敲回车就OK了(前提是服务端必须启动否则无法生成)
2、 接下来就是客户端的代码喽,代码如下:
package com.testclient;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import com.testserver.ITestServiceImpl;
public class TestClient {
public static void main(String[] args) {
try {
//1、设置url服务地址(wsdl地址)
//此处的地址是使用代理后的地址(也可以不用代理直接写8080) 大家可以采用eclipse自带的TCP/IP MONITOR,设置如下
URL url = new URL("http://localhost:8888/ITestService?wsdl");
//2、设置qname 第一个参数targetnamespace 第二个service的name属性值
QName qName = new QName("http://testServer.com/", "ITestServiceImplService");
//3、创建服务
Service service = Service.create(url,qName);
//4、得到服务实现类(接口) 此处的参数指的是porttype的name属性值
ITestServiceImpl port = service.getPort(ITestServiceImpl.class);
System.out.println("客户端被调用。。。。");
System.out.println(port.sayhello(""));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
设置完成后,一定一定记着点击Start 按钮 否则会出现如下报错
接下来执行服务端程序:
接下来执行客户端程序: