?這一篇將要解決java中調用wcf的問題,使用的依舊是上一篇中托管在iis中的wcf服務,本來我是打算用axis來寫這篇文章的,可就在我開始之前,無意中發現了在java包中自帶的wsimport工具,用起來是極為爽快,而且也節省了配置axis的時間。所以,就它吧
其實在有了wsimport,在java調用wcf的時候是極為簡單的,當然這是建立在使用不太復雜的服務的情況下,如果還要考慮安全驗證、發布訂閱等問題,還是相對復雜的,但是這三篇文章沒準備寫那么多,只是想能把跨平臺這三個字真的應用在實踐中。起一個拋磚引玉的作用吧。
1.開發必備
這么說,只要是做java開發的,都不用看這一個章節啦,jdk+eclipse,甚至可以不使用eclipse,因為上面提到的wsimport工具是在java安裝后的bin目錄的一個可執行程序。如果鑰匙使用axis,eclipse才是必須的。
2.生成wcf客戶端
使用的就是上面提到的wsimport,如果您正確的配置了java環境變量,就可以直接在控制臺中使用了,簡歷文件夾x:/workspace/employeemanager/client
打開命令行,cd到以上建立的目錄x:/workspace/employeemanager/,然后執行命令:
import –s client http://192.168.11.1/emp/employeemanagement.svc?wsdl,然后就會發現在目錄下生成了若干文件,其中有對應的java實體類文件,比如employee.java,還有復雜生成實體的objectfactory,因為在這里使用的不是基礎類型string、int等,而是類jaxbelement<salarydetail>這樣的類型,objectfactory可以幫助我們生成這些類型。
3.開發程序
1.在eclipse中新建java項目,例如testproject
2.右鍵項目中的src文件夾,選擇import
3.點擊general中的file system,單擊next
4.在下一步中點擊剛簡歷的目錄,并全選所有文件夾
5.新建測試文件test.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
import org.datacontract.schemas._2004._07.contracts.*; import com.microsoft.schemas._2003._10.serialization.*; import org.tempuri.*; public class test { /** * @param args */ public static void main(string[] args) { //使用objectfactory幫助生成實體類對象 org.datacontract.schemas._2004._07.contracts.objectfactory factory= new org.datacontract.schemas._2004._07.contracts.objectfactory(); employee emp=factory.createemployee(); //設置屬性,同樣使用objectfactory幫助設置,因為這里的類型有別與基礎類型 emp.setid(factory.createemployeeid( "dev001" )); emp.setname(factory.createemployeename( "james white" )); emp.setdepartment(factory.createemployeedepartment( "development" )); //調用的方法略顯古怪,需要注意 employeemanagement empmanagement= new employeemanagement(); iemployeemanagement iempmanagement=empmanagement.getbasichttpbindingiemployeemanagement(); salarydetail salarydetail=iempmanagement.getsalaryoflastmonth(emp); //輸出結果 system.out.println( "employee id:" +salarydetail.getid().getvalue()); system.out.println( "salary date:" +salarydetail.getdate().getmonth()); system.out.println( "salary:" +salarydetail.getsalary().tostring()); } } |
運行程序,出結果
4.結束語
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://www.cnblogs.com/xiaoyaojian/articles/2752779.html