乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      轉(zhuǎn) axis 自定義對象序列化--阿甘正傳

       jimmylin88cn 2007-05-19

      基于Axis的自定義對象序列化

      1. 在Axis服務端,注冊自定義對象的序列化/反序列化器
      主要是修改axis安裝目錄下WEB-INF/server-config.wsdd文件。

      <service name="SimpleObjectService" provider="java:RPC">
        <parameter name="allowedMethods" value="*"/>
      
        <parameter name="className" value="com.whcyit.axis.SimpleObjectService"/>
        <beanMapping languageSpecificType="java:com.whcyit.axis.SimpleObject" 
      	qname="ns:SimpleObject" xmlns:ns="urn:BeanService"/>
      </service>
      
      注意service/beanMapping的定義。languageSpecificType中定義使用那個類, qname定義類的名稱。

      2.  在Axis客戶端,注冊自定義對象的序列化/反序列化器。

      核心代碼如下:
      //創(chuàng)建調(diào)用對象
      Service service = new Service();
      Call call = null;
      call = (Call) service.createCall();
       
      //注冊SimpleObject的序列化類型
      QName qn = new QName("urn:BeanService","SimpleObject");
      call.registerTypeMapping(SimpleObject.class, qn,
              new BeanSerializerFactory(SimpleObject.class, qn),
              new BeanDeserializerFactory(SimpleObject.class, qn));
      
      全部代碼示例如下:
      
      
      //SimpleObject.java
      //Web Service對象傳遞的對象,必需繼承Serializable
      package com.whcyit.axis;
      import java.io.Serializable;
      public class SimpleObject implements Serializable {
             private static final long serialVersionUID = -6414428095965735488L;
             private int i = 0;
             private float f = 0.0f;
             private String str = "";
             public SimpleObject() { 
             }
             public float getFloat() {
                    return f;
             }
             public void setFloat(float f) {
                    this.f = f;
             }       public int getInt() {
                    return i;
            }
      
             public void setInt(int i) {
      
                    this.i = i;
      
             }
      
             public String getString() {
      
                    return str;
             }
             public void setString(String str) {
                    this.str = str;
      
             }
      
      }

      // SimpleObjectService.java
      
      //服務程序
      
      package com.whcyit.axis;
      
      public class SimpleObjectService {
             public String sayHello(String name) {
                    return "Hello " + name +"!";
             }
       
             public String getString(SimpleObject obj) {
                    System.out.println("SimpleObjectService getString invoked!");
      
                    return "return by serviced:"+obj.getString();
             }
             public SimpleObject createSimpleObject(int i,float f,String str) {
                    System.out.println("SimpleObjectService createSimpleObject invoked!");
                    SimpleObject so = new SimpleObject();
                    so.setInt(i);
                    so.setFloat(f);
      
                    so.setString(str);
      
                    return so;
      
             }
       }
       
      // SimpleObjectClient.java
      //客戶端調(diào)用文件
      
      package com.whcyit.axis;
      
      import javax.xml.namespace.QName;
      
      import org.apache.axis.client.Call;
      
      import org.apache.axis.client.Service;
      
      import org.apache.axis.encoding.ser.BeanDeserializerFactory;
      import org.apache.axis.encoding.ser.BeanSerializerFactory;
      public class SimpleObjectClient {
             public static void main(String[] args) {
                    String ret = "";
                    try {
                           String wsdlUrl = "http://localhost:8080/axis/services/SimpleObjectService?wsdl";
      
      		   String nameSpaceUri = "http://localhost:8080/axis/services/SimpleObjectService";
      
                           //創(chuàng)建調(diào)用對象
      
                           Service service = new Service();
      
                           Call call = null;
      
                           call = (Call) service.createCall();                

                           //注冊SimpleObject的序列化類型
      
                           QName qn = new QName("urn:BeanService","SimpleObject");
                           call.registerTypeMapping(SimpleObject.class, qn,
      
                                         new BeanSerializerFactory(SimpleObject.class, qn),
      
                                         new BeanDeserializerFactory(SimpleObject.class, qn));
      
                           //調(diào)用sayHello
                           System.out.println(">>>sayHello");
                           call.setOperationName(new QName(nameSpaceUri, "sayHello"));
      
                           call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));
      
                           ret = (String) call.invoke(new Object[] { "liu2" });
                           System.out.println("return value is " + ret);
                           //調(diào)用getDesc
      
                           System.out.println(">>>getString");
      
                           SimpleObject so = new SimpleObject();
      
                           so.setString("hello!");
      
                           QName getDescQn = new QName(nameSpaceUri, "getString");
      
                           call.setOperationName(getDescQn);
                           call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));
      
                           ret = (String) call.invoke(new Object[] { so });
      
                           System.out.println("return value is " + ret);                 

                           //調(diào)用createSimpleObject
                           System.out.println(">>>createSimpleObject");
      
                           QName getObjectQn = new QName(nameSpaceUri, "createSimpleObject");
      
                           call.setOperationName(getObjectQn);
      
                           call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));
      
                           SimpleObject rtnSO = (SimpleObject) call.invoke(new Object[] { new Integer(1),new Float(0.1f),"liu2" });
      
                           System.out.println("return object " + rtnSO.getString());
      
                    } catch (Exception ex) {
      
                           ex.printStackTrace();
      
                    }
      
            }
      
      }
      //server-config.wsdd
      
      //服務端配置文件
      <?xml version="1.0" encoding="UTF-8"?>
      <deployment xmlns:java="http://xml./axis/wsdd/providers/java"
      xmlns="http://xml./axis/wsdd/">
      <handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/>
       <service name="SimpleObjectService" provider="java:RPC">
      
        <parameter name="allowedMethods" value="*"/>
      
        <parameter name="className" value="com.whcyit.axis.SimpleObjectService"/>
      
        <beanMapping languageSpecificType="java:com.whcyit.axis.SimpleObject" 
      	qname="ns:SimpleObject" xmlns:ns="urn:BeanService"/>
       </service>
      <transport name="http">
      <requestFlow>
      <handler type="URLMapper"/>
      </requestFlow>
      </transport>
      </deployment>

      Service Styles

      AXIS有四種service styles,分別是:RPC, Document, Wrapped, and Message。最常用的就是RPCMessage

      RPCAXIS中是一個默認選項。當你部署的時候使用下列兩種方式:<service ... provider="java:RPC"> 或則 <service ... style="RPC">,它遵循SOAP RPC和編碼規(guī)則,就是說它的WSDL文件形式就想上面所說的HelloServicewsForSoapechoString一樣。每個RPC都包括一個表示名稱的外部接點和一些表示參數(shù)的內(nèi)部接點。AXIS會根據(jù)規(guī)則將一個XMLWSDL文件)文件轉(zhuǎn)化成一個JAVA對象,并對對想賦上在文件中描述的值。也可以根據(jù)規(guī)則將一個JAVA對象轉(zhuǎn)化成XML文件。

      Document

      以下列方式部署:<service ... style="document"><service ... style="document">。適合于老的XML schema。

      Wrapped

      以下列方式部署:<service ... style="wrapped"><service ... style="wrapped"> DOCUMENT一樣,適合于老的XML schema。

      在大多書情況下,你不許要擔心是DOCUMENT服務還是WRAPPED服務。

      Message

      以下列方式部署:<service name="MessageService" style="message">。以這種方式部署的話,會是AXIS失去意義,它使你的代碼真正的用XML形式,而不需要轉(zhuǎn)化成JAVA對象。以這種方式部署的有以下四種服務方法:

      public Element [] method(Element [] bodies);

      public SOAPBodyElement [] method (SOAPBodyElement [] bodies);

      public Document method(Document body);

      public void method(SOAPEnvelope req, SOAPEnvelope resp);

       

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多