[英]Steps in creating a web service using Axis2 - The client code
我正在嘗試創建一個Web服務,我的交易工具是:
**
Axis2,Eclipse,Tomcat,Ant
**
我需要從Code創建一個Web服務,即編寫一個基本的java類,它將具有在WSDL中聲明的方法。 然后使用java2WSDL.sh創建我的WSDL。
那么,這種方法是否正確:
package packageNamel; public class Hello{ public void World(String name) { SOP("Hello" + name); } }
最后,我將編寫services.xml文件,並使用以下dir結構創建Hello.aar:
Hello.aar
現在,我假設,當我將aar放入tomcat1 / webapps / axis2 / WEB-INF / services時,我的服務將被部署
但是,這是我的問題,我如何訪問方法World(String name)
??? !!,即我對客戶端代碼一無所知!
請賜教我制作一個非常基本的Web服務並調用該方法。 上述3個步驟可能是錯誤的。 這是一個社區維基,隨時可以編輯。
謝謝
我假設你只對網絡服務客戶感興趣?
調用Web服務正在使用Axis2 REST支持 ,例如:
HTTP://本地主機:8080 /的Axis2 /服務/為MyService / myOperation參數1 =一個&參數2 =兩個
使用SOAPUI 。 它可以通過讀取服務的WSDL為您生成SOAP消息。 我的客戶的測試人員一直在廣泛使用它,只是對Web服務技術的廣泛理解。 令人印象深刻的工
Groovy客戶端(其他基於JVM的語言的方法相同)
使用wsdl2java工具為莎士比亞Web服務創建客戶端存根類:
generate.sh :
$AXIS2_HOME/bin/wsdl2java.sh -d adb -s -o build -uri http://www.xmlme.com/WSShakespeare.asmx?WSDL
ant -file build/build.xml
GetSpeech.groovy :
// Dependencies
// ============
import com.xmlme.webservices.ShakespeareStub
@Grapes([
@Grab(group='org.apache.axis2', module='axis2-kernel', version='1.5.1'),
@Grab(group='org.apache.axis2', module='axis2-adb', version='1.5.1'),
@Grab(group='org.apache.axis2', module='axis2-transport-local', version='1.5.1'),
@Grab(group='org.apache.axis2', module='axis2-transport-http', version='1.5.1'),
@Grab(group='xerces', module='xercesImpl', version='2.6.2'),
@GrabConfig(systemClassLoader=true)
])
// Main program
// ============
def stub = new ShakespeareStub()
// Request payload
def request = new ShakespeareStub.GetSpeech()
request.setRequest("Friends, romans, countrymen")
// Send request
response = stub.getSpeech(request)
println response.getGetSpeechResult()
使用-cp參數將生成的代碼添加到腳本的類路徑中
groovy -cp build/build/classes GetSpeech
如果您有權訪問WSDL,則可以使用以下代碼/ JAX-WS客戶端來調用任何基於SOAP的Web服務。
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class WebserviceClient {
public static void main(String[] args) throws Exception {
URL url = new URL
("http://localhost:9999/ws/additionService?wsdl");
QName qname = new QName("http://test/",
"AdditionServiceImplService");//Line 2
Service service = Service.create(url, qname);
AdditionService additionService = service
.getPort(AdditionService.class);
System.out.println(additionService.add(1, 2));
}
}
在第2行中, QName
第一個參數是WSDL中使用的命名空間,第二個參數只是服務名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.