axis做java的webservice

來源:互聯網
上載者:User

做webservice,我一開始用的是xfire,雖然做起來非常簡單,但是它用到的包實現是太多了,什麼包都需要,有的時候還經常訪問不到,例如http://localhost:8080/xfire/services/這樣就訪問不到,而 http://localhost:8080/xfire/services/DataSource?wsdl這樣又能看到wsdl語言,用程式調用也是出錯,資訊就是找不到這個webservice. 無奈,又找了axis,axis提供的非常方便,只需要在web-inf/server-config.wsdd中配置就可以了.調用webservice的時候也不會出現找不到服務的錯誤.server-config.wsdd的內容如下:

xml version="1.0" encoding="UTF-8"?>deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> globalConfiguration> parameter name="adminPassword" value="admin"/> parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/> parameter name="sendXsiTypes" value="true"/> parameter name="sendMultiRefs" value="true"/> parameter name="sendXMLDeclaration" value="true"/> parameter name="axis.sendMinimizedElements" value="true"/> requestFlow> handler type="java:org.apache.axis.handlers.JWSHandler"> parameter name="scope" value="session"/> handler> handler type="java:org.apache.axis.handlers.JWSHandler"> parameter name="scope" value="request"/> parameter name="extension" value=".jwr"/> handler> requestFlow> globalConfiguration> handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/> handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/> handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/> service name="Version" provider="java:RPC"> parameter name="allowedMethods" value="getVersion"/> parameter name="className" value="org.apache.axis.Version"/> service> service name="GetControls" provider="java:RPC" style="wrapped" use="literal"> parameter name="className" value="Data.DataSource.DataSourceImpl"/> parameter name="alowedMethods" value="*"/> service> transport name="local"> responseFlow> handler type="LocalResponder"/> responseFlow> transport> transport name="http"> requestFlow> handler type="URLMapper"/> handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/> requestFlow> transport>deployment>

這樣的代碼描述非常清晰,version與GetControls就是我自己寫的兩個webservice;className就是webservice的類,這個類只要是一個public java類就可以.alowedMethods如果value是*的話表示類裡面所有的public方法都會成為webservice的方法.調用webservice的方式也很簡單,代碼如下:

String xml = ""a" name="y"/>";String host = " http://localhost:8080";        String servicepath = "/WebSite/services";        String endpoint = host + servicepath;        Service service = new Service();        Call call = (Call) service.createCall();        call.setTargetEndpointAddress(new java.net.URL(endpoint));        call.setOperationName(new QName("GetControls", "GetControlsInfoToDataRow"));        call.setReturnType(XMLType.XSD_BOOLEAN);        call.addParameter("strnode", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);        Boolean ret1 = (Boolean) call.invoke(new Object[] ...{ xml });        System.out.print(ret1.booleanValue());

需要引用的類如下

import org.apache.axis.client.Call;import org.apache.axis.client.Service;

好了,這樣就可以調用了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.