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

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

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

    ice world

    There is nothing too difficult if you put your heart into it.
    posts - 104, comments - 103, trackbacks - 0, articles - 0

    CXF+Spring+Tomcat簡(jiǎn)明示例

    Posted on 2012-07-06 17:29 IceWee 閱讀(51159) 評(píng)論(27)  編輯  收藏 所屬分類: OthersTomcat
    多系統(tǒng)(異構(gòu)系統(tǒng))進(jìn)行交互時(shí),一種良好的方式便是調(diào)用Web Service,本示例基于Apache組織的CXF,為了方便起見特將服務(wù)端和客戶端寫在同一個(gè)工程下,實(shí)際項(xiàng)目中是不可能的,但是客戶端卻依賴于服務(wù)端的Web Service接口,那么可以通過導(dǎo)出jar的方式。

    環(huán)境:
    MyEclipse10
    JDK6
    Tomcat7
    CXF2.5
    Spring3

    示例項(xiàng)目結(jié)構(gòu)圖:


    如上圖所示,全部依賴的第三方庫都在lib中,下面貼出全部代碼。
    IHelloService.java
    package bing.server;

    import javax.jws.WebService;

    /**
    * <p>
    * WebService接口
    * </p>
    *
    *
    @author IceWee
    * @date 2012-7-6
    *
    @version 1.0
    */

    @WebService
    public interface IHelloService {

       
    public String sayHello(String username);
       
    }


    HelloServiceImpl.java
    package bing.server;

    import javax.jws.WebService;

    /**
    * <p>
    * WebService實(shí)現(xiàn)類
    * </p>
    *
    *
    @author IceWee
    * @date 2012-7-6
    *
    @version 1.0
    */

    @WebService(endpointInterface
    = "bing.server.IHelloService", serviceName = "HelloService")
    public class HelloServiceImpl implements IHelloService {

        @Override
       
    public String sayHello(String username) {
           
    return "hello, " + username;
        }


    }


    HelloServiceClient.java
    package bing.client;

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

    import bing.server.IHelloService;

    /**
    * <p>
    * WebService調(diào)用方-客戶端
    * </p>
    *
    *
    @author IceWee
    * @date 2012-7-6
    *
    @version 1.0
    */

    public class HelloServiceClient {

       
    public static void main(String[] args) {
            ApplicationContext context
    = new ClassPathXmlApplicationContext("applicationContext-client.xml");
            IHelloService helloService
    = (IHelloService) context.getBean("client");
            String response
    = helloService.sayHello("Peter");
            System.out.println(response);
        }


    }


    applicationContext-server.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:jaxws
    ="http://cxf.apache.org/jaxws"
        xsi:schemaLocation
    ="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
    >
       
    <!--
            ***注意***
            手動(dòng)添加的內(nèi)容:
            xmlns:jaxws="http://cxf.apache.org/jaxws"
            http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
        
    -->
       
       
    <import resource="classpath:META-INF/cxf/cxf.xml" />
       
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
       
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

       
    <jaxws:endpoint id="helloService" implementor="bing.server.HelloServiceImpl" address="/helloService" />
           
    </beans>

    applicationContext-client.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:jaxws
    ="http://cxf.apache.org/jaxws"
        xsi:schemaLocation
    ="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
    >
       
    <!--
            ***注意***
            手動(dòng)添加的內(nèi)容:
            xmlns:jaxws="http://cxf.apache.org/jaxws"
            http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"
        
    -->
       
       
    <import resource="classpath:META-INF/cxf/cxf.xml" />
       
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
       
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

       
    <bean id="client" class="bing.server.IHelloService" factory-bean="clientFactory" factory-method="create" />

       
    <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
           
    <property name="serviceClass" value="bing.server.IHelloService" />
           
    <property name="address" value="http://localhost:8080/CXFDemo/ws/helloService" />
       
    </bean>
    </beans>

    web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0"
        xmlns
    ="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation
    ="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    >
     
    <display-name>CXFDemo</display-name>
     
     
    <context-param>
         
    <param-name>contextConfigLocation</param-name>
         
    <param-value>classpath:applicationContext-server.xml</param-value>
     
    </context-param>

     
    <listener>
       
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     
    </listener>
     
     
    <servlet>
       
    <servlet-name>CXFServlet</servlet-name>
       
    <display-name>CXFServlet</display-name>
       
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
       
    <load-on-startup>1</load-on-startup>
     
    </servlet>
     
    <servlet-mapping>
       
    <servlet-name>CXFServlet</servlet-name>
       
    <url-pattern>/ws/*</url-pattern>
     
    </servlet-mapping>
     
    <welcome-file-list>
       
    <welcome-file>index.jsp</welcome-file>
     
    </welcome-file-list>
    </web-app>

    所有項(xiàng)目都已配置完成,可以發(fā)布到Tomcat了,在瀏覽器中輸入:http://localhost:8080/CXFDemo/ws,返回如圖:


    從上圖中可以看到我們對(duì)外發(fā)布的WebService接口,點(diǎn)擊藍(lán)色超鏈接,返回如圖:

    到此,證明我們的Web Service已經(jīng)發(fā)布成功,可以進(jìn)行調(diào)用測(cè)試了。運(yùn)行HelloServiceClient,返回如圖:


    全文完!


























    Feedback

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2012-11-06 14:54 by 林祥
    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

    這些文件沒有啊

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2012-11-27 13:09 by 狼湖
    HelloServiceImpl 類的注解:
    @WebService(endpointInterface = "bind.server.IHelloService", serviceName = "helloService")

    注意:serviceName 是小寫開頭的helloService否則出錯(cuò)

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2012-11-27 13:10 by 狼湖
    @林祥
    那幾個(gè)xml在cxf-xxx.jar包里面

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2012-11-28 11:07 by qss
    1、非常感謝樓主,我運(yùn)行成功了。
    2、我運(yùn)行時(shí)報(bào)錯(cuò)誤:
    我看了原因是jar不全,我將apache-cxf-2.7.0解壓后的lib中的jar包全部引入就好了。
    3.再次感謝樓主!//:

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2012-11-28 11:24 by IceWee
    @qss
    ^_^

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2012-11-28 11:53 by qss
    1.IceWee,你好。
    我想問一下,我返回的是對(duì)象時(shí),對(duì)象有個(gè)屬性error_message,部署tomcat時(shí),報(bào):類的兩個(gè)屬性具有相同名稱 "error_message" ?

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2012-11-28 15:32 by qss
    IceWee,我已經(jīng)解決了,^_^

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2013-01-16 10:25 by Ameri
    謝謝

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2013-03-09 15:44 by asfas d
    在網(wǎng)上找了兩天 最后還是在你這里把問題解決了 能不能再寫個(gè)傳復(fù)雜數(shù)據(jù)的例子呀LZ

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2013-03-13 10:39 by 周炎婷
    你好,我想問一下,如何運(yùn)行客戶端?

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2013-04-26 23:16 by 畢淑敏
    好帖子,比網(wǎng)上n個(gè)cxf實(shí)例都強(qiáng)!

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2013-08-06 15:55 by derekwu
    少了 Woodstox這個(gè)包,否則報(bào)錯(cuò)java.lang.RuntimeException: Cannot create a secure XMLInputFactory

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2013-08-07 13:59 by 開發(fā)吧
    博主能否提供源碼啊?謝謝

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2013-11-25 11:31 by 3000
    @derekwu
    加了Woodstox之后,報(bào)找不到org/codehaus/stax2/XMLInputFactory2類,又加了stax2-api-3.1.1.jar 才好。
    我用的apache-cxf-2.6.10

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2013-12-03 14:52 by 啊啊啊啊
    啊啊啊啊啊啊啊啊

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2014-01-20 15:56 by 求知者 QQ 285678313
    我的applicationContext-server.xml編譯不過,“jaxws:endpoint ”那一行報(bào)錯(cuò),錯(cuò)誤信息是“Failed to read schema document ‘http://cxf.apache.org/schemas/jaxws.xsd’, because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.

    說找不到j(luò)axws.xsd文件,我的網(wǎng)絡(luò)良好,這個(gè)URL放在瀏覽器里可以訪問到,求解,上面找不到你的聯(lián)系方式,我的QQ 285678313

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2014-04-17 13:39 by 黑色柳丁
    一模一樣的配置,運(yùn)行后提示:No ASM ClassWriterFound

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2014-04-17 13:39 by 黑色柳丁
    然后引入asm的jar包就ok了。

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2014-09-24 11:22 by 555
    555

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2014-09-25 14:55 by 鄧豐坡
    再次感謝,之前找了N多資料,也沒有你的一個(gè)實(shí)例明了。
    不過你的jar少說了
    stax2-api-3.1.1.jar
    woodstox-core-asl-4.2.0.jar
    這個(gè)確實(shí)

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例[未登錄]  回復(fù)  更多評(píng)論   

    2014-10-10 11:08 by william
    非常感謝樓主的分享,實(shí)例太棒啦,我了兩天,這是最棒的

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例[未登錄]  回復(fù)  更多評(píng)論   

    2014-11-10 13:30 by ada
    謝謝樓主,困擾我兩天的問題終于解決了!

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2014-11-29 10:51 by
    @求知者 QQ 285678313
    我也遇到了同樣的問題,請(qǐng)問怎么解決。謝謝

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2015-09-19 19:31 by 枯荷聽雨
    怎樣調(diào)用那個(gè)接口,客戶端如何訪問呢?

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2015-12-17 14:20 by 匿名者
    @林祥
    在cxf.jar中

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2016-07-16 17:44 by chiangpan
    CXF版本不同,有些其實(shí)不需要<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />這些配置

    # re: CXF+Spring+Tomcat簡(jiǎn)明示例  回復(fù)  更多評(píng)論   

    2016-07-23 15:01 by 無異
    請(qǐng)問有沒有遇到這個(gè)問題的?

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'wbService': Invocation of init method failed; nested exception is java.lang.VerifyError: (class: com/wfy/service/jaxws_asm/Aaaa, method: setUserName signature: (Ljava/lang/String;)V) Illegal instruction found at offset 1
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1507)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:299)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:644)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:493)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4887)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5381)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1113)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1671)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    主站蜘蛛池模板: 亚洲狠狠婷婷综合久久| 亚洲精品在线免费观看视频| 亚洲一区二区三区自拍公司| 亚洲色成人网站WWW永久| 亚洲国产成人久久综合一| 亚洲欧洲日产国码二区首页| 亚洲熟女综合色一区二区三区| 国产亚洲精品国产福利在线观看| 精品国产污污免费网站入口在线 | 乱淫片免费影院观看| 精品免费久久久久国产一区| 久久99热精品免费观看牛牛| 性做久久久久久久免费看| 国产成人免费高清在线观看| 亚洲日韩中文无码久久| 亚洲免费一级视频| 日韩少妇内射免费播放| 日韩中文字幕免费视频| 午夜精品在线免费观看| 亚洲日本一区二区三区在线| 亚洲欧洲综合在线| 青娱乐在线视频免费观看| 99精品免费观看| 特级淫片国产免费高清视频| 亚洲综合伊人久久综合| 亚洲中文字幕久在线| 九九久久国产精品免费热6| 麻豆国产精品免费视频| 五月婷婷亚洲综合| 久久久久亚洲AV无码观看| 看亚洲a级一级毛片| 日本视频在线观看永久免费| 暖暖日本免费在线视频| 久久精品国产亚洲AV果冻传媒| 亚洲色图激情文学| 国产啪精品视频网站免费尤物| 日韩精品免费电影| 精品日韩亚洲AV无码| 日韩一级片免费观看| 丁香花免费高清视频完整版| 亚洲中文字幕无码爆乳AV|