<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 閱讀(2347) 評論(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

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲电影在线免费观看| 成年女人视频网站免费m| 亚洲最新中文字幕| 好大好深好猛好爽视频免费| 一区二区三区精品高清视频免费在线播放| 亚洲午夜久久久久久久久久| 成人免费视频网站www| 免费观看又污又黄在线观看| 99ri精品国产亚洲| 日韩精品亚洲专区在线观看| 美丽姑娘免费观看在线观看中文版| 亚洲无人区码一二三码区别图片 | 国产亚洲人成无码网在线观看| 1000部免费啪啪十八未年禁止观看| 美国毛片亚洲社区在线观看| 久久久无码精品亚洲日韩蜜桃| 日韩高清免费观看| 5555在线播放免费播放| 香蕉视频免费在线| 亚洲乱码一二三四区乱码| 亚洲乳大丰满中文字幕| 日本媚薬痉挛在线观看免费| 99精品免费观看| 国产区在线免费观看| 国产成+人+综合+亚洲专| 亚洲成a人片在线观看日本| 国产在线19禁免费观看国产 | 一级毛片大全免费播放| 日本亚洲免费无线码| 亚洲AV电影院在线观看| 亚洲国产成人久久综合野外| 国产三级在线观看免费| 99在线在线视频免费视频观看| 又黄又大的激情视频在线观看免费视频社区在线 | 最好看最新的中文字幕免费| h视频在线免费观看| 亚洲成a∨人片在无码2023| 亚洲国产日韩在线一区| 亚洲国产综合专区电影在线| 国产精品亚洲视频| 成人亚洲综合天堂|