欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
轉 axis 自定義對象序列化--阿甘正傳

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

1. 在A(yíng)xis服務(wù)端,注冊自定義對象的序列化/反序列化器
主要是修改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中定義使用那個(gè)類(lèi), qname定義類(lèi)的名稱(chēng)。

2.  在A(yíng)xis客戶(hù)端,注冊自定義對象的序列化/反序列化器。

核心代碼如下:
//創(chuàng  )建調用對象
Service service = new Service();
Call call = null;
call = (Call) service.createCall();
 
//注冊SimpleObject的序列化類(lèi)型
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
//服務(wù)程序
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
//客戶(hù)端調用文件
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  )建調用對象
                     Service service = new Service();
                     Call call = null;
                     call = (Call) service.createCall();                

                     //注冊SimpleObject的序列化類(lèi)型
                     QName qn = new QName("urn:BeanService","SimpleObject");
                     call.registerTypeMapping(SimpleObject.class, qn,
                                   new BeanSerializerFactory(SimpleObject.class, qn),
                                   new BeanDeserializerFactory(SimpleObject.class, qn));
                     //調用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);
                     //調用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);                 

                     //調用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
//服務(wù)端配置文件
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns:java="xmlns="
<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中是一個(gè)默認選項。當你部署的時(shí)候使用下列兩種方式:<service ... provider="java:RPC"> 或則 <service ... style="RPC">,它遵循SOAP RPC和編碼規則,就是說(shuō)它的WSDL文件形式就想上面所說(shuō)的HelloServicewsForSoapechoString一樣。每個(gè)RPC都包括一個(gè)表示名稱(chēng)的外部接點(diǎn)和一些表示參數的內部接點(diǎn)。AXIS會(huì )根據規則將一個(gè)XMLWSDL文件)文件轉化成一個(gè)JAVA對象,并對對想賦上在文件中描述的值。也可以根據規則將一個(gè)JAVA對象轉化成XML文件。

Document

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

Wrapped

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

在大多書(shū)情況下,你不許要擔心是DOCUMENT服務(wù)還是WRAPPED服務(wù)。

Message

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

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

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

public Document method(Document body);

public void method(SOAPEnvelope req, SOAPEnvelope resp);

 

打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
利用AXIS開(kāi)發(fā)Webservice(四) —— 如何拋出自定義異常
Java Web Service之客戶(hù)端實(shí)現-schnell18 -JavaEye技術(shù)社區
服務(wù)調用及deploy.wsdd
WebService大講堂之Axis2(2):復合類(lèi)型數據的傳遞
JAVA客戶(hù)端通過(guò)SOAP與NET的WebServices進(jìn)行通信
java通過(guò)axis訪(fǎng)問(wèn).net webService 簡(jiǎn)單例子 - - JavaEye技術(shù)網(wǎng)站
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久