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

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

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

    posts - 2,  comments - 2,  trackbacks - 0

    1、使用org.codehaus.xfire.spring.XFireSpringServlet與ServiceBean

    1.1 web.xml的配置

    ?<web-app>
    ?<display-name>Spring Image Database</display-name>
    ?<description>Spring Image Database sample application</description>
    ?<!--
    ??These values are used by ContextLoaderListener, defined immediately below.
    ??????? The files listed below are used to initialize the business logic portion of the application.
    ??????? Each dispatcher servlet (defined further down) has their own configuration file,
    ??????? which may or may not depend on items in these files.
    ??? -->
    ??? <context-param>
    ?????? <param-name>contextConfigLocation</param-name>
    ?????? <param-value>
    ???? classpath:applicationContext-webservice.xml
    ??? </param-value>
    ??? </context-param>
    ?<!-- Log4j configuration listener-->
    ?<listener>
    ??<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    ?</listener>
    ?<!-- Spring framework -->
    ?<listener>
    ??????? <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    ?</listener>

    ?<servlet>
    ??????? <servlet-name>XFireServlet</servlet-name>
    ??????? <display-name>XFire Servlet</display-name>
    ??????? <servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
    ??? </servlet>
    ??????????????
    ??? <servlet-mapping>
    ??????? <servlet-name>XFireServlet</servlet-name>
    ??????? <url-pattern>/services/*</url-pattern>
    ??? </servlet-mapping>

    ?<welcome-file-list>
    ??<welcome-file>index.jsp</welcome-file>
    ?</welcome-file-list>
    ?
    </web-app>

    1.2 applicationContext-webservice.xml的配置:

    <beans>

    ??? <import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>
    ???
    ??? <bean name="echoService" class="org.codehaus.xfire.spring.ServiceBean">
    ??????? <property name="serviceBean" ref="echo"/>
    ??????? <property name="serviceClass" value="org.codehaus.xfire.test.Echo"/>
    ??????? <property name="inHandlers">
    ??????????? <list>
    ??????????????? <ref bean="addressingHandler"/>
    ??????????? </list>
    ??????? </property>
    ??? </bean>

    ??? <bean id="echo" class="org.codehaus.xfire.test.EchoImpl"/>

    ??? <bean id="addressingHandler" class="org.codehaus.xfire.addressing.AddressingInHandler"/>
    ?
    ? ?<bean name="bookService" class="org.codehaus.xfire.spring.ServiceBean">
    ??????? <property name="serviceBean" ref="bookServiceBean"/>
    ??????? <property name="serviceClass" value="org.codehaus.xfire.demo.BookService"/>
    ??? </bean>

    ??? <bean id="bookServiceBean" class="org.codehaus.xfire.demo.BookServiceImpl"/>

    </beans>

    1.3 這樣將會發布兩個service,BookServiceEchoService。隨后就可以使用client端進行測試了。

    ???? //測試BookService
    ??? public static void main(String args[])
    ??? {?
    ??????? String serviceURL = "http://127.0.0.1:9001/xfire/services/BookService";
    ??????? Service serviceModel = new ObjectServiceFactory().create(BookService.class,null,"http://xfire.codehaus.org/BookService",null);
    ??????? XFireProxyFactory serviceFactory = new XFireProxyFactory();
    ??????? try
    ??????? {
    ??????????? BookService service = (BookService) serviceFactory.create(serviceModel, serviceURL);
    ??????????? Client client = Client.getInstance(service);
    ??????????? client.addOutHandler(new OutHeaderHandler());
    ??????????? Book[] books = service.getBooks();
    ??????????? System.out.println("BOOKS:");
    ??????????? for (int i = 0; i < books.length; i++)
    ??????????? {
    ??????????????? System.out.println(books[i].getTitle());
    ??????????? }
    ??????? }
    ??????? catch (MalformedURLException e)
    ??????? {
    ??????????? e.printStackTrace();
    ??????? }
    ??? }

    1.4 忘了BookService及其實現了。

    ???? public interface BookService
    ??? {
    ???????????? ?public Book[] getBooks();
    ???
    ????????????? public Book findBook(String isbn);
    ???
    ???????????? public Map getBooksMap();
    ?? }

    ?

    ??? public class BookServiceImpl implements BookService
    ??? {
    ??? private Book onlyBook;
    ???
    ??? public BookServiceImpl()
    ??? {
    ??????? onlyBook = new Book();
    ??????? onlyBook.setAuthor("Dan Diephouse");
    ??????? onlyBook.setTitle("Using XFire");
    ??????? onlyBook.setIsbn("0123456789");
    ???? }

    ???? public Book[] getBooks()
    ???? {
    ??????? return new Book[] { onlyBook };
    ???? }
    ???
    ???? public Book findBook(String isbn)
    ???? {
    ??????? if (isbn.equals(onlyBook.getIsbn()))
    ??????????? return onlyBook;
    ???????
    ??????? return null;
    ???? }

    ???? public Map getBooksMap() {
    ??Map result = new HashMap();
    ??result.put(onlyBook.getIsbn(), onlyBook);
    ??return result;
    ???? }
    ??? }

    1.5 簡單的測試就是通過IE,輸入http://ip:port/context/services/BookService?wsdl或者http://ip:port/context/services/EchoService?wsdl,將會出現相應的wsdl文檔。

    ???? 如果只是輸入http://ip:port/context/services/BookService,會出現Invalid SOAP request.這也說明配置正確。

    2、直接集成Spring(通過Spring的org.springframework.web.servlet.DispatcherServlet)

    2.1 web.xml配置
    <web-app>
    <!-- START SNIPPET: xfire -->
    ??? <context-param>
    ??????? <param-name>contextConfigLocation</param-name>
    ??????? <param-value>
    ??????? classpath:org/codehaus/xfire/spring/xfire.xml</param-value>
    ??? </context-param>

    ??? <context-param>
    ??????? <param-name>log4jConfigLocation</param-name>
    ??????? <param-value>/WEB-INF/log4j.properties</param-value>
    ??? </context-param>

    ??? <listener>
    ??????? <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    ??? </listener>

    ??? <listener>
    ??????? <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    ??? </listener>

    ??? <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>/*</url-pattern>
    ??? </servlet-mapping>
    <!-- END SNIPPET: xfire -->
    </web-app>
    2.2 xfire-servlet.xml配置
    <beans>
    ??? <!-- START SNIPPET: xfire -->
    ??? <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    ??????? <property name="urlMap">
    ??????????? <map>
    ??????????????? <entry key="/EchoService">
    ??????????????????? <ref bean="echo"/>
    ??????????????? </entry>
    ??????????? </map>
    ??????? </property>
    ??? </bean>

    ??? <bean id="echoBean" class="org.codehaus.xfire.spring.example.EchoImpl"/>

    ??? <!-- Declare a parent bean with all properties common to both services -->
    ??? <bean id="echo" class="org.codehaus.xfire.spring.remoting.XFireExporter">
    ??????? <property name="serviceFactory">
    ??????????? <ref bean="xfire.serviceFactory"/>
    ??????? </property>
    ??????? <property name="xfire">
    ??????????? <ref bean="xfire"/>
    ??????? </property>
    ??????? <property name="serviceBean">
    ??????????? <ref bean="echoBean"/>
    ??????? </property>
    ??????? <property name="serviceClass">
    ??????????? <value>org.codehaus.xfire.spring.example.Echo</value>
    ??????? </property>
    ??? </bean>
    ??? <!-- END SNIPPET: xfire -->
    </beans>
    2.3 余下的配置跟第一種方法一樣。

    3、另外xfire的官方文檔上還有一種方法,是通過XBean與Spring結合來實現webservice的expose。還是覺得上面的兩種方法比較好。既然已經與spring集成在一起了,何必再引入其他的呢?以后的維護是不是也要有問題呢?

    ?在隨后的文章里將會介紹xfire與Jibx結合的例子。

    posted on 2006-09-21 09:42 吃飯不洗手 閱讀(1933) 評論(1)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲免费电影网站| 亚洲欧洲av综合色无码| 免费播放国产性色生活片| 好大好硬好爽免费视频| 久久精品国产亚洲AV忘忧草18 | 热99re久久精品精品免费| 国产免费不卡v片在线观看| 久久精品蜜芽亚洲国产AV | 国产成人精品免费视| 亚洲永久永久永久永久永久精品| 中文字幕成人免费视频| 亚洲电影免费观看| 久久久久久99av无码免费网站 | 亚洲无码一区二区三区| 台湾一级毛片永久免费| 国产精品亚洲专区在线观看| 国产免费人成视频尤勿视频| 国产亚洲精品激情都市| 永久免费不卡在线观看黄网站| 亚洲国产精品自在线一区二区| 亚洲精品无码久久| 免费A级毛片无码久久版| 一区二区三区免费视频播放器 | 亚洲H在线播放在线观看H| 日本二区免费一片黄2019| 午夜在线免费视频| 亚洲成A∨人片在线观看不卡| 免费看h片的网站| 国产成人 亚洲欧洲| 搡女人免费视频大全| 亚洲国产精品午夜电影| 成人国产mv免费视频| 最近免费字幕中文大全| 亚洲第一页在线观看| 免费在线观看黄网站| 免费无码又爽又刺激高潮视频| 亚洲国产日韩精品| 国产精品69白浆在线观看免费| 羞羞的视频在线免费观看| 亚洲国产日韩一区高清在线| 日韩a级毛片免费视频|