• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        Java與.NET 的Web Services相互調用

        Java與.NET 的Web Services相互調用

        更新時間:2022-05-08 文章作者:未知 信息來源:網絡 閱讀次數:

        一:簡介

        本文介紹了Java與.NET開發的Web Services相互調用的技術。本文包括兩個部分,第一部分介紹了如何用.NET做客戶端調用Java寫的Web Services,第二部分介紹了如何用Java做客戶端調用.NET開發的Web Services。



        二:項目需要的工具

        Windows2000 Server(IIS)

        Jbuilder9.0( 含有Tomcat , axis)

        JDK1.4+Java Web Services Develop

        VS.Net 2003

        備注:如果沒有JBuilder的話就需要自己下載安裝Tomcat4.1 以及 Axis的開發包,并做相應配置。由于網上有很多這樣的文章,這里就不一一說明了。



        三:用.NET做客戶端調用Java寫的Web Services

        1. 生成一個Java Web Services

        使用JBuilder 生成一個Web Services是非常簡單的,我完全是按照它的幫助做的,只要一步步做

        下去就可以了。具體路徑是Developing Web Services -> tutorials : Web Services(Axis) -> Creating a simple Web Services

        2. 發布這個Web Services并得到它的WSDL

        Web Services生成好之后,F9運行這個項目。然后,單擊View瀏覽現有的Web 服務,單擊Bean1的WSDL連接,我們可以在瀏覽器中察看它的WSDL描述。在瀏覽器地址欄復制WSDL地址,為下一步使用.NET開發客戶端調用程序做準備。

        3. 用VS.NET生成一個.NET的客戶端

        新建一個項目(WinForm,ASP.net都可以),我在這里使用的是一個Asp.Net項目。在起始頁面上放置一個文本輸入框用來顯示調用Web Services的結果,放置一個按鈕,用來單擊調用Web Services。然后,選擇添加Web 引用,在WSDL一欄中把剛才得到的WSDL地址復制過來,Web 引用的名稱輸入JavaService,單擊添加引用按鈕就可以了。此時,我們可以在VS.net 的Solution Explore中看到這個Web 引用。

        在按鈕的單擊事件中輸入下列代碼:

        JavaService.Bean1 bean = new JavaService.Bean1();

        TextBox1.Text = bean.getSample.ToString ();



        這樣,一個.NET客戶端就完成了,測試一下,工作正常,OK.



        四:用Java做客戶端調用.NET寫的 Web Services

        有了上面的成功,使我以為用Java做客戶端調用也是一件十分容易的事情,可實際情況卻耗費了我兩天時間才得以實現。

        1. 用VS.NET新建一個Asp Web Services工程,添加一個web 服務,命名為SumService.asmx。新增一個web method,代碼如下:

        [WebMethod]

        public int IntAdd(int a,int b)

        {

        return a+b ;

        }

        然后運行它,并利用IE進行測試成功。

        2. 打開jbuilder9.0,新建一個項目,添加一個java class ,命名為TestNetService,輸入下列代碼:

        package MyWebServiceJavaClient;

        import java.util.Date;

        import java.text.DateFormat;

        import java.util.Date;

        import java.text.DateFormat;

        import org.apache.axis.client.Call;

        import org.apache.axis.client.Service;

        import javax.xml.namespace.QName;

        import java.lang.Integer;

        import javax.xml.rpc.ParameterMode;



        /**

        * <p>Title: </p>

        * <p>Description: </p>

        * <p>Copyright: Copyright (c) 2004</p>

        * <p>Company: </p>

        * @author not attributable

        * @version 1.0

        */



        public class TestNetService {

        public TestNetService() {

        }



        public static void main(String[] args) {

        try {

        Integer i = new Integer(1);

        Integer j = new Integer(2);

        String endpoint="http://localhost/MyServices/WebServiceTest/SumService.asmx";



        Service service = new Service();

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



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

        call.setOperationName(new QName("http://www.my.com/SU","IntAdd"));



        call.addParameter("a",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);

        call.addParameter("b",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);

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

        call.setUseSOAPAction(true);

        call.setSOAPActionURI("http://www.my.com/Rpc");





        Integer k = (Integer)call.invoke(new Object[]{i,j});



        System.out.println( "result is " + k.toString() + ".");

        }

        catch (Exception e) {System.err.println(e.toString());}

        }



        }



        運行上面的java客戶端程序,你會發現系統會拋出一個SoapAction異常。奇怪,怎么會錯誤呢?想到了我開發的asp web services沒有指定SoapAction,于是在SumService.asmx中的 [web method] 的上一行添加下列代碼:

        [SoapRpcMethod(Action="http://www.my.com/Rpc",RequestNamespace="http://www.my.com/SU",ResponseNamespace="http://www.my.com/SU")]

        重新編譯運行asp web services后,在執行java程序,這時會發現輸出了正確的結果3。

        這樣,用java調用.net生成的web services也算初步完成了,好像也不是很復雜是吧。其實,在實際工作中,我一開始并沒有在網上找到一個很好的代碼例子,全部是依靠jbuilder 和 axis的幫助完成的, 可總是提示什么找不到相應的SoapAction。而實際上,我在運行了asp web services后是可以在IE瀏覽器中看到那個SoapAction的。我試驗過將默認的SoapAction拷貝到java代碼中,但是java客戶端依然拋出同樣的異常,這要我也很迷惑。



        五:總結

        經過兩天的試驗,終于從技術上明確了通過Web Services實現.net 與 java的互通是可能的。當然有幾點是需要注意的:

        1. 在提供Web Services的時候,盡量使用xml schema中支持的變量類型做參數。如果使用.net 中的dataset這種類型,對于java來說解析起來將是一個災難,當然,理論上是可以解析的。但是從效率角度來說,在Web Services與客戶端交換信息的過程中,始終有一個序列化和反序列化的問題。如果使用dataset這種類型,系統還需要對它進行序列化操作,這將是一個很耗費資源的過程。而使用string類型將簡單很多。

        2. 如果使用了soap header等擴展功能,例如使用了微軟提供的WSE技術,它們之間的相互通信需要作特殊處理。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲综合久久综合激情久久| 亚洲国产中文在线二区三区免| 国产成人高清精品免费鸭子| 亚洲视频在线精品| 久久久久亚洲精品天堂| 成年女人A毛片免费视频| 青青视频观看免费99| 亚洲无码精品浪潮| 精品女同一区二区三区免费播放| 精品国产麻豆免费人成网站| 日韩在线免费播放| 亚洲黄网站wwwwww| 九九免费观看全部免费视频| 成人免费视频77777| 国产v亚洲v天堂无码网站| 亚洲国产精品自在自线观看| 无码av免费网站| 亚洲精品国产V片在线观看| 亚洲AV无码乱码麻豆精品国产| 中文字幕免费在线看| 亚洲精品成人无限看| 特黄特色大片免费| 成人免费a级毛片无码网站入口 | 色噜噜亚洲男人的天堂| 国产精品永久免费| 免费观看国产精品| 亚洲娇小性xxxx| 热99re久久精品精品免费| 亚洲成人在线免费观看| 免费观看在线禁片| 久久精品亚洲AV久久久无码| 好男人看视频免费2019中文| 在线亚洲精品视频| 亚洲AV永久无码精品成人| av网站免费线看| 日韩亚洲Av人人夜夜澡人人爽| 最近2019中文字幕免费看最新| 国产天堂亚洲国产碰碰| 亚洲AV无码乱码在线观看富二代| 日韩视频在线精品视频免费观看 | 国产AV无码专区亚洲A∨毛片|