簡體   English   中英

apache駱駝cxf肥皂

[英]apache camel cxf soap

我正在使用apache camel cxf開發Web服務(肥皂),遇到此錯誤。

java.lang.IllegalArgumentException:部分{ http://blueprint.camel.ngt.tn/ }返回的類型應為[Ltn.ngt.camel.blueprint.WB_subscriptions;而不是org的tn.ngt.camel.blueprint.WB_subscriptions org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:220)的.apache.cxf.jaxb.io.DataWriterImpl.java:292 org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)的org.apache.cxf.wsdl.interceptors.BareOutInterceptor.handleMessage(BareOutInterceptor.java:69)的.writeParts(AbstractOutDatabindingInterceptor.java:122) org.apache.cxf.phase.PhaseInterceptorChain(PhaseInterceptorChain.java:307)上的org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:83)在org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) PhaseInterceptorChain.java:277)位於org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObs erver.java:78),位於org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:251),位於org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:261), .apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70)在org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1088)在org.eclipse.jetty.server.handler org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)的.ContextHandler.doScope(ContextHandler.java:1024)org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java)的。 :193),位於org.eclipse.jetty的org.eclipse.jetty.server.Server.Server.handleAsync(Server.java:410)的org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)。 org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)處的server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:519)在或 g.eclipse.jetty.server.AbstractHttpConnection $ RequestHandler.content(AbstractHttpConnection.java:1043)位於org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)位於org.eclipse.jetty.http.HttpParser。 org.org.eclipse.jetty.server上的parseAvailable(HttpParser.java:240).org.org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)上的syncHttpConnection.handle(AsyncHttpConnection.java:82) org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)上的.eclipse.jetty.io.nio.SelectChannelEndPoint $ 1.run(SelectChannelEndPoint.java:53)在org.eclipse.jetty.util上。 java.lang.Thread.run上的thread.QueuedThreadPool $ 3.run(QueuedThreadPool.java:543)(未知源)

有誰可以幫助我解決這個問題,這是我的源代碼

藍圖

 <cxf:cxfEndpoint  address="http://localhost:9191/cxf/Subsriptions" id="claimEndpoint" serviceClass="tn.ngt.camel.blueprint.WbSubscriptionService"/>

 <camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route id="GetWb_Subscription">
     <from uri="cxf:bean:claimEndpoint"/>
   <!--  <from uri="timer:foo?period=10000"/>-->
    <to uri="sql:select * from WB_SUBSCRIPTIONS?dataSource=dataSource"/>
    <to uri="bean:tn.ngt.camel.blueprint.Transformer?method=ToList(Exchange)"/>  
     <to uri="bean:tn.ngt.camel.blueprint.Transformer?method=getSubscriptions"/>
  <log message="The message contains ${body}"/>
</route>

WbSubscriptionService

    public interface WbSubscriptionService {
    public List<WB_subscriptions> getSubscriptions();

}

變壓器

public class Transformer {
public static List<WB_subscriptions> subscription= new ArrayList<WB_subscriptions>();
@SuppressWarnings("unchecked")
public List<WB_subscriptions> ToList(Exchange exchange) throws NumberFormatException, ParseException{
    List<?> messages= exchange.getIn().getBody(List.class);
    List<WB_subscriptions>LstWb_Sub= new ArrayList<WB_subscriptions>();
    for(int i=0;i<messages.size();i++){
        Map<String,Object> row = (Map<String,Object>) messages.get(i);
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
        WB_subscriptions wb= new WB_subscriptions( Integer.parseInt(row.get("CUST_ACCOUNT").toString()),
                Integer.parseInt(row.get("PACKAGE_ID").toString()),Integer.parseInt(row.get("CUST_MOBILE").toString()) , formatter.parse(row.get("DATE_CREATION").toString()));
                System.out.println(wb.getCust_mobile());
                LstWb_Sub.add(wb);  

    }
    subscription=LstWb_Sub;
    System.out.println("List 1 "+subscription);
    return LstWb_Sub;

}
public List<WB_subscriptions> getSubscriptions() throws Exception{
    System.out.println("bonjour "+subscription);
    return subscription;
}

提前致謝

錯誤消息只是說返回類型必須是WB_subscriptions 的集合, WB_subscriptions不是單個WB_subscriptions

您可以閱讀錯誤消息的第一部分,如下所示:

  • [ => ...的數組
  • L...; =>在L;之間 是完全分類的類別名稱
  • tn.ngt.camel.blueprint.WB_subscriptions =>您的班級名稱

但是,從Web服務返回Java集合時會有一些問題(例如this )。

因此,嘗試返回WB_subscriptions數組或將List包裹在Bean中,然后返回包含該列表的單個Bean。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM