天天看點

Jaxws 建立WebService

注 : 該篇主要介紹如何使用 Jaxws 建立webservice, 如欲了解 CXF 或 AXIS, 請移步CXF建立webservice 或 AXIS 建立webservice.

#1. 建立接口和實作

@WebService 
public interface IService {
	@WebMethod
	public String login(String name,String pwd);
}
@WebService(endpointInter)
public class ServiceImpl implements IService{
	@Override
	public String login(String name, String pwd) {
		if(name.equals("111111") && pwd.equals("222222")){
			return "登入成功";
		}else{
			return "使用者名或密碼錯誤";
		}
	}
}
           

#2. 釋出服務

public class ServiceRun {
	public static void main(String[] args) {
		String url = "http://localhost:8080/ws/IService";
		Endpoint.publish(url, new ServiceImpl());
		System.out.println("釋出成功,使用 http://localhost:8080/ws/IService?wsdl 進行通路!");
	}
}
           
執行上述操作後, 通路 http://localhost:8080/ws/IService?wsdl , 如果有出現類似 xml 的檔案内容則表示釋出成功!

#3. 調用 (本地調用/遠端調用)

a. 本地調用
public class ServiceClient {
	public static void main(String[] args) throws Exception {
		//該命名空間取生成的xml檔案中targetNamespace="http://ws/",也可通過@WebService注解種的屬性指定
		String namespaceUrl = "http://ws/";
		//建立通路wsdl檔案的URL
		URL url = new URL(" http://localhost:8080/ws/IService?wsdl");
		//使用命名空間和服務名(取xml檔案中service name="ServiceImplService")來建立QName,服務名可通過@WebService注解種的屬性指定
		QName qName = new QName(namespaceUrl, "ServiceImplService");
		//使用URL,QName建立服務
		Service service = Service.create(url,qName);
		//根據接口原類擷取本地接口
		IService ser = service.getPort(IService.class);
		//調用接口方法
		System.out.println(ser.login("222222", "111111"));
		System.out.println(ser.login("111111", "222222"));
	}
}
           
b. 遠端調用
使用JDK自帶的 wsimport 指令 或 wsgen 指令.

繼續閱讀