<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    lqxue

    常用鏈接

    統(tǒng)計(jì)

    book

    tools

    最新評論

    java的call基于document/literal的webservice

    WSDL

    <definitions
         
    name="HelloWorld"
         targetNamespace
    ="http://xmlns.oracle.com/HelloWorld"
         xmlns
    ="http://schemas.xmlsoap.org/wsdl/"
         xmlns:plnk
    ="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
         xmlns:soap
    ="http://schemas.xmlsoap.org/wsdl/soap/"
         xmlns:client
    ="http://xmlns.oracle.com/HelloWorld"
        
    >
        
    <types>
            
    <schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/HelloWorld"
                 xmlns
    ="http://www.w3.org/2001/XMLSchema">
                
    <element name="HelloWorldProcessRequest">
                    
    <complexType>
                        
    <sequence>
                            
    <element name="input" type="string"/>
                        
    </sequence>
                    
    </complexType>
                
    </element>
                
    <element name="HelloWorldProcessResponse">
                    
    <complexType>
                        
    <sequence>
                            
    <element name="result" type="string"/>
                        
    </sequence>
                    
    </complexType>
                
    </element>
            
    </schema>
        
    </types>
        
    <message name="HelloWorldRequestMessage">
            
    <part name="payload" element="client:HelloWorldProcessRequest"/>
        
    </message>
        
    <message name="HelloWorldResponseMessage">
            
    <part name="payload" element="client:HelloWorldProcessResponse"/>
        
    </message>
        
    <portType name="HelloWorld">
            
    <operation name="process">
                
    <input message="client:HelloWorldRequestMessage"/>
                
    <output message="client:HelloWorldResponseMessage"/>
            
    </operation>
        
    </portType>
        
    <binding name="HelloWorldBinding" type="client:HelloWorld">
            
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
            
    <operation name="process">
                
    <soap:operation style="document" soapAction="process"/>
                
    <input>
                    
    <soap:body use="literal"/>
                
    </input>
                
    <output>
                    
    <soap:body use="literal"/>
                
    </output>
            
    </operation>
        
    </binding>
        
    <service name="HelloWorld">
            
    <port name="HelloWorldPort" binding="client:HelloWorldBinding">
                
    <soap:address location="http://robin:9700/orabpel/default/HelloWorld/1.0"/>
            
    </port>
        
    </service>
      
    <plnk:partnerLinkType name="HelloWorld">
        
    <plnk:role name="HelloWorldProvider">
          
    <plnk:portType name="client:HelloWorld"/>
        
    </plnk:role>
      
    </plnk:partnerLinkType>

    </definitions>


    Java 代碼:
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.rmi.RemoteException;
    import java.util.Vector;

    import javax.xml.namespace.QName;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.FactoryConfigurationError;
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.rpc.ServiceException;

    import org.apache.axis.client.Call;
    import org.apache.axis.constants.Style;
    import org.apache.axis.message.SOAPBodyElement;
    import org.apache.xml.serialize.DOMSerializerImpl;
    import org.apache.xml.serialize.OutputFormat;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;

    public class BPELServiceTest {
          
    //service的命名空間
        static final String ns = "http://xmlns.oracle.com/HelloWorld";

        
    public static void main(String args[]){
            Call call 
    = null;
            
    try {
                call 
    = createCall();
                Vector rtn 
    = (Vector) call.invoke(createRequest());
                parse(rtn);
            }
     catch (MalformedURLException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }
     catch (RemoteException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }
     catch (ParserConfigurationException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }
     catch (FactoryConfigurationError e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }
     catch (Exception e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }


        }


          
    /*       * 創(chuàng)建Call對象,對設(shè)置相關(guān)屬性,注意:其中的屬性應(yīng)該是通過分析WSDL文件由程序動(dòng)態(tài)獲得來賦值,       * 這里全部簡化為靜態(tài)賦值       */
        
    static Call createCall() throws MalformedURLException, ServiceException{
            org.apache.axis.client.Service s 
    = new org.apache.axis.client.Service();
            Call call 
    = (Call) s.createCall();
            call.setTargetEndpointAddress(
    new URL("http://robin:9700/orabpel/default/HelloWorld/1.0"));
            call.setSOAPActionURI(
    "process");
            call.setOperationName(
    "process");
            call.setProperty(Call.OPERATION_STYLE_PROPERTY, Style.DOCUMENT.getName());
            call.setPortName(
    new QName(ns, "HelloWorldPort"));
            call.setPortTypeName(
    new QName(ns, "HelloWorld"));

            
    return call;
        }


          
    /*       *創(chuàng)建請求參數(shù),實(shí)際上就是構(gòu)建DOM片斷,根據(jù)Web service對輸入?yún)?shù)的要求來構(gòu)建,要多復(fù)雜,都可以實(shí)現(xiàn),       *這就是Docuemnt的好處,省去了復(fù)雜對象的序列化。       */
        
    static Object[] createRequest() throws ParserConfigurationException, FactoryConfigurationError{
            DocumentBuilder db 
    = DocumentBuilderFactory.newInstance().newDocumentBuilder();
            Document doc 
    = db.newDocument();
            Element root 
    = doc.createElementNS(ns, "HelloWorldProcessRequest");
            Element input 
    = doc.createElementNS(ns, "input");
            input.appendChild(doc.createTextNode(
    "robin"));
            root.appendChild(input);
            doc.appendChild(root);

            
    return new Object[]{new SOAPBodyElement(root)};
        }


          
    // 對返回結(jié)果進(jìn)行解析,并打印。
        static void parse(Vector v) throws Exception{
            Document doc 
    = ((SOAPBodyElement) v.get(0)).getAsDocument();
            Element root 
    = doc.getDocumentElement();
            OutputFormat of 
    = new OutputFormat();
            of.setIndent(
    4);
            System.out.println(
    new DOMSerializerImpl().writeToString(root));
        }

    }



    上述代碼運(yùn)行輸出結(jié)果為:

    <?xml version="1.0"?>
    <HelloWorldProcessResponse xmlns="http://xmlns.oracle.com/HelloWorld">
    <result xmlns="http://xmlns.oracle.com/HelloWorld">robin</result>
    </HelloWorldProcessResponse>



    上面的代碼很簡單,需要說明的是:采用Document調(diào)用,實(shí)際上invoke方法的參數(shù)是一個(gè)元素類型為SOAPBodyElement的對象數(shù)組,而返回結(jié)果是一個(gè)元素類型的SOAPBodyElement的Vector對象。

     

    From:http://www.javaeye.com/topic/138876

    posted on 2008-05-26 11:09 lqx 閱讀(1547) 評論(1)  編輯  收藏 所屬分類: web service

    評論

    # re: java的call基于document/literal的webservice 2008-06-02 15:01 liguoxin

    很不錯(cuò)的,不知道用java調(diào).net寫的web service是不是也只這樣寫的。.net的web service不就是document的嗎  回復(fù)  更多評論   

    主站蜘蛛池模板: 久久亚洲高清综合| 亚洲综合无码一区二区| 亚洲色大成网站www尤物| 亚洲人成电影网站色www| A级毛片成人网站免费看| 18禁无遮挡无码网站免费| 亚洲色中文字幕无码AV| 亚洲中文字幕一二三四区| 日本精品人妻无码免费大全| 亚洲国产系列一区二区三区| 免费毛片在线看不用播放器| 天天摸天天碰成人免费视频| 激情五月亚洲色图| 日本a级片免费看| 亚洲av色福利天堂| 99爱在线精品免费观看| 亚洲精品天堂成人片AV在线播放| 1000部免费啪啪十八未年禁止观看| 亚洲Av无码国产情品久久| 一级做α爱过程免费视频| 亚洲av永久无码精品网站| 美丽的姑娘免费观看在线播放| 色偷偷女男人的天堂亚洲网| 又大又硬又爽免费视频| yellow视频免费看| 亚洲综合免费视频| 日韩视频免费在线| a级毛片免费完整视频| 亚洲女人初试黑人巨高清| 在线观看免费大黄网站| 一日本道a高清免费播放| 2022年亚洲午夜一区二区福利 | 男女拍拍拍免费视频网站| 亚洲国产综合91精品麻豆| 成人一a毛片免费视频| 一个人看的www免费在线视频| 亚洲尹人九九大色香蕉网站| 成年女人午夜毛片免费看| 成在线人免费无码高潮喷水| 亚洲国产成人久久一区久久| 99蜜桃在线观看免费视频网站|