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

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

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

    posts - 297,  comments - 1618,  trackbacks - 0
    早前的一篇文章,今天才發表,貼上來,:)
    請勿轉載
    原文出處:http://tech.it168.com/j/2007-09-26/200709260923046.shtml

    XFire是與Axis 2并列的新一代Web Service框架,通過提供簡單的API支持Web Service各項標準協議,幫助你方便快速地開發Web Service應用。

    相對于Axis來說,目前XFire相對受歡迎,加上其提供了和Spring集成的支持,在目前的Web Service開源社區擁有眾多的追隨者。并且因為XFire為Spring提供的支持,使得我們可以很容易在Spring中使用XFire構建Web Service應用。

    XFire與Axis2相比具有如下特征:

    l         支持一系列Web Service的新標準--JSR181、WSDL2.0 、JAXB2、WS-Security等;

    l         使用Stax解釋XML,性能有了質的提高。XFire采用Woodstox 作Stax實現;

    l         容易上手,可以方便快速地從pojo發布服務;

    l         支持Spring、Pico、Plexus、Loom等容器;

    l         靈活的Binding機制,包括默認的Aegis,xmlbeans,jaxb2,castor;

    l         高性能的SOAP 棧設計;

    l         支持Spring、Pico、Plexus、Loom等容器。

    XFire與Axis1性能的比較如下:

    l         XFire比Axis1.3快2-6倍;

    l         XFire的響應時間是Axis1.3的1/2到1/5。

    XFire在WebService框架中開始較晚,它從現有的框架中借鑒了許多優秀的理念,力爭將Web Service的應用開發難度降到最低。此外,還提供了各種綁定技術、支持多種傳輸協議,對WebService體系中許多新的規范提供了支持。

    下面讓我們來看一個XFire于Spring集成的helloWorld的簡單例子。

    一.實現的功能和特點

        本例具有如下功能和特點:

    1) 基于J2EE平臺的Web Service服務;

    2) 開發方便,配置簡單;

    3) 與spring無縫集成。

    XFire是完全基于流數據處理進行工作的系統,這意味著XFire不是將整個SOAP文檔緩存在內存中,而是以管道的方式接收SOAP流數據。這種工作方式的轉變帶來了可觀的性能回報,同時節省了內存的占用。

      XFire從管道中接收一個SOAP請求到返回一個SOAP響應,會經歷一系列的階段。在管道調用的任何一個階段,XFire都可以添加一些額外的Handler,在對消息進行加工處理后再傳入到下一個階段中。在SOAP請求消息對Web Service發起真正調用之前,分別會經過傳輸、預轉發、轉發、策略實施、用戶信息處理、預調用、服務調用等階段。

    二.開發環境

        筆者的開發環境描述如下:

    1) jdk: 1.5版本;

    2) Tomcat:5.5.20;

    3) MyEclipse:5.1.1 GA。

    三.開發步驟

    1. 工程與環境的建立

    在MyEclipse中新建Web工程,名為webservice_helloworld。選擇該工程后,點擊右鍵選擇MyEclipse->Add Web Service Capabilities,彈出Add Web Service Capabilities對話框,點擊“Next”,彈出Project Library Configuration對話框,默認選擇Core Libraries,點擊“Finish”按鈕,完成XFire核心包的添加。為了后續的客戶端的測試,還需讀者加入commons-httpclient.jar包到WEB-INF/lib下。

    部署后可看到此時WEB-INF/lib的jar包列表如下:

    activation-1.1.jar、commons-beanutils-1.7.0.jar、commons-codec-1.3.jar、commons-httpclient.jar、commons-logging-1.0.4.jar、jaxen-1.1-beta-9.jar、jaxws-api-2.0.jar、jdom-1.0.jar、jsr173_api-1.0.jar、mail-1.4.jar、saaj-api-1.3.jar、saaj-impl-1.3.jar、spring-1.2.6.jar、stax-api-1.0.1.jar、wsdl4j-1.5.2.jar、wstx-asl-3.0.1.jar、xbean-2.1.0.jar、xbean-spring-2.5.jar、xfire-aegis-1.2.2.jar、xfire-annotations-1.2.2.jar、xfire-core-1.2.2.jar、xfire-java5-1.2.2.jar、xfire-jaxws-1.2.2.jar、xfire-jsr181-api-1.0-M1.jar、xfire-spring-1.2.2.jar、XmlSchema-1.1.jar

    為了后續的開發和測試,在src目錄下分別建立test和webservice目錄,分別用于存放測試文件和webservice的相關類。

    2.Web Service實現的編寫

        在本例中,我們只是做一個helloWorld的簡單例子。Web Service服務端提供一個根據輸入的名字信息回復相應的helloWorld信息的。例如,當名字為“阿蜜果”時,恢復信息為“hello,阿蜜果”。下面讓我們一步一步來開始進行編碼。

    1)web.xml的配置

    一般情況下,我們通過HTTP作為Web Service的傳輸協議,這樣我們只需啟動一個Web服務器(如Tomcat,在本例中使用的是Tomcat5.5.20),這樣客戶端就可以通過HTTP訪問到Web Service服務。為了集成Spring容器,XFire專門提供一個XFireSpringServlet,我們可以在web.xml中配置該Servlet,將Spring容器中定義的Web Service在某個URI下發布。

    為了能正確使用XFire,需在web.xml中進行相應配置,在該文件中配置XFire的servletservlet-mapping。同時因為本實例需要將XFire集成到Spring中,因而需要在web.xml文件中加載Spring的相應配置文件。在本實例中,我們首先在WEB-INF下建立兩個配置Spring配置文件,一個為applicationContext.xml,該文件用來定義本工程的bean,一個為xfire-servlet.xml,用來配置XFire的相關bean。修改后的web.xml的內容如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        
    <display-name>XFireService</display-name>
        
    <!-- begin Spring配置 -->
        
    <context-param>
           
    <param-name>contextConfigLocation</param-name>
           
    <param-value>/WEB-INF/applicationContext.xml,/WEB-INF/xfire-servlet.xml</param-value>
        
    </context-param>
        
    <listener>
           
    <listener-class> org.springframework.web.context.ContextLoaderListener
           
    </listener-class>
        
    </listener>
         
    <listener> 
           
    <listener-class>     org.springframework.web.util.IntrospectorCleanupListener
           
    </listener-class>
        
    </listener>
        
    <!-- end Spring配置 -->

        
    <!-- begin XFire 配置 -->
        
    <servlet>   
           
    <servlet-name>xfire</servlet-name>   
           
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        
    </servlet>   
        
    <servlet-mapping> 
           
    <servlet-name>xfire</servlet-name>
           
    <url-pattern>*.ws</url-pattern>
        
    </servlet-mapping>
        
    <servlet>
           
    <!-- 配合Spring容器中XFire一起工作的Servlet-->
           
    <servlet-name>xfireServlet</servlet-name>
           
    <servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
        
    </servlet>
        
    <servlet-mapping>
           
    <servlet-name>xfireServlet</servlet-name>
           
    <!-- 在這個URI下開放Web Service服務 -->
           
    <url-pattern>/service/*</url-pattern>
        
    </servlet-mapping>
        
    <!-- end XFire 配置 -->
    </web-app>

        2)Web Service的接口類HelloWorld.java和對應實現類HelloWorldImpl.java

    為了用Web Service完成HelloWorld功能,我們首先在src/webservice目錄下建立接口類HelloWold.java。它僅包含一個sayHelloWorld(String name)的方法,其詳細內容如下:

    package webservice;

    /**
     *HelloWorld的接口類.
     
    */

    publicinterface HelloWorld 
    {
        
    /**
         *對名字為name的人打招呼.
         *@paramname名字
         *@return返回打招呼的字符串
         
    */

        String sayHelloWorld(String name);
    }

    我們還需要建立一個對應的實現類,來實現sayHelloWorld的功能,該實現類即為HelloWorldImpl.java。該類的詳細內容如下:
    package webservice;
    /**
     *HelloWorld的實現類.
     
    */

    publicclass HelloWorldImpl 
    implements HelloWorld {
        
    public String sayHelloWorld(String name) {
           String helloWorld 
    = "hello," + name;
           
    return helloWorld;
        }

    }

    3)Spring配置文件applicationContext.xmlxfire-servlet.xml的配置

    首先我們在applicationContext.xml文件中配置對應的bean——HelloWorldBean,該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="HelloWorldBean" class="webservice.HelloWorldImpl"/>
    </beans>

         這個配置文件很簡單,在此不詳述。

    XFire為Spring提供了方便易用的導出器XFireExporter,借助該導出器的支持,我們可以在Spring容器中將一個POJO導出為Web Service。HelloWorld是業務服務類,在此擁有一個sayHelloWorld的方法,我們希望將此方法開放為Web Service。在實際應用中,如果某個類具有眾多的方法,而其中的某些方法不需要開放為Web Service的情況下,我們可以定義一個窄接口,該接口中只需定義那些開放為Web Service的業務方法。

    將一個業務類所有需要開放為Web Service的方法通過一個窄接口來描述是值得推薦的作法,這讓Web Service的接口顯得很“干凈”。其次,XFire的導出器也需要服務接口的支持,因為它采用基于接口的動態代理技術。

    窄接口中的方法在真實的系統中可能需要引用其它的業務類或DAO獲取數據庫中的真實數據,為了簡化實例,我們在此簡化了實例。

    下面讓我們看看在xfire-servlet.xml文件中導出器的設置,該文件內容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
        "http://www.springframework.org/dtd/spring-beans.dtd"
    >
    <beans>
        
    <!-- 引入XFire預配置信息 -->
        
    <import resource="classpath:org/codehaus/xfire/spring/xfire.xml" />
        
    <!—定義訪問的url-->
        
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
           
    <property name="urlMap">             
               
    <map>                 
                  
    <entry key="/HelloWorldService.ws">                  
                      
    <ref bean="HelloWorldService" />                 
                  
    </entry>             
               
    </map>         
           
    </property>     
        
    </bean>     

        
    <!-- 使用XFire導出器 -->
        
    <bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" lazy-init="false" abstract="true">
           
    <!-- 引用xfire.xml中定義的工廠 -->
           
    <property name="serviceFactory" ref="xfire.serviceFactory" />
           
    <!-- 引用xfire.xml中的xfire實例 -->
           
    <property name="xfire" ref="xfire" />
        
    </bean>
        
    <bean id="HelloWorldService" parent="baseWebService">
           
    <!-- 業務服務bean -->
           
    <property name="serviceBean" ref="HelloWorldBean" />
           
    <!-- 業務服務bean的窄接口類 -->
           
    <property name="serviceClass" value="webservice.HelloWorld" />
        
    </bean>
    </beans>

    在上面的配置中,我們可以看到,在該配置文件中引入了xfire.xml這個Spring配置文件。它是在XFire核心JAR包中擁有一個預定義的Spring配置文件,它定義了XFire在Spring中必須用到的一些Bean和資源,需要引入這個預定義的配置文件。從該配置文件中可以看出,我們通過XFireExporter將業務類導出為Web Service,對于任何導出器,我們都需要引入XFire環境,即serviceFactoryxfire,這是標準的配置。ServiceFactory是XFire的核心類,它可以將一個POJO生成為一個Web Service。

    在本實例中,我們通過定義一個baseWebService,其余的webService配置都將該bean作為父bean,這樣可以簡化Spring的配置,不需要多次引入serviceFactory和xfire。

    3. Web Service的測試

        在上一步操作完成之后,我們的這個簡單的Web Service已經編寫完畢,下面讓我們來看看自己的勞動成果吧。

        在瀏覽器中輸入地址:http://localhost:8080/webservice_helloworld/HelloWorldService.ws?wsdl,我們可以看到HelloWorldService對應的WSDL信息,閱讀這個WSDL文檔,我們可以知道HelloWorld的sayHelloWorld方法已經被成功地發布為Web Service了。只要拿到這個WSDL就可以開發相應的客戶端調用程序了。

    XFire為訪問服務端Web Service提供了各種方便的方式:我們一般根據服務地址和窄接口類創建客戶調用程序。

      在不能獲得服務窄接口類的情況下,XFire允許我們通過WSDL文件生成客戶端調用程序,通過指定服務接口的方式調用服務。

    1)通過WSDL文件生成客戶端調用程序

    首先我們通過http://localhost:8080/webservice_helloworld/HelloWorldService.ws?wsdl我們可以獲得WSDL文件HelloWorldService.wsdl,并將其放在src目錄下面,接著我們通過程序訪問該WSDL文件,并調用需測試的方法。此時測試類WebServiceClientTest.java的內容如下所示:

    package test;

    import org.codehaus.xfire.client.Client;
    import org.springframework.core.io.ClassPathResource;
    import org.springframework.core.io.Resource;
    import webservice.HelloWorld;

    /**
     *Copyright2007GuangZhouAmigo.
     *Allrightreserved.   
     *HelloWorld的webservice的測試類.
     *
    @author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
     *@version1.0
     *Creationdate:2007-9-16-下午05:36:05
     
    */

    publicclass WebServiceClientTest 

        HelloWorld helloWorld 
    = null;

        publicstaticvoid main(String[] args) 
    throws Exception {
           WebServiceClientTest test 
    = new WebServiceClientTest();
           test.testClient();
        }
     
        
        publicvoid testClient() 
    throws Exception {
           String wsdl 
    = "HelloWorldService.wsdl"//對應的WSDL文件
           Resource resource = new ClassPathResource(wsdl); 
           Client client 
    = new Client(resource.getInputStream(), null); //根據WSDL創建客戶實例
           
           Object[] objArray 
    = new Object[1];
           objArray[
    0= "阿蜜果";
           
    //調用特定的Web Service方法
           Object[] results = client.invoke("sayHelloWorld", objArray);
           System.out.println(
    "result: " + results[0]);
        }

    }

    運行該類,可得到如下輸出結果:

    result: hello,阿蜜果

    可看出運行結果正確。

    2)根據服務地址創建客戶端調用程序

        接著讓我們來看一個根據服務地址創建客戶端調用程序的例子。我們可以通過測試類來測試Web Service的正確性,下面讓我們來看一個簡單的測試類,首先我們在src/test目錄建立WebServiceClientTest.java文件,并在src目錄下建立客戶端調用的Spring配置文件client.xml。在client.xml配置文件中我們定義了一個testWebServicebean,該bean訪問wsdlDocumentUrlhttp://localhost:8080/webservice_helloworld/HelloWorldService.ws?wsdlWSDL。該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="testWebService" class="org.codehaus.xfire.spring.remoting.XFireClientFactoryBean">
           
    <property name="serviceClass">          
       
    <value>webservice.HelloWorld</value>       
           
    </property>      
            
    <property name="wsdlDocumentUrl">         
    <value>http://localhost:8080/webservice_helloworld/HelloWorldService.ws?wsdl</value>       
            
    </property>      
         
    </bean>
    </beans>

         在WebServiceClientTest.java文件中獲得HelloWorld,并調用它的sayHelloWorld方法來完成測試,該類的詳細內容如下所示:

    package test;

    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import webservice.HelloWorld;

    /**
     *HelloWorld的webservice的測試類.
     
    */

    publicclass WebServiceClientTest 

        HelloWorld helloWorld 
    = null;

        publicstaticvoid main(String[] args) 
    {
           WebServiceClientTest test 
    = new WebServiceClientTest();
           test.testClient();
        }
     

        publicvoid testClient() 
    {
           ApplicationContext ctx 
    = new ClassPathXmlApplicationContext(
                  
    "client.xml");
           helloWorld 
    = (HelloWorld) ctx.getBean("testWebService");
           System.out.println(helloWorld.sayHelloWorld(
    "阿蜜果"));
        }

    }

        在啟動webservice_helloworld工程的情況下,運行WebServiceClientTest類,可看到控制臺包含如下信息:

        hello,阿蜜果

        由此可看出調用Web Service成功。

    四.總結

        與Axis相比,在實施Web Service時XFire更加簡潔高效,并且XFire對Spring提供了強大的支持,可以非常方便地在Spring中使用XFire實施Web Service,因此XFire在短短的時間里成為了受Web Service開發者喜愛的框架。

      XFire為客戶端提供了多種訪問Web Service的方式,如果可以獲取客戶端的窄接口類,則可以采用窄接口類調用Web Service。如果僅能獲取WSDL,XFire也可以采用動態反射的機制調用Web Service。XFire為Eclipse提供了一個可以根據WSDL生成客戶端存根代碼的插件,相信XFire也將為其它非Java語言提供類似的插件。

    技術可用性的一個很大的標準是它是否方便測試,XFire提供多種方式進行Web Service的測試,簡單方便,給Web Service開發人員的測試工作帶來了福音。

    在本文中,筆者通過一個簡單的helloWorld的Web Service例子,詳細地說明了用XFire+Spring構建Web Service時配置文件的相關配置,以及測試的各種方法,也讓讀者見識了XFire與Spring的無縫集成,希望對讀者學習XFire有點幫助。

    posted on 2007-09-26 09:39 阿蜜果 閱讀(53661) 評論(70)  編輯  收藏 所屬分類: Web Service


    FeedBack:
    # re: 使用XFire+Spring構建Web Service
    2007-09-27 10:49 | 千里冰封
    用EJB的方式也可以構建webservice
    不過, spring聽說是很牛的  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service
    2007-09-27 11:23 | 易初風云
    可以,請問一下java遠程調用方法共有多少種方式呢?那種比較好呢?  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service
    2007-09-27 12:53 | 千里冰封
    多少種方式?不太清楚,找到自己適用的就可以了  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service
    2007-09-27 17:37 | cnjar
    1)通過WSDL文件生成客戶端調用程序

    不如直接這樣:
    Client client = new Client(new URL("http://localhost:8080/webservice_helloworld/HelloWorldService.ws?wsdl"));  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2007-09-28 17:56 | bigheadbird
    我按照你 的例子寫的,卻完全沒有反應,提示找不到資源,想問一下,可需要
    add spring capabilities?我這種情況可能是什么原因?  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2007-09-28 17:59 | bigheadbird
    我是在Web Service的測試這里就沒有反應。
      回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2007-09-29 09:43 | bigheadbird
    我找到原因了,applicationContext.xm 文件名我少寫了個p,暈死,我知道了 ,不用add spring capabilities。  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇[未登錄]
    2007-09-29 11:24 | Bruce
    能不能把目錄結構列出來。。。俺是初學者  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2007-09-29 11:35 | 阿蜜果
    @Bruce
    本篇與下篇的例子的目錄結構請參見:
    http://m.tkk7.com/amigoxie/gallery/image/9492.html  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇[未登錄]
    2007-09-29 11:39 | Bruce
    謝謝!謝謝!偶現在就去看!  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇[未登錄]
    2007-09-29 11:43 | Bruce
    好用了,謝謝阿蜜果:)
      回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2007-11-05 10:31 | dong2590
    java.lang.NoSuchMethodError: javax.xml.namespace.QName.<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

    我按照你的寫了..可是在Tomcat啟動時就報這種錯誤..網上有說這種錯誤.不過很模糊..希望能指導一下.謝謝.
    我用的是JDK1.4.MyEclipse5.0,Tomcat5.0的.  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇[未登錄]
    2007-11-05 13:00 | 阿蜜果
    用Tomcat5.5才行,貌似5.0不行  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2007-11-05 15:00 | dong2590
    @阿蜜果
    我到原因了~是JAR包沖突的問題~Javax.xml.namespace.QName的方法定義太舊,用xfile的lib里面的stax-api-1.0.1.jar和stax-utils-20040917.jar
    并刪除舊的javax.xml.namespace.QName如jaxrpc.jar問題就好了..但是現在又出來個新的問題~
    我在web.xml作了如下配置:
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/applicationContext.xml,/WEB-INF/classes/xfire-servlet.xml</param-value>
    </context-param>
    但是在Tomcat啟動時.卻報錯.
    ERROR DispatcherServlet:227 - Context initialization failed
    org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/XFire-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/XFire-servlet.xml]
    java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/XFire-servlet.xml]

    我這就搞不懂了~為什么會去到WEB-INF下面去找?  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-03-17 09:42 | zqj

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.handler.SimpleUrlHandlerMapping' defined in ServletContext resource [/WEB-INF/xfire-servlet.xml]: Can't resolve reference to bean 'HelloWorldService' while setting property 'urlMap[/HelloWorldService.ws]'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'HelloWorldService' defined in ServletContext resource [/WEB-INF/xfire-servlet.xml]: Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'HelloWorldService' defined in ServletContext resource [/WEB-INF/xfire-servlet.xml]: Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V


    啟動和一直報以上ERROR  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇[未登錄]
    2008-03-24 17:28 | 阿飛
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/ws/commons/schema/resolver/URIResolver

    at org.codehaus.xfire.client.Client.initFromDefinition(Client.java:262)
    at org.codehaus.xfire.client.Client.<init>(Client.java:236)
    at org.codehaus.xfire.client.Client.<init>(Client.java:246)
    at com.info.gh.webservice.example1.WebServiceClientTest.testClient(WebServiceClientTest.java:56)
    at com.info.gh.webservice.example1.WebServiceClientTest.main(WebServiceClientTest.java:45)

    請問老報上面的錯誤,是什么原因呀  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-03-24 17:28 | jackie
    你好姐姐,我也向你要一份工程 關于webservice的工程,關于webservice的工程我都想要,還有能給我一起傳基本關于webservice的書嗎?


    我的郵箱: jackie-zheng@163.com

    現在這里謝謝了  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-03-24 17:33 | jackie
    為什么我按照你的步驟建工程的時候怎么就沒有xfire-servlet。xml這個文件呢?  回復  更多評論
      
    # Class not found: webservice.HelloWorld[未登錄]
    2008-03-28 10:09 | lixin
    能不能給您的工程了,我做的發布不起來!謝謝  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-04-16 16:59 | yangpan
    log4j:WARN Please initialize the log4j system properly.
    2008-4-16 16:56:36 org.apache.catalina.core.StandardContext start
    嚴重: Error listenerStart
    2008-4-16 16:56:36 org.apache.catalina.core.StandardContext start
    嚴重: Context [/webservice] startup failed due to previous errors  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-04-16 17:02 | yangpan
    @yangpan
    我是按照 你 的方法做的.可是編譯的時候就報了上面的錯誤...
    我找了很久沒有找到...你幫我看看...  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇[未登錄]
    2008-04-16 20:40 | 阿蜜果
    @阿飛
    錯誤很清楚呢,有jar包沒有包括進去。
    @jackie
    我待會給你發一份
    @yangpan
    留個郵箱吧!也發一份給你  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-04-17 10:13 | yangpan
    ,,謝謝...
    yangpanwww@126.com

    阿密果,你真的是太好了,,,,愿意交我這個朋友不...
    我的QQ:609865047

      回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-04-17 15:01 | yangpan
    還有.....我對比了我們 lib\下的所有 的.jar 包 發現xfire-spring-1.2.2.jar jsr173_api-1.0.jar 這兩個我lib里沒有 (可能就是這個原因)

    還有,你上面說" 點擊右鍵選擇MyEclipse->Add Web Service Capabilities,彈出Add Web Service Capabilities對話框,點擊“Next”,彈出Project Library Configuration對話框,默認選擇Core Libraries,點擊“Finish”按鈕,完成XFire核心包的添加。" 我按照做了,,,lib下沒有一個包, lib里的包是我在網上下的xfire-1.1.1,我全拷貝進lib里了,但 里面有沒有上面的.jar包.

    我用的是MyEclipse6.0,Tomcat5.5.
    呵呵..你耐耐心,,幫我看看.....謝謝咯......  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-04-17 17:43 | yangpan
    喔,,...上面的問題我知道可,,
    我加了log4j.properties 后...
    出現 Document root element "beans", must match DOCTYPE root "null" 錯誤..我的是spring2.0
    applicationContext.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"" target="_new" rel="nofollow">http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    而且我也把 XFire Core lib 中有Spring1.2.6 也刪除了
    網上都被我找遍了,,還是沒有發現....
    大姐,幫幫我.....
      回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-04-17 18:05 | yangpan
    親愛的阿蜜果
    上面的Spring配置文件applicationContext.xml和xfire-servlet.xml

    是怎么結合在一起的......

    上面的錯誤我解決了,,但又有一個錯誤:

    org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'webservice.example2.UserServiceImpl' is defined



    嗚~~~~~~~我都搞了三天了,,,,你就幫幫我了,,,

    快幫你的 項目 給我....我

      回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-04-18 11:22 | yangpan

    嗚~~~~~~~~~~~~~

    錯誤找到咯,,,,,,,三天啊. 嗚~~~~~~~~~

    是我的.xml 寫錯了文件

    我該罵..你們罵我吧  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-05-22 15:31 | Nic
    我的ContextLoaderListener 這個監聽器加載的時候有問題 是不是缺少某個JAR包???。能給我發一份嗎?我的郵箱是:morosefingerling@gmail.com 不勝感激  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-05-22 17:56 | Nic
    我的問題解決了。。不知道大家是不是和我遇到的問題一樣,簡單說一下:
    我用的是MyEclipse6.0
    一、用Eclipse Add Web Service Capabilities 這樣使用的是Spring1.2的包,而我使用的是Spring2.0 這樣產生了沖突。刪除1.2的就OK了
    二、web.xml中 <param-value>/WEB-INF/classes/applicationContext.xml,/WEB-INF/classes/xfire-servlet.xml</param-value>才能找到對應的文件,xfire-servlet.xml文件放在工程的/WEB-INF/xfire-servlet.xml和,/WEB-INF/classes/xfire-servlet.xml 下。
    希望對大家有幫助,還是要多謝阿蜜果。有空可以聊聊天啊 16640813 :)  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-06-04 18:29 | 小貓
    繼續研究種  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-06-20 10:27 | lhy
    能不能發份代碼我看看,我按照你寫的還是沒配出來,搞了好幾天了,郁悶啊
    郵箱:li_hy2004@163.com
    謝謝了  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-06-23 10:15 | lhy
    我的問題解決了,和nic一樣是spring包的問題,沒想到xfire的包里已經有spring的包了,我又加了spring2.0的包-_-!
    多謝阿蜜瓜^^  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-07-20 09:53 | lifeng
    為什么我刪了那個spring1.x的包就不行呢,說org/codehaus/xfire/spring/xfire.xml不存在。。。還要做什么改動嗎?  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇[未登錄]
    2008-09-08 16:30 | jane
    文章簡介實用.一試成功.真是舒服的體驗過程.  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-09-19 14:22 | 楊培海
    阿米果老師,Xfire怎么傳遞數組啊?  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-11-18 16:53 | 湯帥
    請問在創建客戶端的時候必須要有一個HelloWorld這個類嗎?  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-12-09 21:53 | dmx
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/Credentials
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.getConstructor(Unknown Source)
    at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:108)
    at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
    at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
    at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
    at org.codehaus.xfire.client.Client.invoke(Client.java:336)
    at org.codehaus.xfire.client.Client.invoke(Client.java:368)
    at test.WebServiceClientTest.testClient(WebServiceClientTest.java:25)
    at test.WebServiceClientTest.main(WebServiceClientTest.java:14)


    幫我看看怎么回事好么?謝謝!  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2008-12-10 20:20 | dmx
    @dmx
    版主 救助啊  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2009-04-15 19:05 | fire1
    這個問題 是由于application.xml文件的頭部信息不兼容  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2009-05-13 16:56 | A.biao
    Retrieving document at 'null'.
    log4j:WARN No appenders could be found for logger (org.springframework.beans.factory.xml.XmlBeanDefinitionReader).
    log4j:WARN Please initialize the log4j system properly.

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/methods/RequestEntity
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2328)
    at java.lang.Class.getConstructor0(Class.java:2640)
    at java.lang.Class.getConstructor(Class.java:1629)
    at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:108)
    at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
    at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
    at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
    at org.codehaus.xfire.client.Client.invoke(Client.java:336)
    at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
    at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
    at $Proxy0.sayHelloWorld(Unknown Source)
    at test.WebServiceClientTest.testClient(WebServiceClientTest.java:27)
    at test.WebServiceClientTest.main(WebServiceClientTest.java:18)

    按啊蜜果老師的教程做到測試時就報這個錯誤了!能幫幫我找出什么原因嗎?
    還有那個 Retrieving document at 'null'.
      回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2009-05-15 16:47 | nihao
    2009-5-15 8:46:04 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    信息: Loading XML bean definitions from class path resource [client.xml]
    2009-5-15 8:46:04 org.springframework.context.support.AbstractRefreshableApplicationContext refreshBeanFactory
    信息: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext;hashCode=3043939]: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [testWebService]; root of BeanFactory hierarchy
    2009-5-15 8:46:04 org.springframework.context.support.AbstractApplicationContext refresh
    信息: 1 beans defined in application context [org.springframework.context.support.ClassPathXmlApplicationContext;hashCode=3043939]
    2009-5-15 8:46:04 org.springframework.core.CollectionFactory <clinit>
    信息: JDK 1.4+ collections available
    2009-5-15 8:46:04 org.springframework.context.support.AbstractApplicationContext initMessageSource
    信息: Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@f62373]
    2009-5-15 8:46:04 org.springframework.context.support.AbstractApplicationContext initApplicationEventMulticaster
    信息: Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@7c6768]
    2009-5-15 8:46:04 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
    信息: Pre-instantiating singletons in factory [org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [testWebService]; root of BeanFactory hierarchy]
    Retrieving document at 'null'.  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2009-07-14 16:49 | birbe
    Could not open ServletContext resource [/WEB-INF/xfire-servlet.xml] 是怎么回事,另外 為什么訪問地址是http://localhost:8080/webservice_helloworld/HelloWorldService.ws?wsdl 其中 webservice_helloworld不知道是怎么回事  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2009-07-14 17:01 | tanglong
    阿米果姐姐,小弟我是初學著,能不能也給我發一份啊 我的郵箱是
    tanglongjava@163.com  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇[未登錄]
    2009-07-22 17:11 | tang
    出現如下同樣問題:

    2007-11-05 15:00 | dong2590

    @阿蜜果
    我到原因了~是JAR包沖突的問題~Javax.xml.namespace.QName的方法定義太舊,用xfile的lib里面的stax-api-1.0.1.jar和stax-utils-20040917.jar
    并刪除舊的javax.xml.namespace.QName如jaxrpc.jar問題就好了..但是現在又出來個新的問題~
    我在web.xml作了如下配置:
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/applicationContext.xml,/WEB-INF/classes/xfire-servlet.xml</param-value>
    </context-param>
    但是在Tomcat啟動時.卻報錯.
    ERROR DispatcherServlet:227 - Context initialization failed
    org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/XFire-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/XFire-servlet.xml]
    java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/XFire-servlet.xml]

    我這就搞不懂了~為什么會去到WEB-INF下面去找??
    為什么呢?
    能加我QQ嗎?QQ:52016639==>驗證提示:唐  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2009-12-16 19:00 | Will云
    按照你的教程還是比較容易的,只是我想問下,xfire-servlet.xml這個文件是不是只能放在webinf下?因為我一改位置,就會報錯,而applicationcontext.xml換了位置就沒問題的  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2010-01-14 14:10 | changchang9977
    你把工程發給我一份吧!郵箱:changchang9977@sina.com  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2010-03-16 16:30 | 云運
    我最后需要把wsdl文件發給別人的,我怎么才能找到或得到這個wsdl文件呀?  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2010-03-16 16:31 | 云運
    很急的,我的QQ:929304944,能給我發到我的Q郵箱嗎?或加我的Q。  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2010-06-22 18:41 | greenfish
    我把第一個例子自己練習了下,有這個錯誤。。
    Exception in thread "main" org.codehaus.xfire.XFireRuntimeException: Could not find operation with name sayHelloWorld
    at org.codehaus.xfire.client.Client.invoke(Client.java:366)
    at test.WebServiceClientTest.testClient(WebServiceClientTest.java:31)
    at test.WebServiceClientTest.main(WebServiceClientTest.java:20)

    請問咋回事呢。。我實在不知道怎么做了。。呵呵,麻煩幫我看看。。謝謝~  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2011-03-25 09:27 | 小GG
    fff  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2011-05-31 16:36 | 問天
    我今天看了下你寫的東西,我個人感覺你寫的東西對我有用, 因為我現在也需要寫個第三接口,能不能把發份完整的項目給我,好讓我琢磨琢磨下

    郵箱:kavinjuan183@sina.com
    謝謝  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2011-09-02 11:12 | pande
    很好的教程,一看就會。  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2011-09-22 11:19 | 老瓜
    @阿蜜果
    你好,能加入12375544這個QQ群嘛,500人的技術群,你這樣的高手不多見啊,歡迎你加入一塊聊技術啊  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2011-10-14 09:20 | youknow
    我的項目要用到webservice,我自己調試了么有成功,可以給我提供下項目源碼。讓我參考下嗎,謝謝。
    郵箱是ityouknow@126.com  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2011-11-16 12:31 | JIANCHIC
    對@cnjar
      回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2011-11-28 11:10 | 小哦哈給你
    @jackie
    需要自己建的!那個文件相當于另外一個spring配置文件,只是把他分解出來了!  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2012-06-14 23:04 | 淮少
    你怎么解決的,說明下啊@yangpan
      回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2012-07-07 23:34 | 馬云
    好文章~  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2012-09-06 15:51 | 小草
    你把工程發給我一份嗎,非常感謝!郵箱:381802454@qq.com  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2013-03-02 14:29 | 張虹劍
    @tanglong
      回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2013-03-02 14:29 | 張虹劍
    給我也發一份呀  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2013-05-01 19:30 | wxd
    請問與spring集成后,某個Web Service的命名空間和方法名是什么?  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2013-05-03 10:51 | wxd
    @wxd
    我太笨了,可以通過訪問
    http://localhost:8080/*.ws?wsdl
    上面給出了命名空間和方法名

    非常感謝博主的這幾篇博文幫助我完成項目,貌似博主還是女生,真厲害~  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2013-10-28 17:41 | 劉東旭
    liu478048060@163.com
    不知道您現在還有這個項目嗎?
    有的話能給一份作為學習參考嗎?  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2013-10-28 17:42 | 劉東旭
    liu478048069@163.com
    不知道您現在還有這個項目嗎?
    有的話能給一份作為學習參考嗎?
    不好意思 剛才的品論郵箱弄錯了
    liu478048069@163.com  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2014-06-13 16:08 | 張黎明
    請問一下大神,這種方式加上頭驗證信息怎么處理?網絡上大部分是使用service.xml配置,不知道xfire-servlet.xml 中能否進行配置?  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2014-08-03 10:25 | jiuzuizhiren
    可以把源碼發到我的郵箱嗎?liaowenxiong@sina.com 或者 QQ離線發送給我,QQ:1036450138 謝謝了  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2014-11-27 10:37 | 菜鳥新手

    Client client = new Client(new URL("http://localhost:8083/myAppName/services/taskReveiceService?wsdl"));


    Exception in thread "main" java.lang.AbstractMethodError: org.apache.xerces.dom.DeferredDocumentImpl.getInputEncoding()Ljava/lang/String;  回復  更多評論
      
    # org.codehaus.xfire.XFireRuntimeException
    2015-05-25 20:46 | lqmnm1213

    String wsdl = "HelloWorldService.wsdl"; //對應的WSDL文件
    Resource resource = new ClassPathResource(wsdl);
    Client client = new Client(resource.getInputStream(), null);


    Exception in thread "main" org.codehaus.xfire.fault.XFireFault: Server returned error code = 404 for URI : http://localhost:8080/XFireSpring/HelloWorldService.ws. Check server logs for details
    at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:83)
    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
    at org.codehaus.xfire.client.Client.invoke(Client.java:336)
    at org.codehaus.xfire.client.Client.invoke(Client.java:368)
    at test.WebServiceClientTest.testClient(WebServiceClientTest.java:54)
    at test.WebServiceClientTest.main(WebServiceClientTest.java:28)
    Caused by: org.codehaus.xfire.XFireRuntimeException: Server returned error code = 404 for URI : http://localhost:8080/XFireSpring/HelloWorldService.ws. Check server logs for details
    at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:130)
    at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
    at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
    at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
    at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
    ... 5 more  回復  更多評論
      
    # re: 使用XFire+Spring構建Web Service(一)——helloWorld篇
    2015-08-08 18:39 | 卉卉
    能不能也給我發份呢??!謝謝了?。。hangfeifei89757@qq.com  回復  更多評論
      
    <2007年9月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456

          生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
          我的作品:
          玩轉Axure RP  (2015年12月出版)
          

          Power Designer系統分析與建模實戰  (2015年7月出版)
          
         Struts2+Hibernate3+Spring2   (2010年5月出版)
         

    留言簿(263)

    隨筆分類

    隨筆檔案

    文章分類

    相冊

    關注blog

    積分與排名

    • 積分 - 2294296
    • 排名 - 3

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲理论片在线中文字幕| 亚洲精品自拍视频| 久久国产精品亚洲综合| 久久久久亚洲AV无码观看 | 好看的亚洲黄色经典| 久久精品国产亚洲AV无码麻豆| 亚洲丝袜中文字幕| 青娱乐在线视频免费观看| 热99RE久久精品这里都是精品免费| 中文字幕免费视频| 色吊丝最新永久免费观看网站| 亚洲午夜AV无码专区在线播放| 亚洲日本一区二区| 亚洲AV色无码乱码在线观看| 全黄大全大色全免费大片| 国产免费AV片在线播放唯爱网| www亚洲一级视频com| 亚洲福利在线视频| 亚洲av永久中文无码精品| 成人一区二区免费视频| 男女超爽刺激视频免费播放| 五月天婷亚洲天综合网精品偷| 精品国产_亚洲人成在线高清| 456亚洲人成影院在线观| 一级人做人爰a全过程免费视频| 五月亭亭免费高清在线| 亚洲国产主播精品极品网红| 亚洲黑人嫩小videos| 一级视频在线免费观看| 色片在线免费观看| 亚洲一区二区三区在线视频| 亚洲三级在线视频| 成在线人免费无码高潮喷水| 青青青青青青久久久免费观看| 亚洲av女电影网| 无码AV动漫精品一区二区免费| 亚洲免费福利在线视频| 亚洲精品夜夜夜妓女网| 久久无码av亚洲精品色午夜| 成人午夜免费福利视频| 亚洲最大激情中文字幕|