eclipse創建web service全過程

創建Web Service步驟

一、創建服務端工程

1WebServerTest (web 工程)

FileNewOther——

選擇Dynamic Web Project

配置Tomcat服務器

點擊Browse選擇Tomcat所在目錄

點擊Finish

點擊Finish完成WebServerTest的創建

2.創建服務的類和方法

Java Resources:src上右鍵新建一個class

package com.test.service;

public class WSTest {

public String sayHello(String name){

return "Hello, "+name;

}

}

3、創建Web service

配置發佈的服務

4發佈服務

點擊servers,右鍵單擊空白處,NewServer

下一步

點擊Add再點擊Finish

查看服務的目錄

啓動服務器,輸入http://localhost:8080/WebServerTest/services

有如下方法說明發布成功

5測試服務

調用服務方法

http://localhost:8080/WebServerTest/services/WSTest?method=sayHello&arg0=world!

WSTest 服務類

sayHello 服務方法

Arg0=world 方法參數

二、創建客戶端工程

1、新建一個普通工程Java Project (WSClient)

2、利用wsdl文件生成服務接口類

選擇工程WSClient右鍵新建一個Web Service Client

點擊下一步

選中WSTest.wsdl點擊OK最後點擊finish生成如下文件

3、建測試類

package com.test.service;

import java.net.URL;

public class MyTest {

/**

 * @param args

 */

public static void main(String[] args) {

// TODO Auto-generated method stub

try {

WSTestService service = new WSTestServiceLocator();

//調用localhost的服務

WSTest wstest0 = service.getWSTest();

System.out.println(wstest0.sayHello("world"));

//調用其他路徑的服務

URL portAddress = new URL("http://localhost:8080/WebServerTest/services/WSTest");

WSTest wstest1 = service.getWSTest(portAddress);

System.out.println(wstest1.sayHello("world"));

} catch (Exception e) {

e.printStackTrace();

}

}

運行測試類

三、不需要任何配置文件調用web service

上面的客戶端測試類需要通過服務器生成的wsdl文件來生成服務接口,但在其他電腦上沒有任何配置文件怎麼調用上面發佈的web service

通過使用axis提供的api即可,方法如下

public static void testToMySelf() {

try {

// 可以通過這個網址直接查看到wsdl文件

String endpoint = "http://10.10.114.163:8080/WebServerTest/services/WSTest?wsdl";

Service service = new Service();

// 通過service創建call對象

Call call = (Call) service.createCall();

// 設置service所在URL

call.setTargetEndpointAddress(new java.net.URL(endpoint));

// "http://service.test.com/"是通過上面網址查看到wsdl文件的targetNamespace的值,"sayHello"爲方法名

call.setOperationName(new QName("http://service.test.com/","sayHello"));

// 傳入的參數及類型

call.addParameter(new QName("http://service.test.com/", "name"),org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);

call.setUseSOAPAction(true);

// 返回參數的類型call.setSOAPActionURI("http://service.test.com/sayHello");

call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING);

// Object 數組封裝了參數,

String ret = (String) call.invoke(new Object[] { "world!" });

System.out.println("--------" + ret);

} catch (Exception e) {

e.printStackTrace();

}

}

四、根據上面原理訪問下天氣預報的web服務

public static void WeatherTest() {

try {

String endpoint = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl";

Service service = new Service();

Call call = (Call) service.createCall();// 通過service創建call對象

// 設置service所在URL

call.setTargetEndpointAddress(new java.net.URL(endpoint));

call.setOperationName(new QName("http://WebXml.com.cn/",

"getWeatherbyCityName"));

call.addParameter(

new QName("http://WebXml.com.cn/", "theCityName"),

org.apache.axis.encoding.XMLType.XSD_STRING,

javax.xml.rpc.ParameterMode.IN);

call.setUseSOAPAction(true);

call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_VECTOR); // 返回參數的類型(不能用Array,否則報錯)

call.setSOAPActionURI("http://WebXml.com.cn/getWeatherbyCityName");

Vector ret = (Vector) call.invoke(new Object[] { "大慶" });

System.out.println("--------" + ret);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

運行結果

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章