国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Weblogic Server ant開發(fā)Web Service二(圖)

2019-11-18 12:53:54
字體:
供稿:網(wǎng)友

  3、在VB下調(diào)用Web Service
  
  下面我在VB環(huán)境下來調(diào)用下這個(gè)Web Service,筆者使用的是Visual Basic 6.0,要在VB下調(diào)用Web Service需要先安裝Microsoft SOAP toolkit。
  
  新建一個(gè)VB工程,然后把Microsoft Soap Type Library引用進(jìn)來,如下圖:
  
 Weblogic Server ant開發(fā)Web Service二(圖)(圖一)


  新建一個(gè)form1,添加一個(gè)按鈕command1,在form1源代碼窗口中整個(gè)拷貝如下代碼:
  
  Dim soap As MSSOAPLib.SoapClient
  PRivate Sub Command1_Click()
  
  MsgBox soap.sayHello()
  MsgBox soap.welcome("老Z")
  
  If Err <> 0 Then
  MsgBox "Web Service調(diào)用失敗: " + Err.Description
  End If
  End Sub
  
  Private Sub Form_Load()
  Set soap = New MSSOAPLib.SoapClient
  
  On Error Resume Next
  
  Call soap.mssoapinit("http://localhost:7001/WSDemo/HelloWorldWS?WSDL")
  
  If Err <> 0 Then
  MsgBox "初始化SOAP失敗: " + Err.Description
  End If
  
  End Sub
  
  然后運(yùn)行工程,點(diǎn)擊窗口上的按鈕就開始調(diào)用前面部署的Web Service(確保Weblogic Server在運(yùn)行中),成功的話會(huì)得到如下圖的兩個(gè)MessageBox:
  
 Weblogic Server ant開發(fā)Web Service二(圖)(圖二)
   Weblogic Server ant開發(fā)Web Service二(圖)(圖三)

  四、使用非內(nèi)建數(shù)據(jù)類型
  
  前面例子中的Web Service方法中使用的參數(shù)和返回值都是String,類似String,int等數(shù)據(jù)類型是屬于Weblogic web service所支持的內(nèi)建類型,關(guān)于Weblogic web service所支持的內(nèi)建數(shù)據(jù)類型請(qǐng)參見:http://e-docs.bea.com/wls/docs81/webserv/implement.Html#1054236
  
  所支持的xml非內(nèi)建類型請(qǐng)參見:
  
  http://e-docs.bea.com/wls/docs81/webserv/assemble.html#1060805
  
  所支持的java非內(nèi)建數(shù)據(jù)類型請(qǐng)參見:
  
  http://e-docs.bea.com/wls/docs81/webserv/assemble.html#1068595
  
  WebLogic Server能夠?qū)?nèi)建數(shù)據(jù)類型進(jìn)行XML與Java表示之間的轉(zhuǎn)換。但是,假如你在web service操作中使用了非內(nèi)建數(shù)據(jù)類型,那么你必須提供以下信息,以確保weblogic server能夠正確地進(jìn)行轉(zhuǎn)換。
  
  用于處理數(shù)據(jù)的Java表示與XML之間的轉(zhuǎn)換的序列化類;
  
  包含了數(shù)據(jù)類型Java表示的Java類;
  
  數(shù)據(jù)類型的XML Schema表示;
  
  web-services.xml部署描述文件中的數(shù)據(jù)類型映射信息。
  
  Weblogic Server中帶有servicegen和autotype Atn任務(wù),這兩個(gè)任務(wù)通過對(duì)web service的無狀態(tài)EJB或者Java類后端組件的內(nèi)省,從而自動(dòng)生成上述部件。上述Ant任務(wù)能夠處理許多非內(nèi)建數(shù)據(jù)類型,所以大多數(shù)的開發(fā)者并不需要手工生成上述的部件。
  
  有時(shí),你可能也需要手工去創(chuàng)建非內(nèi)建數(shù)據(jù)類型部件。因?yàn)槟愕臄?shù)據(jù)類型可能很復(fù)雜,以致Ant任務(wù)不能正確生成前述部件。你也可能想要自己控制數(shù)據(jù)在XML和Java表示之間的轉(zhuǎn)換過程,而不依靠Weblogic Server所使用的缺省轉(zhuǎn)換程序。
  
  本節(jié)將演示在Weblogic web service中如何處理非內(nèi)建(自定義)的數(shù)據(jù)類型。
  
  我們先編寫一個(gè)數(shù)值Bean類UserInfo,如下:
  
  package com.wnetw.ws.demo;
  
  import java.util.*;
  
  public class UserInfo{
  private Integer userid;
  private String username;
  private String sex;
  private Date birthday;
  private int level;
  private double salary;
  private telcodes list;
  
  public UserInfo(){}
  
  public Integer getUserid(){
  return userid;
  }
  
  public void setUserid(Integer userid){
  this.userid = userid;
  }
  
  public String getUsername(){
  return username;
  }
  
  public void setUsername(String username){
  this.username = username;
  }
  
  public String getSex(){
  return sex;
  }
  
  public void setSex(String sex){
  this.sex = sex;
  }
  
  public Date getBirthday(){
  return birthday;
  }
  
  public void setBirthday(Date birthday){
  this.birthday = birthday;
  }
  
  public int getLevel(){
  return level;
  }
  
  public void setLevel(int level){
  this.level = level;
  }
  
  public double getSalary(){
  return salary;
  }
  
  public void setSalary(double salary){
  this.salary = salary;
  }
  
  public List getTelcodes(){
  return telcodes;
  }
  
  public void setTelcodes (List telcodes){
  this. telcodes = telcodes;
  }
  
  }
  
  在前文中的后端組件類HelloWorldWS.java中增加一個(gè)方法:
  
  public UserInfo getUserInfo(Integer userid){
  UserInfo userinfo = new UserInfo();
  userinfo.setUserid(userid);
  userinfo.setUsername("李澤林");
  userinfo.setSex("男");
  userinfo.setBirthday(new Date());
  userinfo.setLevel(2);
  userinfo.setSalary(1000.51);
  List telcodes = new ArrayList();
  telcodes.add("123");
  telcodes.add("321");
  userinfo.setTelcodes (telcodes);
  return userinfo;
  }
  
  在這個(gè)方法里,返回值是UserInfo,這是我們前面定義的數(shù)值Bean,由于這是非內(nèi)建類型,而且也不屬于受支持的非內(nèi)建類型,所以需要我們必須自己來處理XML和UserInfo Java表示數(shù)據(jù)類型之間的轉(zhuǎn)換。
  
  在本文的例子中,我們使用Weblogic Server的autotype任務(wù)來做這件事情。我們先在build目錄建一個(gè)autotype目錄,然后在前文中ant完整腳本中的compile任務(wù)之后增加下述腳本:
  
  <target name="gentypeinfo">
  <autotype javatypes="com.wnetw.ws.demo.UserInfo"
  targetNamespace=""
  packageName="com.wnetw.ws.demo"
  destDir="/autotype"
  keepGenerated="true">
  <classpath refid="classpath"/>
  </autotype>
  <copy todir="/classes">
  <fileset dir="/autotype">
  <include name="**/*.class"/>
  </fileset>
  </copy>
  </target>  
  
  autotype Ant任務(wù)有幾個(gè)常用屬性,下面簡(jiǎn)要說明下:
  
  javatypes:需要進(jìn)行類型轉(zhuǎn)換的非內(nèi)建(自定義)數(shù)據(jù)類型java類,注重取值是全限定類名,不需要帶上java或者class擴(kuò)展名。假如存在多個(gè)這樣的數(shù)據(jù)類型類,用逗號(hào)“,”隔開;
  
  targetNamespace:在對(duì)數(shù)據(jù)類型映射到XML的時(shí)候使用的命名空間;
  
  packageName:生成的序列化相關(guān)類的封裝包;
  
  destDir:生成的序列化相關(guān)類存放的目錄;
  
  keepGenerated:是否保留中間java源文件,取值為:true或者false。
  
  關(guān)于autotype任務(wù)的具體信息請(qǐng)參考:
  
  http://e-docs.bea.com/wls/docs81/webserv/anttasks.html#1080062
  
  上述ant任務(wù)成功運(yùn)行后就會(huì)生成build/autotype/目錄下生成types.xml文件以及按包封裝的數(shù)據(jù)轉(zhuǎn)換類的源文件和class文件。
  
  由于增加了自定義數(shù)據(jù)類型,所以我們還得更新source2wsdd任務(wù)腳本,以下是增加了自定義數(shù)據(jù)類型處理后的source2wsdd任務(wù)腳本:
  
  <target name="genwsdd">
  <source2wsdd javaSource="/com/wnetw/ws/demo/HelloWorldWS.java"
  typesInfo="/autotype/types.xml"
  ddFile="/wsddfiles/web-services.xml"
  wsdlFile="/wsddfiles/HelloWorldWS.wsdl"
  serviceURI="/HelloWorldWS">
  <classpath refid="classpath"/>
  </source2wsdd>
  </target>
  
  跟以前的腳本相比,增加了typesInfo屬性來指定自定義數(shù)據(jù)類型的XML描述文件。
  
  增加了對(duì)自定義數(shù)據(jù)類型支持后的完整腳本請(qǐng)參考本文代碼下載文件。
  
  按照第一節(jié)所述方法運(yùn)行ant腳本build_wls_all.xml后,再部署buildpplications目錄下的HelloWorldWS.ear。就可以按照以前說的方法進(jìn)行測(cè)試了。
  
  這一次在Weblogic Server自動(dòng)生成的web service測(cè)試主頁:
  
  http://localhost:7001/WSDemo/HelloWorldWS
  
  可以發(fā)現(xiàn)多了一個(gè)叫g(shù)etUserInfo的方法連接,進(jìn)入此方法的調(diào)用測(cè)試頁面,調(diào)用此方法后就可以看到此web service方法的調(diào)用結(jié)果,以下是結(jié)果截圖:
  
 Weblogic Server ant開發(fā)Web Service二(圖)(圖四)

  從調(diào)用測(cè)試結(jié)果頁面可以看到,這一次的Return Value是:
  
  com.wnetw.ws.demo.UserInfod235
  
  這正是我們的web service方法返回值類型類型的一個(gè)對(duì)象,圖中的下面也以SOAP消息的形式描述了調(diào)用的輸入和返回結(jié)果。
  
  我們接著修改測(cè)試類HelloWorldWSTest.java,

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 崇仁县| 南漳县| 缙云县| 循化| 天峨县| 西平县| 铜梁县| 牡丹江市| 吉安市| 梓潼县| 景泰县| 葫芦岛市| 新乡县| 时尚| 西乡县| 甘谷县| 连州市| 绵竹市| 新泰市| 保德县| 齐齐哈尔市| 玉环县| 县级市| 泊头市| 大竹县| 新乡县| 嘉鱼县| 简阳市| 横山县| 盐源县| 阜南县| 淮南市| 任丘市| 师宗县| 仪征市| 屏边| 娱乐| 陇南市| 达日县| 岳普湖县| 六枝特区|