佳麗斯 加厚雙人/單人秋冬被子暖冬 羊毛被芯羊毛柔絲被特價(jià)包郵 憂(yōu)憂(yōu)魚(yú)冬外穿打底褲女秋冬厚長(zhǎng)褲女褲加絨加厚高腰彈力鉛筆褲靴褲 韓國(guó)代購(gòu)2013新款 韓版秋冬休閑女時(shí)尚磨破口袋衛(wèi)衣韓版學(xué)生裝 潮

          有時(shí),退一步,能一口氣進(jìn)幾步,只是這先退一步需要勇氣和自信。

          用心愛(ài)你,努力工作。

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            70 隨筆 :: 1 文章 :: 33 評(píng)論 :: 0 Trackbacks

          #

          之前的例子比較簡(jiǎn)單,打算了解一下Spring的基本用法。Spring的依賴(lài)注入有三種實(shí)現(xiàn)方式,常用是setter和construct方式。對(duì)于像數(shù)組和集合對(duì)象注入,注入前必須填充一些對(duì)象到集合中,然后再把集合注入到Bean,采用setter方式來(lái)完成。
          通過(guò)一個(gè)例子來(lái)說(shuō)明。
          導(dǎo)入Spring所需的包:commons-logging.jar,spring.jar 。(日志包和Spring包)
          包下載地址:
          http://www.ziddu.com/download/3555993/Spring.rar.html
          (1)創(chuàng)建ObjectSet類(lèi)
          package com.set;

          public class ObjectSet {
           private String name;

           public String getName() {
            return name;
           }
           public void setName(String name) {
            this.name = name;
           }
           public String toString()
           {
            return name;
           }
          }
          (2)創(chuàng)建SomeBean類(lèi)
          package com.set;

          import java.util.List;
          import java.util.Map;

          public class SomeBean {
           private String[] someStrArray;
           private ObjectSet[] someObjArray;
           private List someList;
           private Map someMap;
           public SomeBean()
           {}
           public List getSomeList() {
            return someList;
           }
           public void setSomeList(List someList) {
            this.someList = someList;
           }
           public Map getSomeMap() {
            return someMap;
           }
           public void setSomeMap(Map someMap) {
            this.someMap = someMap;
           }
           public ObjectSet[] getSomeObjArray() {
            return someObjArray;
           }
           public void setSomeObjArray(ObjectSet[] someObjArray) {
            this.someObjArray = someObjArray;
           }
           public String[] getSomeStrArray() {
            return someStrArray;
           }
           public void setSomeStrArray(String[] someStrArray) {
            this.someStrArray = someStrArray;
           }
          }
          (3)在類(lèi)路徑下,創(chuàng)建set-config.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
          <beans>
          <bean id="first_object" class="com.set.ObjectSet" >
           <property name="name">
              <value>ducklyl</value>
           </property>
          </bean>
          <bean id="second_object" class="com.set.ObjectSet" >
           <property name="name">
              <value>wangsp</value>
           </property>
          </bean>

          <bean id="someBean" class="com.set.SomeBean" >
           <property name="someStrArray">
              <list>
               <value>Hello</value>
               <value>Welcome</value>
              </list>
           </property>
           <property name="someObjArray">
            <list>
             <ref bean="first_object"/>
             <ref bean="second_object"/>
            </list>
           </property>
           <property name="someList">
            <list>
             <value>ListTest</value>
             <ref bean="first_object"/>
             <ref bean="second_object"/>
            </list>
           </property>
           <property name="someMap">
            <map>
             <entry key="first">
              <value>Hello,ducklyl!</value>
             </entry>
             <entry key="second">
              <ref bean="first_object"/>
             </entry>
            </map>
           </property>
          </bean>
          </beans>
          (4)創(chuàng)建測(cè)試類(lèi)SpringTest

          package com.set;

          import org.springframework.context.ApplicationContext;
          import org.springframework.context.support.FileSystemXmlApplicationContext;
          import java.util.*;

          public class SpringTest {
           public static void main(String[] args)
           {
           //讀取配置文件
           ApplicationContext context=new FileSystemXmlApplicationContext("set-config.xml");
           //獲取id="setBean"對(duì)象
           SomeBean someBean=(SomeBean)context.getBean("someBean");
           
              //獲取someStrArray,someObjArray
           String[] strs=someBean.getSomeStrArray();
           ObjectSet[] some=someBean.getSomeObjArray();
           
           for(int i=0;i<strs.length;i++)
           System.out.println(strs[i]+","+some[i]);
           
              //獲取someList
           List someList=(List)someBean.getSomeList();
           for(int i=0;i<someList.size();i++)
            System.out.println(someList.get(i));
           
           //獲取someMap
           Map someMap=someBean.getSomeMap();
           System.out.println(someMap);
           
          }
          }

          如果以上配置正確,運(yùn)行測(cè)試程序,結(jié)果如下:
          Hello,ducklyl
          Welcome,wangsp
          ListTest
          ducklyl
          wangsp
          {first=Hello,ducklyl!, second=ducklyl}

          posted @ 2007-10-22 16:40 王生生 閱讀(1317) | 評(píng)論 (5)編輯 收藏

          最近項(xiàng)目中涉及到外網(wǎng)平臺(tái)調(diào)遠(yuǎn)程接口數(shù)據(jù)的問(wèn)題,本來(lái)是用soap方式實(shí)現(xiàn)的,今天聽(tīng)人介紹了Hessian,想不到它的實(shí)現(xiàn)更加簡(jiǎn)單,代碼寫(xiě)起來(lái)也比較少。
          下面這個(gè)例子我是從Hessian官方上,稍微改了點(diǎn)。
          創(chuàng)建一個(gè)名為Hessian的web工程,測(cè)試服務(wù)器為tomcat5.0,lib目錄下必須包含hessian-3.0.20.jar包,下載地址:
          http://www.ziddu.com/download/3556057/hessian-3.0.20.jar.rar.html
          (1)接口Basic

          package example;

          public interface Basic {
             public String hello(); //與服務(wù)端的hello方法對(duì)應(yīng)
          }
          (2)服務(wù)端實(shí)現(xiàn)類(lèi)

          package example;

          public class BasicService implements Basic {
            private String _greeting = "Hello,ducklyl!";

            public void setGreeting(String greeting)
            {
              _greeting = greeting;
            }

            public String hello()
            {
              return _greeting;
            }
          }

          (3)客戶(hù)端實(shí)現(xiàn)類(lèi)

          package example;

          import com.caucho.hessian.client.HessianProxyFactory;
          /**  
           * <p>Title: hessian實(shí)現(xiàn)遠(yuǎn)程調(diào)用</p>  
           * <p>Copyright: Copyright (c) 2007</p>  
           * @author ducklyl  
           * @version 1.0  
           */  
          public class BasicClient {
            public static void main(String []args)
              throws Exception
            {
              String url = "http://127.0.0.1:8080/Hessian/ducklyl";
              //創(chuàng)建factory實(shí)例
              HessianProxyFactory factory = new HessianProxyFactory();
              //客戶(hù)端需實(shí)現(xiàn)Basic接口
              Basic basic = (Basic) factory.create(Basic.class, url);

              System.out.println("Hessian: " + basic.hello());
            }
          }

          (4) web.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE web-app
              PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
              "http://java.sun.com/dtd/web-app_2_3.dtd">
           <web-app>
            <servlet>
             <servlet-name>ducklyl</servlet-name>
             <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
              <init-param>
                <param-name>home-class</param-name>
                <param-value>example.BasicService</param-value>
              </init-param>
              <init-param>
                <param-name>home-api</param-name>
                <param-value>example.Basic</param-value>
              </init-param>
            </servlet>
            <servlet-mapping>
           <servlet-name>ducklyl</servlet-name>
              <url-pattern>/ducklyl</url-pattern>
            </servlet-mapping>
          </web-app>

           運(yùn)行客戶(hù)端程序BasicClient ,如果以下配置沒(méi)問(wèn)題,輸出結(jié)果為:

          Hessian: Hello,ducklyl!
          posted @ 2007-10-21 20:20 王生生 閱讀(8226) | 評(píng)論 (4)編輯 收藏

          計(jì)劃用一個(gè)月時(shí)間來(lái)學(xué)習(xí)Spring,在這里把自己的學(xué)習(xí)過(guò)程記錄下來(lái),方便想學(xué)習(xí)Spring的人,也為自己日后復(fù)習(xí)有個(gè)參考。以下通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)先了解下Spring的用法。
          (1)創(chuàng)建一個(gè)java工程,建立如下類(lèi):HelloBean

          package com.ducklyl;

          public class HelloBean {
           private String helloWord;

           public String getHelloWord() {
            return helloWord;
           }

           public void setHelloWord(String helloWord) {
            this.helloWord = helloWord;
           }


          }


          (2)創(chuàng)建Spring配置文件:beans-config.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

          <beans>
          <bean id="helloBean" class="com.ducklyl.HelloBean">
           <property name="helloWord">
              <value>Hello,ducklyl!</value>
           </property>
          </bean>

          </beans>

          (3)導(dǎo)入Spring所需的包:commons-logging.jar,spring.jar 。(日志包和Spring包)
          包下載地址:
          http://www.ziddu.com/download/3555993/Spring.rar.html
          (4)創(chuàng)建測(cè)試類(lèi):SpringDemo.java

          package com.ducklyl;

          import org.springframework.core.io.FileSystemResource;
          import org.springframework.core.io.Resource;
          import org.springframework.beans.factory.BeanFactory;
          import org.springframework.beans.factory.xml.*;


          public class SpringDemo{
           public static void main(String[] args)
           {
            //讀取配置文件
            Resource rs=new FileSystemResource("beans-config.xml");
            //實(shí)例化Bean工廠(chǎng)
            BeanFactory factory=new XmlBeanFactory(rs);
            
            //獲取id="helloBean"對(duì)象
            HelloBean hello=(HelloBean)factory.getBean("helloBean");
            //調(diào)用helloBean對(duì)象getHelloWord()方法
            System.out.println(hello.getHelloWord());
           }

          }

          如果以上配置正確的話(huà),運(yùn)行SpringDemo.java,可以看到輸出結(jié)果:Hello,ducklyl!



              

          posted @ 2007-10-21 13:26 王生生 閱讀(2136) | 評(píng)論 (12)編輯 收藏

          開(kāi)始之前,我想就本文即將討論的主題和讀者需要具備的起點(diǎn)知識(shí)做一些必需的描敘。本文的主題是討論SOAP技術(shù),我們將盡可能的講得通俗易懂一些,所以,我們引入了一個(gè)普通的“Hello World”范例來(lái)給讀者說(shuō)明它們是怎么運(yùn)作的,讓讀者知道它們的運(yùn)作方式。我認(rèn)為,如果光看官方文檔是很難開(kāi)始學(xué)習(xí)這門(mén)新技術(shù)的,官方文檔中包含大量的范例,并解釋了所有的特性和優(yōu)點(diǎn),但是沒(méi)解釋它們的運(yùn)作方式。

           在這篇文章中,我不打算只膚淺的解釋SOAP技術(shù)的定義,我們假設(shè)讀者熟悉JAVA語(yǔ)言,Web技術(shù),具有XML語(yǔ)言,XML Namespaces,XML Schema的基礎(chǔ)。在這種情況下,理解本文將不存在任何困難。然而,即使沒(méi)有這些知識(shí),你也不必?fù)?dān)心,我們將盡可能的解釋得簡(jiǎn)單,但是當(dāng)你開(kāi)始做自己的SOAP應(yīng)用程序時(shí)會(huì)遇到一些問(wèn)題和麻煩。因此,花費(fèi)一定時(shí)間來(lái)學(xué)習(xí)上面的知識(shí)是很有必要的。

            從技術(shù)的角度來(lái)說(shuō),有必要提一下我們的調(diào)試環(huán)境。我們使用的是Windows XP操作系統(tǒng),安裝有JAVA 2 SDK 1.4.1,Apache SOAP 2.3.1,JAF 1.0.2,JAVAMAIL 1.3.1和Xerces 2.6.0。上面所提及的都能在Tcomcat 4.1.29 JSP/Servlet容器中正常運(yùn)行。所有的軟件都是免費(fèi)自由軟件,因此你能夠很容易的下載它們并自己在任何你喜歡的平臺(tái)如Windows或UNIX上安裝它們。Java SDK,JAF和JAVAMAIL位于SUN的官方網(wǎng)站(http://java.sun.com),其他的軟件在Jakarta項(xiàng)目組的官方網(wǎng)站(http://jakarta.apache.org)上有down的。

            可能你在看到我們需要這么多不同的包(package)時(shí)已經(jīng)有點(diǎn)擔(dān)心和不安了,但是實(shí)際上你不應(yīng)該擔(dān)心這些的。一旦你懂了基礎(chǔ),那么對(duì)你將相當(dāng)容易。安裝不是一件很難的事情,你只需要在設(shè)置環(huán)境變量的時(shí)候仔細(xì)些,比如CATALINA_HOME, CLASSPATH, JAVA_HOME 等等,所有這些步驟都是手工的。由于我僅僅是想將你的注意力再次集中到它們身上,所以你能很快的就完成以上配置過(guò)程。我只是添加下面的一些字符串到Tomcat的bin/setclasspath.bat文件中:


          set CATALINA_HOME
          =C:\Tomcat4.1.29
          set CLASSPATH
          =%JAVA_HOME%\lib\tools.jar
          set CLASSPATH
          =%JAVA_HOME%\soap-2.3.1\lib\soap.jar
          set CLASSPATH
          =%CLASSPATH%;%JAVA_HOME%\javamail-1.3.1\mail.jar
          set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\jaf-1.0.2\activation.jar
          set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\xerces-2_6_0\xercesImpl.jar
          set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\xerces-2_6_0\xercesSamples.jar
          set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\xerces-2_6_0\xml-apis.jar
          set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\xerces-2_6_0\xmlParserAPIs.jar
          set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\common\lib\servlet.jar
          set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\common\lib\tools.jar
           

           

                如果你的安裝路徑(installation paths)和上面使用的不同,你需要更正它們,然后關(guān)閉和重啟Tomcat以使它們生效。這樣,你就有為運(yùn)行SOAP作好了準(zhǔn)備。但是現(xiàn)在,我要忘記有關(guān)的技術(shù)部分,來(lái)學(xué)一點(diǎn)理論知識(shí)。

            SOAP意思是簡(jiǎn)單對(duì)象訪(fǎng)問(wèn)協(xié)議(Simple Object Access Protocol)。的確如它的名字一樣,SOAP是很簡(jiǎn)單的。它是一個(gè)基于XML的協(xié)議,允許程序組件和應(yīng)用程序彼此使用一種標(biāo)準(zhǔn)的Internet協(xié)議--HTTP來(lái)通訊。SOAP是一種獨(dú)立的平臺(tái),它不依賴(lài)程序語(yǔ)言,它是簡(jiǎn)單的,彈性的,很容易擴(kuò)展的。目前,應(yīng)用程序能夠彼此使用一種基于DCOM和CORBA技術(shù)的遠(yuǎn)程過(guò)程調(diào)用(RPC)來(lái)進(jìn)行相互通訊,但HTTP不被設(shè)計(jì)為這個(gè)目的。RPC在Internet上應(yīng)用是非常困難的,它們會(huì)出現(xiàn)許多兼容性和安全性的問(wèn)題,因?yàn)榉阑饓痛矸?wù)器通常都會(huì)阻斷(block)這些類(lèi)型的流量。應(yīng)用程序之間最好的通訊方式是通過(guò)HTTP協(xié)議,因?yàn)镠TTP是支持所有Internet瀏覽器和服務(wù)器的。基于這個(gè)目的,SOAP協(xié)議被創(chuàng)建出來(lái)。
          那么,它們是如何運(yùn)作的呢?比如,一個(gè)應(yīng)用程序(A)需要和另一個(gè)應(yīng)用程序(B)在SOAP的幫助下進(jìn)行彼此通訊。它們將使用下面的框架圖來(lái)完成這個(gè)過(guò)程:

            這個(gè)SOAP信封(SOAP envelope)是一個(gè)包含以下內(nèi)容的XML文檔:

            

            正如你看到的,它是非常簡(jiǎn)單的。它看起來(lái)確實(shí)就象一個(gè)普通的信封或者你的email。你想看看它們是如何動(dòng)作的嗎?下面跟我們一起來(lái)吧。其實(shí)我們有很多方法是不用SOAP來(lái)在創(chuàng)建和運(yùn)行我們自己的“Hello World”應(yīng)用程序的,但是因?yàn)槲覀円3炙暮?jiǎn)單性,我會(huì)給你一個(gè)它運(yùn)作方式的框架圖(scheme)。

            我們的“Hello World”范例會(huì)包含一個(gè)SOAP Service。我們的SOAP Client將發(fā)送它們的名字到該SOAP Service,并試圖得到一些答復(fù)或響應(yīng)。這個(gè)SOAP Service需要部署到一個(gè)SOAP Admin的工具,以至重定位所有請(qǐng)求的SOAP(Proxy) RPC Router能夠知道它們應(yīng)該使用哪種服務(wù)來(lái)運(yùn)作。總而言之,這個(gè)是以下面的方式來(lái)運(yùn)作的:

          點(diǎn)擊放大此圖片
          現(xiàn)在,我們來(lái)一步步的看看到底發(fā)生了什么。在Step 1里,HelloWorldClient將連接一個(gè)SOAP RPC Router,請(qǐng)求我們的SOAP Service并將包含我們名字的一個(gè)字符串傳遞給它。該SOAP RPC Router會(huì)檢查是否它已經(jīng)部署了這個(gè)SOAP Service。如果它被發(fā)現(xiàn)是被部署的,那么它將傳遞數(shù)據(jù)到這個(gè)SOAP Service并調(diào)用特定的方法,這個(gè)是Step 2。然后SOAP Service方法會(huì)被執(zhí)行,將返回某個(gè)字符串值(該值就是SOAP Client的答復(fù)或者響應(yīng))(Step 3)。在Step4中,SOAP RPC Router將僅僅只是重定向這個(gè)數(shù)據(jù)到SOAP Client。所有在Step1和Step4里傳輸?shù)臄?shù)據(jù)是通過(guò)SOAP Envelope來(lái)完成的。正如你所看到的,算法是相當(dāng)簡(jiǎn)單的,因此我們只準(zhǔn)備關(guān)心實(shí)際的代碼。

            首先,我們要?jiǎng)?chuàng)建一個(gè)SOAP Service。下面是它的代碼,請(qǐng)不要忘記將它放入HelloWorld/ 目錄中(必須被包含在你的CLASSPATH中):

          // SOAPService.java 
            package HelloWorld; 
            
          public class SOAPService 
                
          public String sayHi(String x) 
                
          return("Hello my friend, " + x + "! Glad to see you!"); 
            }
           
            }

                添加任何注釋也是很容易的。要編譯它,只需要用下列命令:javac SOAPService.java

                  第二步,一旦我們準(zhǔn)備好了SOAP Service,我們需要用SOAP Service Manager來(lái)部署它。這個(gè)可以通過(guò)很多方式來(lái)實(shí)現(xiàn),但是為了能讓初學(xué)SOAP的讀者更容易理解SOAP,我提供了一個(gè)最容易的方式。我們假設(shè)你的Web Server(Tomcat或其他)已經(jīng)正常運(yùn)行,并且你已經(jīng)正確安裝了SOAP。那么當(dāng)瀏覽器訪(fǎng)問(wèn)http://localhost:8080/soap/,你會(huì)看見(jiàn)Apache SOAP的歡迎頁(yè)面。點(diǎn)擊Run the admin client ,然后 Deploy。你會(huì)得到一個(gè)屏幕顯示,在那里你需要填入ID,Scope,Method,Provider Type和JAVA Provider的信息到表單域中。你能忽略其他所有的表單域,除非你真的需要它們的信息。我們的“HelloWorld”例子不需要它們,所以,我們填的下面的值:
        1.   ID: urn:HelloWorld_SOAPService
        2.         Scope: Application
        3.   Methods: sayHi
        4.   Provider Type: java
        5.   Java Provider - Provider Class: HelloWorld.SOAPService
        6.   Java Provider - Static? No

          一些注釋:ID是我們要從SOAP Client標(biāo)識(shí)我們的SOAP Service的唯一名字。Method包含SOAP Service提供的一系列方法。JAVA Provider-Provider Class是SOAP Service Java類(lèi)的名字。

            現(xiàn)在,點(diǎn)擊Deploy 按鈕,那么你的服務(wù)會(huì)被部署。再次強(qiáng)調(diào),請(qǐng)注意正確設(shè)置CLASSPATH環(huán)境變量。然后,你的HelloWorld.SOAPService類(lèi)能夠被找到,并且所有必需的jar包也能被找到。這是個(gè)幾乎每個(gè)人都會(huì)犯的普通錯(cuò)誤。現(xiàn)在,你能夠點(diǎn)擊 List ,將會(huì)看見(jiàn)你的服務(wù)已經(jīng)被部署進(jìn)來(lái)。恭喜!

            最后,讓我們來(lái)創(chuàng)建一個(gè)SOAP Client。代碼看起來(lái)有點(diǎn)復(fù)雜,但是在現(xiàn)實(shí)中不會(huì)只有這么點(diǎn)長(zhǎng)。

          1// HelloWorldClient.java 
            2import java.io.*
            
          3import java.net.*
            
          4import java.util.*
            
          5import org.apache.soap.*
            
          6import org.apache.soap.rpc.*
            
          7public class HelloWorldClient 
            
          8public static void main(String[] arg) throws Exception 
            
          9: Call c = null
            
          10: URL url = null
            
          11: Vector params = null
            
          12: Response rep = null
            
          13: String ourName = "Superman"
            
          14: String ourUrn = "urn:HelloWorld_SOAPService"
            
          15: String ourMethod = "sayHi"
            
          16: url = new URL("http://localhost:8080/soap/servlet/ 
            rpcrouter"); 
            17: System.out.println("Passing to our deployed "+ourUrn+" 
            our name ("+ourName+"): "); 
            18: c = new Call(); 
            
          19: c.setTargetObjectURI(ourUrn); 
            
          20: c.setMethodName(ourMethod); 
            
          21: c.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); 
            
          22: params = new Vector(); 
            
          23: params.addElement(new Parameter("ourName", String.class
            ourName, 
          null)); 
            
          24: c.setParams(params); 
            
          25: System.out.print("and its answer is: "); 
            
          26: rep = c.invoke(url, ""); 
            
          27if (rep.generatedFault()) 
            
          28: Fault fault = rep.getFault(); 
            
          29: System.out.println("\nCall failed!"); 
            
          30: System.out.println("Code = " + fault.getFaultCode()); 
            
          31: System.out.println("String = " + fault.getFaultString()); 
            
          32: }
           else 
            
          33: Parameter result = rep.getReturnValue(); 
            
          34: System.out.print(result.getValue()); 
            
          35: System.out.println(); 
            
          36: }
           
            
          37: }
           
            
          38:}


          下面我要做一些解釋。在第13行,我們?cè)O(shè)置了我們的名字,這個(gè)名字將會(huì)傳遞給SOAP Service。在第14行,我們?cè)O(shè)置了我們將要調(diào)用的服務(wù)的ID(service ID),和第15行里設(shè)置的服務(wù)方法(service method)。有了這個(gè)ID,服務(wù)能夠被部署到SOAP服務(wù)管理器(SOAP Service Manager)中。我們沒(méi)有設(shè)置任何其他值,僅僅只用剛才那些基礎(chǔ)值就可以正常運(yùn)作了。你能從SOAP的官方文檔上得到相關(guān)信息,該文檔來(lái)自SOAP包中,它們的解釋超出了本文的范圍。

            用以下方式編譯這個(gè)SOAP Client:

            javac HelloWorldClient.java

            為了圓滿(mǎn)完成它,讓我們檢查一下針對(duì)我們的測(cè)試,是否所有事情都準(zhǔn)備就緒。Tomcat正在運(yùn)行,所有的環(huán)境變量都正確,SOAP Service被編譯和部署,SOAP Client被成功編譯。OK,讓我們運(yùn)行它,你將看到這個(gè)屏幕:
          點(diǎn)擊放大此圖片

            正如你所看到的,我們的SOAP Client使用SOAP協(xié)議成功發(fā)送它的名字和接收了一個(gè)答復(fù)。正如前面所說(shuō)的,SOAP Service發(fā)送和接收的是SOAP envelope。這個(gè)是SOAP envelope的源代碼。

            被發(fā)送到SOAP Service的SOAP Envelope

          <?xml version=1.0 encoding=UTF-8?>
          <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/
          soap/envelope/"
          xmlns:xsi="http://www.w3.org/2001/
          XMLSchema-instance"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema">
          <SOAP-ENV:Body>
          <ns1:sayHi xmlns:ns1="urn:HelloWorld_SOAPService"
          SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/
          soap/encoding/">
          <o(jì)urName xsi:type="xsd:string">Superman</ourName>
          </ns1:sayHi>
          </SOAP-ENV:Body>
          </SOAP-ENV:Envelope>: 

          從SOAP Service接收的SOAP Envelope
          <?xml version=1.0 encoding=UTF-8?>
          <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/
          soap/envelope/"
          xmlns:xsi="http://www.w3.org/2001/
          XMLSchema-instance"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema">
          <SOAP-ENV:Body>
          <ns1:sayHiResponse xmlns:ns1="urn:HelloWorld_SOAPService"
          SOAP-ENV:encodingStyle="http://schemas.xmlsoap.
          org/soap/encoding/">
          <return xsi:type="xsd:string">Hello my friend, Superman!
          Glad to see you!</return>
          </ns1:sayHiResponse>
          </SOAP-ENV:Body>
          </SOAP-ENV:Envelope> 
                
                要理解SOAP Envelope中的所有標(biāo)簽的含義,我建議你花一點(diǎn)時(shí)間閱讀 http://www.w3.org/2001/06/soap-envelope 命名空間規(guī)范。

            我希望本文能夠在你理解SOAP技術(shù)上有一定幫助。這個(gè)技術(shù)是簡(jiǎn)單的,有趣的,強(qiáng)大的,彈性的。它被用在許多Web應(yīng)用中,這些應(yīng)用的數(shù)量也在不斷增加。學(xué)習(xí)SOAP是值得的,至少你要知道它是什么和它是怎么運(yùn)作的。

        7. posted @ 2007-10-20 14:59 王生生 閱讀(408) | 評(píng)論 (1)編輯 收藏

                   從前,有一座圓音寺,每天都有許多人上香拜佛,香火很旺。在圓音寺廟前的橫梁上有個(gè)蜘蛛結(jié)了張網(wǎng),由于每天都受到香火和虔誠(chéng)的祭拜的熏托,蛛蛛便有了佛性。經(jīng)過(guò)了一千多年的修煉,蛛蛛佛性增加了不少。 

          忽然有一天,佛光臨了圓音寺,看見(jiàn)這里香火甚旺,十分高興。離開(kāi)寺廟的時(shí)候,不經(jīng)意間抬頭看見(jiàn)了橫梁上的蛛蛛。佛停下來(lái),問(wèn)這只蜘蛛:“你我相見(jiàn)總算是 有緣,我來(lái)問(wèn)你個(gè)問(wèn)題,看你修煉了這一千多年來(lái),有什么真知 灼見(jiàn)。怎么樣?”蜘蛛遇見(jiàn)佛很是高興,連忙答應(yīng)了。佛問(wèn)到:“世間什么才是最珍貴的?”蜘蛛 想了想,回答到:“世間最珍貴的是‘得不到’和‘已失去’。”佛點(diǎn)了點(diǎn)頭,離開(kāi)了。  

          就這樣又過(guò)了一千年的光景,蜘蛛依舊在圓 音寺的橫梁上修煉,它的佛性大增。一日,佛又來(lái)到寺前,對(duì)蜘蛛說(shuō)道:“你可還好,一千年前的那個(gè)問(wèn)題,你可有什么更深的認(rèn)識(shí)嗎?”蜘蛛說(shuō):“我覺(jué)得世間最 珍貴的是‘得不到’和‘已失去’。”佛說(shuō):“你再好好想想,我會(huì)再來(lái)找你的。”  

          又過(guò)了一千年,有一天,刮起了大風(fēng),風(fēng)將一滴 甘露吹到了蜘蛛網(wǎng)上。蜘蛛望著甘露,見(jiàn)它晶瑩透亮,很漂亮,頓生喜愛(ài)之意。蜘蛛每天看著甘露很開(kāi)心,它覺(jué)得這是三千年來(lái)最開(kāi)心的幾天。突然,又刮起了一陣 大風(fēng),將甘露吹走了。蜘蛛一下子覺(jué)得失去了什么,感到很寂寞和難過(guò)。這時(shí)佛又來(lái)了,問(wèn)蜘蛛:“蜘蛛這一千年,你可好好想過(guò)這個(gè)問(wèn)題:世間什么才是最珍貴 的?”蜘蛛想到了甘露,對(duì)佛說(shuō):“世間最珍貴的是‘得不到’和‘已失去’。”佛說(shuō):“好,既然你有這樣的認(rèn)識(shí),我讓你到人間走一 遭吧。”  

          就這樣,蜘蛛投胎到了一個(gè)官宦家庭,成了一個(gè)富家小姐,父母為她取了個(gè)名字叫蛛兒。一晃,蛛兒到了十六歲了,已經(jīng)成了個(gè)婀娜多姿的少女,長(zhǎng)的十分漂亮,楚楚動(dòng)人。 

          這一日,皇帝決定在后花園為新科狀元郎甘鹿舉行慶功宴席。來(lái)了許多妙齡少女,包括蛛兒,還有皇帝的小公主長(zhǎng)風(fēng)公主。狀元郎在席間表演詩(shī)詞歌賦,大獻(xiàn)才藝,在場(chǎng)的少女無(wú)一不被他折 服。但蛛兒一點(diǎn)也不緊張和吃醋,因?yàn)樗溃@是佛賜予她的姻緣。 

          過(guò)了些日子,說(shuō)來(lái)很巧,蛛兒陪同母親上香拜佛的時(shí)候,正好甘鹿也陪同母親而來(lái)。上完香拜過(guò)佛,二位長(zhǎng)者在一邊說(shuō)上了話(huà)。蛛兒和甘鹿便來(lái)到走廊上聊天,蛛 兒很開(kāi)心,終于可以和喜歡的人在一起了,但是甘鹿并沒(méi)有表現(xiàn)出對(duì)她的喜愛(ài)。蛛兒對(duì)甘鹿說(shuō):“你難道不曾記得十六年前,圓音寺的蜘蛛網(wǎng)上的事情了嗎?”甘鹿 很詫異,說(shuō):“蛛兒姑娘,你漂亮,也很討人喜歡,但你想象力未免 太豐富了一點(diǎn)吧。”說(shuō)罷,和母親離開(kāi)了。 

          蛛兒回到家,心想,佛既然安排了這場(chǎng)姻緣,為何不讓他記得那件事,甘鹿為何對(duì)我沒(méi)有一點(diǎn)的感覺(jué)? 

          幾天后,皇帝下召,命新科狀元甘鹿和長(zhǎng)風(fēng)公主完婚;蛛兒和太子芝草完婚。這一消息對(duì)蛛兒如同晴空霹靂,她怎么也想不通,佛竟然這樣對(duì)她。幾日來(lái),她不吃 不喝,窮究急思,靈魂就將出殼,生命危在旦夕。太子芝草知道了,急忙趕來(lái),撲倒在床邊,對(duì)奄奄一息的蛛兒說(shuō)道:“那日,在后花園眾姑娘中,我對(duì)你一見(jiàn)鐘 情,我苦求父皇,他才答應(yīng)。如果你死了,那么我也就不活了。”說(shuō)著就拿起了寶劍準(zhǔn)備自刎。 

          就在這時(shí),佛來(lái)了,他對(duì)快要出殼的蛛 兒靈魂說(shuō):“蜘蛛,你可曾想過(guò),甘露(甘鹿)是由誰(shuí)帶到你這里來(lái)的呢?是風(fēng)(長(zhǎng)風(fēng)公主)帶來(lái)的,最后也是風(fēng)將它帶走的。甘鹿是屬于長(zhǎng)風(fēng)公主的,他對(duì)你不過(guò) 是生命中的一段插曲。而太子芝草是當(dāng)年圓音寺門(mén)前的一棵小草,他看了你三千年,愛(ài)慕了你三千年,但你卻從沒(méi)有低下頭看過(guò)它。蜘蛛,我再來(lái)問(wèn)你,世間什么才 是最珍貴的?”蜘蛛聽(tīng)了這些真相之后,好象一下子大徹大悟了,她對(duì)佛說(shuō):“世間最珍貴的不是‘得不到’和‘已失去’,而是現(xiàn)在能把握的幸福。”剛說(shuō)完,佛 就離開(kāi)了,蛛兒的靈魂也回位了,睜開(kāi)眼睛,看到正要自刎的太子芝草,她馬上打落寶劍,和太子深深的抱在一起……

          Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1194645
          posted @ 2007-10-19 17:56 王生生 閱讀(354) | 評(píng)論 (1)編輯 收藏

              出差來(lái)武漢的第四天了,一直想寫(xiě)點(diǎn)東西。前幾天事情比較多,沒(méi)什么時(shí)間寫(xiě)。現(xiàn)在手頭上有點(diǎn)時(shí)間,就想記錄下一些東西。呵呵。。。
              今天解決了利用soap取接口數(shù)據(jù)的問(wèn)題,早上還查不出來(lái),老報(bào)錯(cuò)。。。吃過(guò)午飯,明顯有了精神。。
          原來(lái)是編碼的問(wèn)題。。。
              由于之前都做內(nèi)網(wǎng)管理平臺(tái),所以外網(wǎng)這塊比較弱。關(guān)于webservice 也是不太清楚。。。
          安排工作時(shí)候,我還有點(diǎn)擔(dān)心。。。怕自己影響項(xiàng)目進(jìn)度。。做下來(lái),發(fā)現(xiàn)也很簡(jiǎn)單。。
          難怪名字取‘soap‘。。。
              事情有時(shí)候看起來(lái)很難,會(huì)嚇倒你,關(guān)鍵看你自己敢不敢承擔(dān)下來(lái),過(guò)了這一關(guān),接下來(lái)都不是問(wèn)題了。所以有句話(huà)說(shuō),風(fēng)雨過(guò)后,天空總是很美的。。。
           
          posted @ 2007-10-19 16:46 王生生 閱讀(247) | 評(píng)論 (2)編輯 收藏

          僅列出標(biāo)題
          共7頁(yè): 上一頁(yè) 1 2 3 4 5 6 7 
          森露2013新款豹紋打底衫 高領(lǐng) 女 長(zhǎng)袖 修身長(zhǎng)袖t恤女 加絨加厚冬 2013春秋新款女裝 潮修身大碼長(zhǎng)袖小西裝外套女 韓版中長(zhǎng)款小西裝 憂(yōu)憂(yōu)魚(yú)2013秋冬新款直筒褲女顯瘦長(zhǎng)褲加絨黑色休閑褲修身西褲女褲
          主站蜘蛛池模板: 涡阳县| 蓬溪县| 镇安县| 嘉禾县| 忻城县| 朔州市| 巴塘县| 昌吉市| 浦东新区| 米脂县| 吴桥县| 芮城县| 突泉县| 三门峡市| 仁寿县| 昭平县| 会理县| 渭南市| 射洪县| 永安市| 巴林右旗| 社会| 蓝山县| 读书| 东阿县| 依兰县| 秦安县| 蒙阴县| 桦川县| 景泰县| 平顶山市| 吴忠市| 福建省| 新田县| 天水市| 屏东县| 正镶白旗| 顺昌县| 南昌市| 吉安市| 象州县|