1. 程式人生 > >axis實現webservices分布式通信

axis實現webservices分布式通信

傳輸 object cnblogs 解碼 err lex 部署 generated jws


分布式通信原理


技術分享


基本原理:stub和skeleton作為client和服務端傳輸的中介,stub和skeleton也是編碼和解碼的核心。


Wsdl

Webservices描寫敘述文件。xml定義的一套Webservices標準,描寫敘述服務端相應方法。參數以及返回值。

可依據配置生成相應操作類。

其它常見的webservices實現

Corba


相對與webservices.編程復雜,而傳輸快。


UDDI

簡單來講,uddi中主要還是利用註冊中心。服務端通過註冊中心發送數據給相應的client,順便告知相應的client傳輸數據到註冊中心的信息。這樣來講,有這樣一個中介也避通過協議來直接傳輸龐大數據的缺點。

UDDIhttp://blog.sina.com.cn/s/blog_645f168c0100i9pj.html

axis配置

.配置webservice

1.axis引擎部署到tomcat

中。


axis-1_4\webapps\axis目錄拷貝到 apache-tomcat-7.0.54-windows-x64\apache-tomcat-7.0.54\webapps下。


2.編輯相應的java類到axis中。並又一次啟動tomcat


新建jws


publicclass MyWebService{
publicString sayHello(String x){
return"helloaxis"+x;                
}
}


保存到axis根文件夾


3.訪問相應http://localhost:8080/axis/MyWebService.jws


Click to see the WSDL,看到MyWebService.jws相應的xml文件。相當於一個反向project,通常情況下利用這個xml文件就可以生成相應的java代碼。


至此webservices環境配置完畢


技術分享

.驗證調用

1.導入.jar

\axis-1_4\lib下的jar所有導入


技術分享


2.client調用


publicstatic void main(String[] args){
//指明服務所在位置
Stringurl="http://localhost:8080/axis/MyWebService.jws?wsdl";
//axis相應服務
Serviceservice =new Service();
try{
//為Call設置服務的位置
Callcall=(Call)service.createCall();
call.setTargetEndpointAddress(newURL(url));
try{
Stringrs=(String) call.invoke("sayHello", new Object[] {"cfl"});
System.out.print(rs);
}catch (AxisFault e) {
//TODO Auto-generated catch block
e.printStackTrace();                        }
 
}catch(ServiceExceptione){
e.printStackTrace();
}catch (MalformedURLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}


調式日誌

錯誤1.


Error compiling 無法訪問 java.lang.Object

錯誤2.


java.lang.RuntimeException: No compiler found in your classpath!(you may need to add ‘tools.jar‘)


以上兩個錯誤,僅僅需將jdk下的tools.jar以及dt.jar復制到axis的lib文件下就可以。


警告3.


-Unable to find required classes (javax.activation.DataHandler andjavax.mail.internet.MimeMultipart).

Attachmentsupport is disabled.

將activation.jar、mail.jar導入到axis相應的lib就可以,消除警告。

詳情操作:http://blog.csdn.net/chastel/article/details/2084076


後序

Webservices作為異構語言之間共享或者說是交流的一種分布式技術,主要涉及到soapwsdl等技術。

wsdl是用來描寫敘述服務端調用對象的,soap則是用來數據傳輸的。

另外以stubskeleton來作為中介。另外,從個人角度來講分布式與遠程調用還是不一樣的,應該講Webservices是遠程調用的一種解決方式。

文中是一個小的不能再小的demo。原理如此。實際運用還須要再做研究。


axis的另外幾種實現:http://www.cnblogs.com/mingzi/archive/2009/03/22/1419120.html

axis實現webservices分布式通信