<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ù)  更多評論   

    主站蜘蛛池模板: 91免费精品国自产拍在线不卡| 成人免费无码H在线观看不卡| 又大又黄又粗又爽的免费视频 | 亚洲国产精品成人综合色在线| 亚洲国产成人久久综合野外| 免费黄网站在线观看| 激情亚洲一区国产精品| 亚洲成a人片在线观看日本麻豆| 日韩精品无码免费专区午夜不卡 | 国产免费人成视频在线播放播| 亚洲精品在线观看视频| 精品久久久久久久免费人妻 | 久久无码av亚洲精品色午夜| 久久精品国产亚洲5555| 97性无码区免费| 国产精品免费在线播放| 亚洲人和日本人jizz| 亚洲人妻av伦理| 99久久精品日本一区二区免费| 深夜A级毛片视频免费| 亚洲精品国产啊女成拍色拍| 免费人成在线观看视频播放| 中文字幕在线观看免费视频| 一本岛v免费不卡一二三区| 亚洲一级毛片免费在线观看| 国产亚洲情侣一区二区无码AV| 免费看黄视频网站| 国内精品免费久久影院| 亚洲国产成人精品无码区二本| 久久精品国产精品亚洲艾 | 亚洲高清免费在线观看| 亚洲一级特黄大片无码毛片 | 国产精品va无码免费麻豆| 日本免费电影一区二区| 免费看一级毛片在线观看精品视频| 久久精品国产亚洲av高清漫画| 久久久久噜噜噜亚洲熟女综合 | 亚洲精品国产啊女成拍色拍| 自拍偷自拍亚洲精品第1页 | 日本19禁啪啪无遮挡免费动图| 亚洲视频在线免费看|