在java ee項目中有一對密碼進行加密解密的算法,需要在局域網中有.net系統的機器上遠程調用該算法,自然而然想到了
webservice,由於之前沒了解過webservice的相關知識,更不清楚其原理,百度了一大堆也沒能解決知識,這裏說下具體的遠程調用方法:
webservice相當於中間接口,如果之前類的結構不是用的接口方式,需要改造下,webservice是按照接口中的public方法生成的,
也即生成dll文件後只有接口中的幾個方法,但這些方法的實現並沒有在dll文件中,webservice只是一個橋樑作用,當.net使用dll中的方法時
,會通過webservice去遠程調用java中的相應函數
項目(右鍵)--->Myeclipse---->Add XFire Web Service Capabilities..-----> 打開生成的WebServices目錄----->修改
sevices.xml
services.xml修改方法如下:
在<beans></beans>中添加<service>
<name>類名</name>
<namespace>命名空間</namespace>
<serviceClass>接口類地址</serviceClass>
<implementationClass>實現接口類地址
</implementationClass>
</service>
打開項目web.xml可以看到Myeclipse已經爲我們生成好了相關配置,在瀏覽器中輸入以下地址:http://localhost:端口/項目名
稱/services/javaws?wsdl ,如果頁面中出現xml內容表示webservice接口生成成功(注:有的瀏覽器可能不會顯示,可以用瀏覽器查看源碼),
在瀏覽器上把該頁面另存爲 xx.wsdl文件
到這一步已經完成了java到webservice的轉換,下邊就是.net對該文件的使用,實際上對於wsdl文件,任何語言都可以通用的。
打開visual studio 命令提示符---->選擇到存放xx.wsdl文件目錄(這裏比如說在d盤下存放了javaws.wsdl文件) --->輸入以下命令
:wsdl /n:wyq /out:javaws.cs javaws.wsdl(注:注意中間見得空格,每個/之前都會有個空格,/n:命名空間,/out:輸出文件)------>命令執
行無錯後我們可以在d盤下看到多長javaws.cs文件----------->輸入命令:csc /out:javaws.dll /t:library javaws.cs(注:/out:dll文件名稱
,javaws.cs一定要與上一步輸出的cs文件名一致),大家可以看到d盤下有多了javaws.dll文件,好了,可以在本機打開visual studio添加對該
dll的引用,使用時添加using namespace +命令中/n後邊的值,例如:這裏是using namespace wyq;大家還記得在services.xml中配置的<name>
類名</name>,實例化該類就可以調用方法了
也許到這裏你已經成功在本機調用了方法,但是你想,如果局域網中的其他機器想用這個dll呢?直接把dll文件拷貝過去行嗎?答案
是肯定不行的,如果想在其他機器上使用java方法,第一種方法:在visual studio命令提示符對wsdl進行轉換時,wsdl: /n:wyq /out
javaws.cs http://192.168.1.104:8080/wyqldtec/services/javaws?wsdl即可
第二種方法是在visual studio中添加web引用即可