服务端代码如下
public interface WeatherInterface {
public String queryWeather( String cityName);
}
import javax.jws.WebService;
@WebService //@WebService表示该类是一个服务类,需要发布其中的public的方法
public class WeatherInterfaceImpl implements WeatherInterface {
@Override
public String queryWeather(String cityName) {
System.out.println("获取城市名"+cityName);
String weather="暴雨";
return cityName+":"+weather;
}
}
import javax.xml.ws.Endpoint;
public class WeatherServer {
public static void main(String[] args) {
Endpoint.publish("http://127.0.0.1:12345/weather", new WeatherInterfaceImpl());
}
}
客户端
找一个目录,然后打开cmd命令窗口,下载客户端源码
wsimport -s . http://127.0.0.1:12345/weather?wsdl
public class WeatherClient {
public static void main(String[] args) {
// 创建服务视图,视图是从wsdl文件的service标签的name属性获取
WeatherInterfaceImplService weatherInterfaceImplService = new WeatherInterfaceImplService();
// 获取服务实现类,实现类从wsdl文件的portType的name属性获取
WeatherInterfaceImpl weatherInterfaceImpl = weatherInterfaceImplService.getPort(WeatherInterfaceImpl.class);
// 获取查询方法,从portType的operation标签获取
String weather = weatherInterfaceImpl.queryWeather("北京");
System.out.println(weather);
}
}
axis客户端调用webservice
<dependency>
<groupId>axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
public class WebserviceClient {
public static void main(String[] args) throws Exception {
String endpoint = "http://127.0.0.1:12345/weather";
String targetNamespace = "http://webservice.org/";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTimeout(new Integer(300000));
call.setTargetEndpointAddress(new java.net.URL(endpoint));
// 调用的方法名
// call.setOperationName("queryWeather");
call.setOperationName(new QName(targetNamespace,"queryWeather"));
call.addParameter("arg0", XMLType.XSD_STRING,ParameterMode.IN);
// call.addParameter(new QName(targetNamespace, "cityName"),
// org.apache.axis.encoding.XMLType.XSD_STRING,
// javax.xml.rpc.ParameterMode.IN);
String xml = "helloWord";
//发起调用 提交的内容为 xml 格式字符串
String result = (String) call.invoke(new Object[] {xml});
System.out.println(result);
}
}