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

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

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

    Ordinary hut

    人間一福地,勝似天仙宮
    posts - 61, comments - 50, trackbacks - 0, articles - 1

    Camel與cxf

    Posted on 2011-09-29 13:50 landor 閱讀(2338) 評論(2)  編輯  收藏 所屬分類: camel
    camel是一個路由選擇引擎,具體內容可見
    http://camel.apache.org
    還有一本camel in action,對camel核心進行了詳細講解;

    這是一個簡單的例子,接收一個webservice消息,并且通過camel把消息路由給一個bean;
    需要一些jar包:
    apache-cxf-2.3.3\lib\cxf-2.3.3.jar
    apache
    -cxf-2.3.3\lib\XmlSchema-1.4.7.jar
    apache
    -cxf-2.3.3\lib\neethi-2.0.4.jar
    apache
    -cxf-2.3.3\lib\wss4j-1.5.11.jar
    apache
    -cxf-2.3.3\lib\wsdl4j-1.6.2.jar
    apache
    -cxf-2.3.3\lib\geronimo-servlet_3.0_spec-1.0.jar
    apache
    -cxf-2.3.3\lib\jsr311-api-1.1.1.jar
    apache
    -cxf-2.3.3\lib\jetty-continuation-7.2.2.v20101205.jar
    apache
    -cxf-2.3.3\lib\jetty-http-7.2.2.v20101205.jar
    apache
    -cxf-2.3.3\lib\jetty-server-7.2.2.v20101205.jar
    apache
    -cxf-2.3.3\lib\jetty-util-7.2.2.v20101205.jar
    apache
    -cxf-2.3.3\lib\jetty-io-7.2.2.v20101205.jar
    apache
    -camel-2.7.1\lib\spring\spring-beans-3.0.5.RELEASE.jar
    apache
    -camel-2.7.1\lib\spring\spring-context-3.0.5.RELEASE.jar
    apache
    -camel-2.7.1\lib\spring\spring-context-support-3.0.5.RELEASE.jar
    apache
    -camel-2.7.1\lib\spring\spring-core-3.0.5.RELEASE.jar
    apache
    -camel-2.7.1\lib\spring\spring-expression-3.0.5.RELEASE.jar
    apache
    -camel-2.7.1\lib\spring\spring-tx-3.0.5.RELEASE.jar
    apache
    -camel-2.7.1\lib\spring\aopalliance-1.0.jar
    apache
    -camel-2.7.1\lib\spring\commons-logging-1.1.1.jar
    apache
    -camel-2.7.1\lib\spring\spring-aop-3.0.5.RELEASE.jar
    apache
    -camel-2.7.1\lib\spring\spring-asm-3.0.5.RELEASE.jar
    apache
    -camel-2.7.1\lib\slf4j-api-1.6.1.jar
    apache
    -camel-2.7.1\lib\camel-core-2.7.1.jar
    apache
    -camel-2.7.1\lib\commons-management-1.0.jar
    apache
    -camel-2.7.1\lib\camel-cxf-2.7.1.jar
    apache
    -camel-2.7.1\lib\camel-spring-2.7.1.jar

    1 新建bean:
    package bean;
    public class Usr {
        
    public String test(String str){
            System.out.println(
    "Hello Bean    "+str);
            
    return "Hello Bean    "+str;
        }
    }

    2 再新建一個webservice接口文件:
    package server;
    import javax.jws.WebService;
    @WebService
    public interface IHello {
        String sayHi(String name);
    }

    3 需要建立spring配置文件,放在classpath下
    配置文件有兩個用途:
        用cxf發布一個webservice;
        配置camel的route
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:cxf
    ="http://camel.apache.org/schema/cxf"
        xmlns:camel
    ="http://camel.apache.org/schema/spring"
        xsi:schemaLocation
    ="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://camel.apache.org/schema/spring 
            http://camel.apache.org/schema/spring/camel-spring.xsd
            http://camel.apache.org/schema/cxf
            http://camel.apache.org/schema/cxf/camel-cxf.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-extension-http-jetty.xml" />
        
        
    <!--發布一個webservice-->
        
    <cxf:cxfEndpoint id="orderEndpoint"
                     address
    ="http://localhost:9000/helloWorld"
                     serviceClass
    ="server.IHello"
                     
    />
        
        
    <bean id="usr" class="bean.Usr"></bean>
            
        
    <camelContext xmlns="http://camel.apache.org/schema/spring">
            
    <route>
                
    <from uri="cxf:bean:orderEndpoint"/>
                
    <bean ref="usr" method="test"/>
            
    </route>
        
    </camelContext>
    </beans>

    4 啟動camel:

    package camel;
    import org.apache.camel.spring.Main;
    public class Helloworld {
        
    public static void main(String[] args) throws Throwable {
            Main main 
    = new Main();
            main.start();
            Thread.sleep(
    600000);
            main.stop();
        }
    }

    5 寫個webservice客戶端測試一下:
    package client;
    import java.net.URL;
    import javax.xml.namespace.QName;
    import javax.xml.ws.Service;
    import server.IHello;
    public class Test {
        
    public static void main(String[] args) throws Throwable{
            URL wsdlURL 
    = new URL("http://localhost:9000/helloWorld?wsdl");//WSDL文件地址
            QName SERVICE_NAME 
    = new QName("http://server/""IHelloService");//參數一是WSDL中的 targetNamespace,參數2是WSDL中的 name 節點
            Service service = Service.create(wsdlURL, SERVICE_NAME);
            IHello client 
    = service.getPort(IHello.class);
            String result 
    = client.sayHi("bbb");
            System.out.println(result);
        }
    }

    得到的結果應該是:
    Hello Bean    bbb

    Feedback

    # re: Camel與cxf  回復  更多評論   

    2012-06-10 20:17 by jdkleo
    我的client代碼:
    public class CamelCxfClient {
    public static void main(String[] args) throws Throwable{
    URL wsdlURL = new URL("http://localhost:8080/camel_ws/webservice/helloWorld?wsdl");
    // QName SERVICE_NAME = new QName("http://www.springframework.org/schema/beans", "helloWorld");

    QName SERVICE_NAME = new QName("http://www.springframework.org/schema/beans", "helloWorld");
    Service service = Service.create(wsdlURL, SERVICE_NAME);
    IHelloWorld client = service.getPort(IHelloWorld.class);
    String result = client.sayHi("bbb");
    System.out.println(result);
    }
    }
    我跑后變成這樣:
    Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: org.apache.cxf.message.Exchange.getBindingOperationInfo()Lorg/apache/cxf/service/model/BindingOperationInfo;
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:143)
    at $Proxy35.sayHi(Unknown Source)
    at camel.ws.CamelCxfClient.main(CamelCxfClient.java:13)
    Caused by: org.apache.cxf.binding.soap.SoapFault: org.apache.cxf.message.Exchange.getBindingOperationInfo()Lorg/apache/cxf/service/model/BindingOperationInfo;
    at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:75)
    at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:46)
    at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:35)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
    at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:96)
    at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)
    at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
    at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:658)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2139)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2022)
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1947)
    at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:632)
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:472)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:302)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:123)
    ... 2 more

    # re: Camel與cxf  回復  更多評論   

    2012-06-10 20:30 by jdkleo
    i am so sorry that i find
    in my pom.xml
    the <cxf.version>2.2.3</cxf.version>
    that must be changed to
    <cxf.version>2.3.3</cxf.version>
    oh fuck

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


    網站導航:
     
    主站蜘蛛池模板: 成年女人免费视频播放77777| 久久亚洲免费视频| 成人毛片免费在线观看| 亚洲国产夜色在线观看| 99视频精品全部免费观看| 久久噜噜噜久久亚洲va久| 免费看无码特级毛片| 亚洲色成人WWW永久网站| 免费一区二区无码东京热| 亚洲av丰满熟妇在线播放| 中国人xxxxx69免费视频| 亚洲天堂电影在线观看| 在线播放免费人成视频在线观看| 亚洲人成色在线观看| 亚洲国产精品尤物YW在线观看| 一区二区三区视频免费观看| 麻豆亚洲AV成人无码久久精品| 欧亚精品一区三区免费| 亚洲中文无码永久免| 国产一级高清免费观看| 亚洲精品视频免费| 亚洲AV无码码潮喷在线观看| 久久久久久曰本AV免费免费| 亚洲人成人伊人成综合网无码| 免费A级毛片无码A∨男男| 精品国产免费一区二区三区| 久久精品国产亚洲AV无码麻豆| 成年网站免费视频A在线双飞| 国产精品亚洲天堂| 亚洲va久久久噜噜噜久久男同| 黄色网址免费大全| 污污的视频在线免费观看| 亚洲va无码va在线va天堂| 无人影院手机版在线观看免费| 日本一区二区三区在线视频观看免费 | 久操视频免费观看| 久久亚洲精品专区蓝色区| 亚洲乱码日产精品a级毛片久久| 午夜免费啪视频在线观看| 亚洲人片在线观看天堂无码| 国产亚洲日韩在线三区|