怎麼寫webservice
本Guide利用Eclipse以及Ant建立一個簡單的Web Service,以演示Web Service的基本開發過程:1.系統條件:Eclipse Java EE IDE for Web Developers Java SE 6 Windows XP2.基本環境搭建:1)Java SE6 JDK的安裝:下載Java SE6 JDK,雙擊,安裝默認選項進行安裝即可。
2)Eclipse的安裝與配置: 安裝時直接解壓。 配置處有兩點,Window>Preferences>Java>Installed JREs確保如下設置: 安裝路徑可能略有不同。
Window>Preferences>Java>Compiler 確保如下設置:3.建立Server端工程和相關包與類:創建一個Java Project,命名爲wsServerHelloWorld:在這個項目下建立包:org.gnuhpc.wsServer 在這個包下邊建立類:SayHello 在SayHello.java文件中輸入以下代碼:package org.gnuhpc.wsServer; import javax.jws.WebService; @WebService public class SayHello { private static final String SALUTATION = "Hello"; public String getGreeting(String name) { return SALUTATION + " " + name; } } 其中注意到@WebService ,這個稱作annotation或者metadata,Java SE 5中的Web Services Metadata Specification引入的。Java SE 6中對於Web Services規範的升級以及JAX-WS(Java API for XML Web Services)2.0規範,這些升級使得我們Web Services的創建和調用變得更加容易。
使用這些新功能,我們可以僅僅使用簡單的Annotations註釋從一個Java類創建Web Services。開發者將其類和方法之前用該annotations指定,類告訴runtime engine以Web Service的方式和操作來使能該類和方法。
這個annotations可以產生一個可佈署的Web Service,是一個WSDL映射annotations,將Java源代碼與代表Web Service的WSDL元素連接在了一起。4.使用Ant產生Server端代碼:首先在項目中新建一個文件:build.xml,然後使用OpenWith>AntEditor打開,輸入以下腳本代碼:
它還生成WSDL和符合規範的該類的WebService。Target名稱爲wsgen,具體執行的命令的參數:-cp 爲類路徑-keep後產生的java文件-s 產生的源文件放在哪-d 產生的輸出問價放在哪 然後使用Ant Build選項運行:在成功執行的提示後,我們刷新一下Project 我們在Project區域可以看到,結果如下:5.分佈Web Service org.gnuhpc.wsServer下建立一個類RunService:package org.gnuhpc.wsServer; import javax.xml.ws.Endpoint; public class RunService { /** *@paramargs */ public static void main(String[] args) { System.out.println("SayHello Web Service started."); Endpoint.publish("ponents = null; ///
eb廣泛用到的技術:
TCP/IP:通用網絡協議,被各種設備使用
HTML(標準通用標記語言下的一個應用):通用用戶界面,可以使用HTML標籤顯示數據
.NET: 不同應用程序間共享數據與數據交換
Java:寫一次可以在任何系統運行的通用編程語言,因爲java具有跨平臺特性
XML(標準通用標記語言下的一個子集):通用數據表達語言,在web上傳送結構化數據的容易方法
他們的特點是其開放性,跨平臺性,開放性正是Web services的基礎。
4. webservice接口怎麼寫以java爲例:ava調用WebService可以直接使用Apache提供的axis.jar自己編寫代碼,或者利用Eclipse自動生成WebService Client代碼,利用其中的Proxy類進行調用。
理論上是一樣的,只不過用Eclipse自動生成代碼省事些。1、編寫代碼方式:package com.yudun.test;import java.rmi.RemoteException;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.message.PrefixedQName;import org.apache.axis.message.SOAPHeaderElement;import com.cezanne.golden.user.Exception;import com.cezanne.golden.user.UserManagerServiceProxy;import javax.xml.namespace.QName;import java.net.MalformedURLException;import javax.xml.rpc.ServiceException;import javax.xml.soap.Name;import javax.xml.soap.SOAPException;public class testWebService {public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException { //標識Web Service的具體路徑 String endpoint = "WebService服務地址"; // 創建 Service實例 Service service = new Service(); // 通過Service實例創建Call的實例 Call call = (Call) service.createCall(); //將Web Service的服務路徑加入到call實例之中. call.setTargetEndpointAddress( new java.net.URL(endpoint) );//爲Call設置服務的位置 // 由於需要認證,故需要設置調用的SOAP頭信息。
Name headerName = new PrefixedQName( new QName("發佈的wsdl裏的targetNamespace裏的url", "string_itemName") ); org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName); header.addTextNode( "blablabla" ); call.addHeader(header);// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("發佈的wsdl裏的targetNamespace裏的url", "SoapHeader"); // soapHeaderElement.setNamespaceURI("發佈的wsdl裏的targetNamespace裏的url"); // try // { // soapHeaderElement.addChildElement("string_itemName").setValue("blablabla"); // } // catch (SOAPException e) // { // e.printStackTrace(); // } // call.addHeader(soapHeaderElement); //調用Web Service的方法 org.apache.axis.description.OperationDesc oper; org.apache.axis.description.ParameterDesc param; oper = new org.apache.axis.description.OperationDesc(); oper.setName("opName"); param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName(".yudun.test;import java.rmi.RemoteException;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import org.apache.axis.message.PrefixedQName;import org.apache.axis.message.SOAPHeaderElement;import com.cezanne.golden.user.Exception;import com.cezanne.golden.user.UserManagerServiceProxy;import javax.xml.namespace.QName;import java.net.MalformedURLException;import javax.xml.rpc.ServiceException;import javax.xml.soap.Name;import javax.xml.soap.SOAPException;public class testWebService {public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException { //標識Web Service的具體路徑 String endpoint = "WebService服務地址"; // 創建 Service實例 Service service = new Service(); // 通過Service實例創建Call的實例 Call call = (Call) service.createCall(); //將Web Service的服務路徑加入到call實例之中. call.setTargetEndpointAddress( new java.net.URL(endpoint) );//爲Call設置服務的位置 // 由於需要認證,故需要設置調用的SOAP頭信息。
Name headerName = new PrefixedQName( new QName("發佈的wsdl裏的targetNamespace裏的url", "string_itemName") ); org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName); header.addTextNode( "blablabla" ); call.addHeader(header);// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("發佈的wsdl裏的targetNamespace裏的url", "SoapHeader"); // soapHeaderElement.setNamespaceURI("發佈的wsdl裏的targetNamespace裏的url"); // try // { // soapHeaderElement.addChildElement("string_itemName").setValue("blablabla"); // } // catch (SOAPException e) // { // e.printStackTrace(); // } // call.addHeader(soapHeaderElement); //調用Web Service的方法 org.apache.axis.description.OperationDesc oper; org.apache.axis.description.ParameterDesc param; oper = new org.apache.axis.description.OperationDesc(); oper.setName("opName"); param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false); param.setOmittable(true); oper.addParameter(param); param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg1"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false); param.setOmittable(true); oper.addParameter(param); param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg2"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"), java.lang.String.class, false, false); param.setOmittable(true); oper.addParameter(param); oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string")); oper.setReturnClass(java.lang.String.class); oper.setReturnQName(new javax.xml.namespace.QName("", "return")); oper.setStyle(org.apache.axis.constants.Style.WRAPPED); oper.setUse(org.apache.axis.constants.Use.LITERAL); oper.addFault(new org.apache.axis.description.FaultDesc( new javax.xml.namespace.QName("發佈的wsdl裏的targetNamespace裏的url", "Exception"), "Exception", new javax.xml.namespace.QName("發佈的wsdl裏的targetNamespace裏的url", "Exception"), true )); call.setOperation( oper ); call.setOperationName(new javax.xml.namespace.QName("發佈的wsdl裏的targetNamespace裏的url", "opName")); //調用Web Service,傳入參數 String res = ( String ) call.invoke( new Object[]("arg0","arg1")); System.out.println("==============="); return res; }/** * @param args */ public static void main(String[] args) { try { System.out.println(getResult()); } catch (MalformedURLException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } catch (ServiceException e) { e.printStackTrace(); } catch (SOAPException e) { e.printStackTrace(); } }}2、利用Eclipse自動生成WebService client代碼就容易多了:(由於還不會發圖片,就用。
-
2022年買房新政策有哪些
法律分析:1、房貸利息專項扣除。購房者購買首套住房可以享受住房貸款利息專項附加扣除,按照每月1000元的標準定額扣除,扣除期限最長不超過240個月。2、房貸利率下調。如果購房者名下沒有房,利率可以下調。3、人才購房高額補貼。大部分城市都在爭取人才,對於人才購房...
-
個人述職及自評怎麼寫
即將過去的xx年,領導對我工作的開展給予了極大的重視、信任和支持,作爲行政辦主管,主要職責是協助公司領導、配合辦公室主任作好公司內部事務的管理。向公司領導經營、決策提供可靠依據,爲股份公司下達各項指標的完成及時提供翔實的信息、數據,配合、協調各部(室)努力...
-
2023年婚前房子離婚如何分割
法律分析:夫妻一方婚前簽訂不動產買賣合同,以個人財產支付首付款並在銀行貸款,婚後用夫妻共同財產還貸,不動產登記於首付款支付方名下的,離婚時該不動產由雙方協議處理。不能達成協議的,人民法院可以判決該不動產歸產權登記一方,尚未歸還的貸款爲產權登記一方的個人債...
-
請問京東白條的利息是在怎麼算的
京東白條是收取每期的服務費的,也就是相當於利息吧,計算公式爲:每期分期服務費=消費本金×分期服務費率(月),白條分期服務費費率爲0.5%~1.2%之間,如果你的資質好的話,費率肯定會低一些的。每個人的白條的費率可能都不一樣,可以在手機上查看:登錄“京東金融App”首頁,找...